优雅的方法注入一个DLL的过程之前,他们开始
我正在制作一个修改目标进程行为的'mod'dll。 我成功地注入了我的dll并钩住了一些target的函数。
但是当我需要在主模块启动之前(更明确地说,在入口点之前)钩住一些API时,需要做更多的工作。 我需要用CREATE_SUSPENDED属性手动启动目标程序,注入然后恢复。 但是一些应用程序从自己的启动程序开始,一些应用程序通常从x64进程开始......这样的各种环境使它很难自动化。
看起来像最好的方式注入DLL到所有进程并处理CreateProcess。 但有时它需要UAC,x64的开发。
任何意见,将不胜感激。
您可能会滥用图像文件执行选项并将修改DLL注册为“调试程序”(请参阅如何:自动启动调试程序以获取详细信息)。
程序很简单:
无论何时启动victim.exe,您的修改二进制文件在victim.exe(及其依赖项)被加载后,但在执行开始之前启动。 不管如何启动victim.exe,这都会发生。
还要注意的是,在64位操作系统上,密钥也反映在Wow6432Node中,所以您的修改二进制文件将针对victim.exe的32位以及64位版本启动。
将DLL加载到每个可执行文件(至少是那些链接到user32.dll的文件)中的另一种方法是滥用AppInit_DLLs注册表项(也称为Deadlock_Or_Crash_Randomly_DLLs)。 这比将一个随机可执行文件注册为调试器更加麻烦,但仍然有人认为任何自尊的恶意软件作者绝对需要熟悉。 还要注意,这个 - uhm - 功能可能在未来的Windows版本中不可用。 Windows Vista,Windows 7和Windows Server 2008 R2必须为AppInit_DLLs准备工作。
你想实现什么叫DLL挂钩,可以很容易找到的库。
您可以尝试Microsoft Detours,但必须根据您的使用情况购买(Detours Express对于32位和非商业用途免费)。 其他选择包括EasyHook,madCodeHook,...
链接地址: http://www.djcxy.com/p/60315.html上一篇: elegant method to inject a dll to processes BEFORE they start