关于hook后读写寄存器及软件报错
非常感谢大家提供帮助是这样的,程序有一个函数:win32CSIImpl_ApiProxyResponse_GetData
00558320/$53 push ebx
00558321|.56 push esi
00558322|.57 push edi
00558323|.8BD8 mov ebx,eax
00558325|.B2 01 mov dl,0x1
00558327|.A1 1CF04100 mov eax,dword ptr ds:
0055832C|.E8 47C4EAFF call CPA.00404778
00558331|.8BF0 mov esi,eax
00558333|.8B43 04 mov eax,dword ptr ds:
00558336|.85C0 test eax,eax
00558338|.74 3E je short CPA.00558378
0055833A|.50 push eax
0055833B|.E8 5CFEFFFF call <jmp.&libcpa-core.win32CSIImpl_ApiProxyResponse_GetData>
00558340|.59 pop ecx ;0D92D4F0
00558341|.8BF8 mov edi,eax
00558343|.8B43 04 mov eax,dword ptr ds:
00558346|.50 push eax
00558347|.E8 48FEFFFF call <jmp.&libcpa-core.win32CSIImpl_ApiProxyResponse_GetData>
0055834C|.59 pop ecx ;0D92D4F0
0055834D|.8BD8 mov ebx,eax
0055834F|.85FF test edi,edi
00558351|.74 25 je short CPA.00558378
在0055833B处是函数的call,以及前面的push eax 【应该要带一个参数,如果是寄存器的话,应该都可以整数型吧】
进入0055833B处是函数的call
0F456BBF CC int3
0F456BC0 >8B4424 04 mov eax,dword ptr ss:
0F456BC4 8B40 20 mov eax,dword ptr ds:
0F456BC7 C3 retn
0F456BC8 CC int3
在执行完0F456BC4后,eax寄存器的值才能看见。
各位大神,能不能指点一下,如何获取执行完0F456BC4后的eax寄存器值?
易语言部分的hook:
hook.安装 (“libcpa-core.dll”, “win32CSIImpl_ApiProxyResponse_GetData”, &_win32CSIImpl_ApiProxyResponse_GetData)
这是安装的hook,在后面的hook代码如下
.版本 2
.子程序 _win32CSIImpl_ApiProxyResponse_GetData, 整数型
.参数 lpdate, 整数型
.参数 rp, 整数型
.参数 da, 整数型
.局部变量 date, 文本型
.局部变量 a, 文本型
.局部变量 b, 文本型
.局部变量 c, 整数型
' OutputDebugStringA (“CPA:win32CSIImpl_ApiProxyResponse_GetData 被调用!”)
hook.暂停 (“libcpa-core.dll”, “win32CSIImpl_ApiProxyResponse_GetData”)
' 0F456BC0 >8B4424 04 mov eax,dword ptr ss:
' 0F456BC4 8B40 20 mov eax,dword ptr ds:
' 置入代码 ({ 139, 68, 36, 4, 139, 64, 32 })
c = win32CSIImpl_ApiProxyResponse_GetData (lpdate, rp, da)
置入代码 ({ 137, 69, 252 })' MOV DWORD PTR SS:,EAX(把EAX的值赋值给date)
置随机数种子 ()
写到文件 (取运行目录 () + “\dump\” + 到文本 (取随机数 (11111, 99999)) + “.txt”, 到字节集 (date))
' 拷贝数据 (lpdate, 取变量地址 (date), 取文本长度 (数据))
' OutputDebugStringA (“CPA_win32CSIImpl_ApiProxyResponse_GetData消息:” + 数据)
hook.继续 (“libcpa-core.dll”, “win32CSIImpl_ApiProxyResponse_GetData”)
' 返回值 = 0
返回 (c)
参数个数这个可以调整,还有从汇编代码中貌似没有返回值,现在写出来的hook,能获取到eax的数据,但是程序会崩溃。
求大神指导一下,感谢。
页:
[1]