hook ()_临时子程序 () 返回 (0 ) 变量名 | 类 型 | 静态 | 数组 | 备 注 | hProcess | 整数型 | | | pfnhook | 整数型 | | | fnhook | 字节集 | | | lw | lwcom | | | modProcess | MODULEENTRY32 | | 0 | i | 整数型 | | | hKernelUtil | 整数型 | | | hookaddr | 整数型 | | |
hProcess = -1 EnumModule (modProcess, 0 )计次循环首 (取数组下标 (modProcess, ), i ) 如果真 (到文本 (modProcess [i ].szModule ) = “KernelUtil.dll”)hKernelUtil = modProcess [i ].hModule 跳出循环 ()计次循环尾 ()hookaddr = hKernelUtil + HEX_to_DEC (“8336A”)pfnhook = VirtualAlloc (0, 1024, #MEM_COMMIT, HEX_to_DEC ( #PAGE_EXECUTE_READWRITE )) lw. Initialize ()lw. AsmAdd (“pushad”) lw. AsmAdd (“call ” + lw. AsmCallret (DEC_to_HEX (pfnhook + 1 - 1 ), DEC_to_HEX (取子程序地址 (&hook2 )) )) lw. AsmAdd (“popad”)lw. AsmAdd (“mov [ecx],eax”) lw. AsmAdd (“mov eax,[ebp+10]”) lw. AsmAdd (“ret”) fnhook = HEX_to_Bytes (lw. AsmCode ()) WriteProcessMemory (hProcess, pfnhook, 取变量数据地址 (fnhook ), 取字节集长度 (fnhook ), 0 ) lw. AsmClear ()lw. AsmAdd (“call ” + lw. AsmCallret (DEC_to_HEX (hookaddr ), DEC_to_HEX (pfnhook )) ) fnhook = HEX_to_Bytes (lw. AsmCode ()) WriteProcessMemory (hProcess, hookaddr, 取变量数据地址 (fnhook ), 取字节集长度 (fnhook ), 0 ) 变量名 | 类 型 | 静态 | 数组 | 备 注 | EAX | 整数型 | | | EBX | 整数型 | | | EDX | 整数型 | | | 置入代码 ({ 137, 69, 252, 137, 93, 248, 137, 85, 244 }) 子程序1 (EAX, EBX, EDX ) 返回 ()如果真 (ebx = 5 且 eax ≠ 0 且 edx = HEX_to_DEC (“A0”)) a = 打开文件 (“C:\Users\asd\Desktop\log.txt”, 2, )移到文件尾 (a )如果 (eax < 0 )插入文本行 (a, “qqNUM:” + 到文本 (2147483647 × 2 + eax + 2 )) 插入文本行 (a, “qqNUM:” + 到文本 (eax )) 关闭文件 (a)返回 ()
企鹅版本是9.7.3
我也是新手,正在学习这块方面。 不过我这个hook好像 每次收到消息 都会 显示两次发送者的id 我也不知道为啥。学习中,我想应该是经过了多次 可以自行替换模块修改,我这边就不提供我自己用的模块了。防止我的模块有毒.我弄的是注入的DLL 我自己测试没啥问题
|