首页
社区
课程
招聘
[求助]关于注入问一个问题
发表于: 2018-11-9 17:44 3120

[求助]关于注入问一个问题

2018-11-9 17:44
3120
写了一个dll,已经成功注入一个游戏,
功能是:HOOK主线程,SetWindowsHookExA(WH_CALLWNDPROC, GameWndProc,NULL, nThreadID);遍历一段内存 读出一些信息 并用TRACE输出
问题:发现遍历一段时间后程序会崩溃。
不知道为什么  大佬可以帮助一下萌新么 提供一些思路 感激不尽

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有没有人能回一句  不管是帖子有问题,还是问的问题比较低级,能不能来个人指正一下 ,都看过不冒泡不好吧,新人来问点东西,不用这么冷漠吧
2018-11-9 18:07
0
雪    币: 1795
活跃值: (63)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
上代码
2018-11-9 18:47
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
void postMSG()
{
       char* name = "遍历";
       int i = 20;
       while (i > 0)
       {
               ::SendMessageA(GetGameHandle(), MyGameMsg, 0, (LPARAM)name);
               Sleep(200);
               i--;
       }
       return;
}

void CMainDialogWnd::OnBnClickedBegin()
{
       // TODO: 在此添加控件通知处理程序代码
       TRACE("Game:尝试发送信息:");
       CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)postMSG, NULL, NULL, NULL);

       TRACE("Game:消息发送完成:%x,%d",GetGameHandle(),MyGameMsg);
       
}
LRESULT CALLBACK GameWndProc(int nCode,WPARAM wParam,LPARAM lParam)
{

       CWPSTRUCT *MSG_WndGame= (CWPSTRUCT *)lParam;
       if (nCode == HC_ACTION)
       {
               if (MSG_WndGame->hwnd == GetGameHandle() && MSG_WndGame->message == MyGameMsg)
               {
                       try
                       {
                               
                               ID = (DWORD)*(addrss + 2);
                               
                               if (ID == 0)
                               {
                                       addrss = addrss + 6;
                                       return 0;
                               }
                                       
                       }
                       catch (...)
                       {
                               
                               return 0;
                       }
               
                                       
                       if (ID != 0)
                       {
                               try
                               {
                                       
                                       Name = (char*)((DWORD*)*(DWORD*)(addrss + 3) + 1);
                                       
                               }
                               catch (...)
                               {
                                       
                                       return 0;
                               }
                               
                       }
                                       TRACE("Game:名字%s,地址:%x,名字地址:%x,ID:%x ", Name, addrss, Name, ID);
                                       addrss = addrss + 6;
                                       return 1;
               }
       }
       TRACE("收到消息:没收到");
       return CallNextHookEx(G_hhkGame,nCode,wParam,lParam);
}
2018-11-9 19:57
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
因为是新手   不太会写  DLL就这一个功能 不用考虑方法冲突什么的  流程就是 点击按钮 HOOK主线程 创建线程给主线程发送消息 HOOK截获到 执行自己的处理程序  处理程序也很简单 就是输出一下遍历的信息  然后问题就是输出一会就会崩溃
2018-11-9 20:03
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
虽然看书知道有多线程同时访问数据会出现异常,但是这是HOOK主线程 应该不会发生同时访问的问题吧,实在是没有思路
2018-11-9 20:05
0
雪    币: 423
活跃值: (501)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
这个TRACE 是仅在DEBUG下面的吧
2018-11-10 00:02
0
雪    币: 1176
活跃值: (1264)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
8
addrss 出内存访问异常了吧 把信息贴全 
2018-11-10 12:16
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
Tennn addrss 出内存访问异常了吧 把信息贴全
多谢各位 经过跟踪确实是 访问内存出了异常,已经解决,谢谢各位
2018-11-12 09:35
0
游客
登录 | 注册 方可回帖
返回
//