我最近开始了一个新项目,我的目标是将字节码注入(inject)另一个进程,然后启动一个远程线程执行我的字节码,但是我遇到了一个非常奇怪的问题。它所做的是分配和写入任意进程的内存,它为远程进程写入一个包含指向user32.dll和kernel32.dll中函数指针的结构,它还为函数指针写入一个调用操作从结构中,它然后创建一个带有“调用操作”的lpStartAddress的远程线程你可以在这里找到源代码:http://pastie.org/9298306在第55行调用了GetPrivileges(第185行的方法),它返回true,意味着OpenProcessToken、LookupPri
Thisquestion询问如何检索包含当前执行代码的DLL的句柄。Alink在其中一个answers建议取__ImageBase的地址作为模块句柄。这对我有用。我的问题是:鉴于检索当前模块的句柄如此简单,为什么像MFC这样的框架(甚至我继承的代码库)通常存储传递给DllMain()的实例句柄?在一些全局变量中?有没有理由不依赖__ImageBase?编辑:根据RaymondChen,__ImageBase仅适用于Microsoft链接器。有anotherquestion有更精确的答案,包括使用GetModuleHandleEx()的独立于链接器的方式.对于Win2000和更早版本,还
我需要从我的DLL加载一些资源(我需要从DLL代码加载它们),为此我正在使用FindResource。为此,我需要DLL的HModule。怎么找到那个?(不知道DLL的名称(文件名)(用户可以更改)) 最佳答案 您可以从DllMain()入口点的第一个参数中获取它。写一个,存入全局变量:HMODULEDllHandle;BOOLAPIENTRYDllMain(HMODULEhModule,DWORDdwReason,LPVOIDlpReserved){if(dwReason==DLL_PROCESS_ATTACH)DllHandle
我有一个小问题。我已将DLL加载到进程中(它不是我的),我必须在其中使用函数。我已经得到了这个函数的偏移量,所以我要做的就是获取DLL地址并将偏移量添加到该函数中。GetModuleHandle()返回HMODULE变量,但实际上我不知道HMODULE是什么。是加载的DLL的地址还是其他某种标记?如果不是加载DLL的地方的地址,我怎么能得到这个地址?我希望我说清楚。 最佳答案 您建议的方法可以正常工作。您似乎已将dll注入(inject)目标进程,并希望从注入(inject)dll的进程中获取目标进程中该dll中的函数地址。我假设您
我有一个静态库,可以链接到.exe或.dll。在运行时,我希望我的库函数之一为静态库代码已链接到的任何内容获取HMODULE。我目前使用以下技巧(灵感来自thisforum):constHMODULEGetCurrentModule(){MEMORY_BASIC_INFORMATIONmbi={0};::VirtualQuery(GetCurrentModule,&mbi,sizeof(mbi));returnreinterpret_cast(mbi.AllocationBase);}有没有更好的方法来做到这一点,看起来不那么老套?(注意:这样做的目的是加载一些我知道我的用户将与我的静