草庐IT

c++ - 如何编译Detours Express 3.0?

我最近一直在尝试编译微软的Detours库,免费版叫做“Express3.0”。在其README指南中,它告诉您使用“nmake”。我在detours目录中打开了一个命令窗口并尝试了“nmake”。它说:“nmake不被识别为内部命令......”。我打开了VS2015x86native工具命令提示符,使用cd将当前目录更改为该文件夹,然后尝试“nmakeall”:C:\Windows\system32>cdC:\ProgramFiles(x86)\MicrosoftResearch\DetoursExpress3.0C:\ProgramFiles(x86)\MicrosoftRese

windows - 错误 0xc000007b 尝试绕行注入(inject) DLL 时

我正在尝试使用最新的32位Detours库将DLL注入(inject)新进程。http://research.microsoft.com/en-us/projects/detours/它过去对我有用,但在更改DLL后,它不再对所有进程起作用。当我恢复该过程时,我收到一个消息框,上面写着Theapplicationwasunabletostartcorrectly(0xc000007b).ClickOKtoclosetheapplication.我用注入(inject)的纯空DLL重新创建了它,除了kernel32.dll之外没有任何依赖项。对于其他可执行文件,它可以完美地工作。知道为什

c - 是否可以 Hook 任何时间检索功能

我需要Hook任何试图检索系统时间的函数,以便为不同的应用程序生成“时间无关”的重播。某些事件(如伪随机数生成)取决于对time()的调用,但例如其他一些事件会调用timeGetTime()或_time64()。我需要Hook(在Windows中)以捕获所有时间检索函数的最少函数集是什么。实际上有可能Hook这些功能吗?我试图在time()上完成它,但我的钩子(Hook)被忽略了。我已成功Hook到其他函数(如rand),但我的time()Hook似乎被忽略了。我正在使用Detours,但我愿意使用任何其他API拦截工具。 最佳答案

c++ - Windows 上的中介层

是否可以替代系统功能,就像在Linux和Solaris上使用LD_PRELOAD一样例如通过设置环境变量:LD_PRELOAD=/path/to/mymalloc.so我会使用我的替代malloc函数,而不是在已经安装在系统库中的C运行时中。系统dll中的所有其他功能将正常运行。 最佳答案 MicrosoftResearch有一个名为Detours的库这允许您拦截Win32API调用。DetoursisalibraryforinstrumentingarbitraryWin32functionsonx86,x64,andIA64ma

c++ - DirectX Device Present 钩子(Hook)为什么走弯路不起作用?

我正在创建一个Hook,它允许从DirectX9设备HookPresent方法,我这样做如下:#include#include#include#include#pragmacomment(lib,"d3d9.lib")typedefHRESULT(PresentDef)(constRECT*pSourceRect,constRECT*pDestRect,HWNDhDestWindowOverride,constRGNDATA*pDirtyRegion);PresentDef*Real_Present;PresentDefMine_Present;HRESULTMine_Present(

c++ - 防止 DLL 文件通过 MS Detours 加载到我的进程中

我想阻止特定的第三方DLL文件在运行时加载到我的应用程序进程中。我最初的尝试是使用MSDetours产品。我有一个32位MFC在Windows1064位上运行的应用程序。我使用免费的MSDetours3.0版本进行了测试,作为可行性检查。在我的MFC应用程序类构造函数中,我调用Detours来拦截“加载库”API(LoadLibraryW、LoadLibraryExW、LoadLibraryA和LoadLibraryExA)。这让我可以拦截库加载,目前我只是注销正在加载的库的名称,然后调用原始API,以便它继续加载库。最终的计划是寻找特定的第三方DLL文件名,在这种情况下返回失败,阻止

C - 从没有导出函数的外部进程调用函数

我想弄清楚如何在不导出函数的情况下调用函数。好的,我有一个exe文件,其中定义了“add”,这个exe是一个win32控制台应用程序并加载一个DLL。DLL还旨在使用exe文件中的添加函数(不导出)这是我的主要win32控制台应用程序文件:#include#include#pragmaauto_inline(off)intadd(inta,intb){printf("Addingsomeints\n");returna+b;}intmain(){HMODULEmodule=NULL;if((module=LoadLibrary(L"hook.dll"))==NULL){printf("

c++ - 为 64 位编译 Microsoft Detours

detours包声称支持64位但我没有看到编译64位二进制文件的方法:Detouring32-bitand64-bitProcesses使用nmakeall只编译32位东西:>dirVolumeindriveDisVolumeVolumeSerialNumberisXXXX-XXXXDirectoryofD:\Detours06/21/201803:46PM.06/21/201803:46PM..06/23/201808:13PMbin.X8606/20/201709:03AM5,105CREDITS.TXT06/22/201703:06PM31DetoursVersion3.0Bui

c++ - 使用 C++ Hook GetTickCount

我不太擅长C++,更擅长C#和PHP。我被分配了一个项目,要求我使用GetTickCount并挂接到应用程序。我需要一些帮助,因为某些原因它没有按计划工作......这是Hook的代码,我知道它有效,因为我以前在项目中使用过它。我唯一不太确定的是它的GetTickCount部分。我尝试了GetTickCount64,认为这是解决我的问题的方法(它并没有使我注入(inject)的内容崩溃),但发现它根本不起作用,所以它没有崩溃boolAPIENTRYDllMain(HINSTANCEhDll,DWORDdwReason,LPVOIDlpReserved){switch(dwReason)

C++ Function Hook(仅内存地址)

我有一个内存地址,它是另一个程序(它的一个dll)中函数的内存地址。我已经通过DLL注入(inject)加载到程序中。我已经有了bass地址,以及每次程序加载时函数的实际位置。所以,这不是问题。我只想Hook那个位置,然后获取变量。我知道函数的伪代码。所以这不是问题。或者另一种很棒的方法是在该内存位置做一个断点并获取调试寄存器。我找不到任何明确的例子。我也没有函数的“名称”,我只有内存地址。有什么方法可以只使用内存地址吗?大多数(如果不是所有的话)示例都让您使用函数的名称,而我没有。如果有人能为我指明正确的方向以便我完成这项任务,我将不胜感激。它也可能会帮助很多其他可能有相同问题的人。
12