资源共享吧|易语言论坛|逆向破解教程|辅助开发教程|网络安全教程|www.zygx8.com|我的开发技术随记

 找回密码
 注册成为正式会员
查看: 1485|回复: 3

[PC逆向破解] C++游戏逆向高级培训班第11课-hook之后两次收包之后游戏崩溃

[复制链接]

4

主题

63

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
7
积分
67
贡献
0
在线时间
27 小时
注册时间
2021-3-17
最后登录
2023-2-11

终身VIP会员

发表于 2021-5-8 15:14:43 | 显示全部楼层 |阅读模式
1资源币
只运行hook,注释掉自己的代码,可以正常运行,说明hook没问题。
x32dbg 调试显示EXCEPTION_ACCESS_VIOLATION

回复

使用道具 举报

23

主题

57

帖子

0

精华

资源共享吧金牌老师

Rank: 6Rank: 6

资源币
34
积分
80
贡献
0
在线时间
40 小时
注册时间
2021-3-28
最后登录
2022-10-25

超级版主终身VIP会员原创先锋

发表于 2021-5-8 16:50:03 | 显示全部楼层
有具体截图吗
回复

使用道具 举报

23

主题

57

帖子

0

精华

资源共享吧金牌老师

Rank: 6Rank: 6

资源币
34
积分
80
贡献
0
在线时间
40 小时
注册时间
2021-3-28
最后登录
2022-10-25

超级版主终身VIP会员原创先锋

发表于 2021-5-8 16:51:29 | 显示全部楼层
应该是访问的问题 指针?
回复

使用道具 举报

4

主题

63

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
7
积分
67
贡献
0
在线时间
27 小时
注册时间
2021-3-17
最后登录
2023-2-11

终身VIP会员

 楼主| 发表于 2021-5-8 18:39:40 | 显示全部楼层
本帖最后由 bs0303 于 2021-5-8 18:44 编辑
  1. Hook* hook2;
  2. struct {
  3.         DWORD dwBase;
  4.         DWORD dwLen;
  5.         BYTE* strBuff;
  6.         CString strRecv;
  7.         CString strTempRecv;
  8. }recvPack;

  9. __declspec(naked) void recvHook(){
  10.         __asm pushad
  11.         //自己代码
  12.         __asm{
  13.                 mov recvPack.dwBase,ebx
  14.                 mov ecx,[edi]
  15.                 mov ecx,[ecx+0x8]
  16.                 mov edx,[edi]
  17.                 mov edx,[edx+0x4]
  18.                 sub ecx,edx
  19.                 add ecx,2
  20.                 mov recvPack.dwLen,ecx
  21.         }
  22.         recvPack.strBuff = new BYTE[recvPack.dwLen];
  23.         ReadProcessMemory((HANDLE)-1,(LPCVOID)recvPack.dwBase,recvPack.strBuff,recvPack.dwLen,NULL);
  24.         for(DWORD i=0; i<recvPack.dwLen; i++){
  25.                 recvPack.strTempRecv.Format(L"%02X ",recvPack.strBuff[i]);
  26.                 recvPack.strRecv+=recvPack.strTempRecv;
  27.         }
  28.         OutputDebug(L"包地址:0X%08X   包长:0X%02X===%08d   包内容:%s",recvPack.dwBase,recvPack.dwLen,recvPack.dwLen,recvPack.strRecv);
  29.         delete[] recvPack.strBuff;
  30.         recvPack.strBuff = nullptr;
  31.         recvPack.strRecv = "";

  32.         __asm{
  33.                 popad
  34.                 mov ebp,dword ptr ds:[esi+0x2874]
  35.                 retn
  36.         }
  37. }

  38. void CDLG::OnBnClickedButton10()
  39. {
  40.         // TODO: 在此添加控件通知处理程序代码
  41.         hook2 = new Hook();
  42.         hook2->onHook((DWORD)0x00B92931,(DWORD)recvHook,(BYTE)0xE8,6);
  43. }


  44. void CDLG::OnBnClickedButton11()
  45. {
  46.         // TODO: 在此添加控件通知处理程序代码
  47.         hook2->unHook();
  48.         delete hook2;
  49.         hook2 = nullptr;
  50. }
复制代码


传的和视频一样的ebx
回复

使用道具 举报

 点击右侧快捷回复  

本版积分规则

小黑屋|资源共享吧 ( 琼ICP备2023000410号-1 )

GMT+8, 2024-11-23 15:57 , Processed in 0.055013 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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