相关文章推荐
求醉的枕头  ·  Visual Studio ...·  3 月前    · 
我们在写DLL的时候,需要在DLL项目里面加上window的API函数DllMain.然后DllMain函数里面写上你自己的函数, 这样,windows会在用LoadLibrary加载DLL后,调用DllMain函数来执行,而你把自己的函数已经先写在在DllMain里面了,那么你的函数也自然而然被间接调用了.... Add. dll (假设的要hook的 函数 所在 dll ) Hook Dll . dll (包含要 注入 用的 函数 所在 dll ) 2个exe项目:One.exe(假设要Hook的程序) Hook.exe(hook用的程序) 导包跟头文件我会发出来,但是 函数 修改的话,只会在修改部分发出 Add. dll
可以使用Windows API 函数 CreateRemoteThread和WriteProcessMemory来实现向 进程 注入 dll 并传参。具体步骤如下: 1. 打开目标 进程 ,获取 进程 句柄。 2. 在目标 进程 中申请一块内存,用于存放 dll 路径和参数。 3. 使用WriteProcessMemory 函数 dll 路径和参数写入目标 进程 的内存中。 4. 使用LoadLibrary 函数 加载 dll ,并获取 dll 的模块句柄。 5. 使用GetProcAddress 函数 获取 dll 中需要 调用 函数 地址。 6. 使用CreateRemoteThread 函数 在目标 进程 中创建 一个 远程线程,并将需要 调用 函数 地址作为线程 函数 。 7. 等待远程线程执行完毕,释放申请的内存。 如果不想 注入 dll ,可以使用VirtualAllocEx 函数 在目标 进程 中申请一块内存,将需要执行的汇编代码写入该内存中,然后使用CreateRemoteThread 函数 在目标 进程 中创建 一个 远程线程,并将该内存地址作为线程 函数