飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2669|回复: 0

[求助] 关于hook后读写寄存器及软件报错

[复制链接]
  • TA的每日心情
    奋斗
    6 天前
  • 签到天数: 372 天

    [LV.9]以坛为家II

    发表于 2019-11-15 17:16:26 | 显示全部楼层 |阅读模式
    非常感谢大家提供帮助

    是这样的,程序有一个函数:win32CSIImpl_ApiProxyResponse_GetData

    [Asm] 纯文本查看 复制代码
    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:[0x41F01C]
    0055832C  |.  E8 47C4EAFF   call CPA.00404778
    00558331  |.  8BF0          mov esi,eax
    00558333  |.  8B43 04       mov eax,dword ptr ds:[ebx+0x4]
    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:[ebx+0x4]
    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
    [Asm] 纯文本查看 复制代码
    0F456BBF    CC              int3
    0F456BC0 >  8B4424 04       mov eax,dword ptr ss:[esp+0x4]
    0F456BC4    8B40 20         mov eax,dword ptr ds:[eax+0x20]
    0F456BC7    C3              retn
    0F456BC8    CC              int3
    
    

    在执行完0F456BC4后,eax寄存器的值才能看见。
    各位大神,能不能指点一下,如何获取执行完0F456BC4后的eax寄存器值?

    易语言部分的hook:

    [AppleScript] 纯文本查看 复制代码
    hook.安装 (“libcpa-core.dll”, “win32CSIImpl_ApiProxyResponse_GetData”, &_win32CSIImpl_ApiProxyResponse_GetData)


    这是安装的hook,在后面的hook代码如下
    [AppleScript] 纯文本查看 复制代码
    .版本 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:[esp+0x4]
    ' 0F456BC4    8B40 20         mov eax,dword ptr ds:[eax+0x20]
    ' 置入代码 ({ 139, 68, 36, 4, 139, 64, 32 })
    c = win32CSIImpl_ApiProxyResponse_GetData (lpdate, rp, da)
    置入代码 ({ 137, 69, 252 })  ' MOV DWORD PTR SS:[ebp-4],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的数据,但是程序会崩溃。
    求大神指导一下,感谢。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表