我目前正在通过DLL注入hook ntdll.dll调用。 首先,我通过CreateRemoteThread()
在现有的进程中创build线程,然后通过LoadLibrary
加载我的DLL,最后在PROCESS_ATTACH
上挂接调用。
注射工作正常,但我想logging所有的registry和文件系统查询。 问题是它不能正常工作。
我决定通过PasteBin发布代码,因为一块很大。 这里是链接: http : //pastebin.com/39r4Me6B
我试图挂钩ZwOpenKey
,然后logging关键内容,然后通过指针启动“真”function。 函数NOpenKey
被执行,但进程停止没有任何错误。
有没有人看到任何问题?
如果使用OllyDbg,则ZwOpenKey
以5个字节MOV EAX, 77
。
你可以像JMP _myZwOpenKey
那样覆盖这些字节,然后你可以用堆栈中的值做任何事情,恢复所有寄存器,然后做一个JMP 7C90D5B5
,它是ZwOpenKey
地址+5字节。
CPU Disasm Address Hex dump Command Comments 7C90D5AF 90 NOP 7C90D5B0 /$ B8 77000000 MOV EAX,77 ; ntdll.ZwOpenKey(guessed rg1,Arg2,Arg3) 7C90D5B5 |. BA 0003FE7F MOV EDX,7FFE0300 7C90D5BA |. FF12 CALL DWORD PTR DS:[EDX] 7C90D5BC \. C2 0C00 RETN 0C
我通常在Assembly中这样做,这样我就不必在类型转换和所有这些方面搞乱了。 希望这可以帮助。