首页
社区
课程
招聘
[旧帖] 模拟WPE写了一个封包拦截工具,可不知道怎么回事老是把目标程序搞崩溃 0.00雪花
发表于: 2013-5-24 00:05 4392

[旧帖] 模拟WPE写了一个封包拦截工具,可不知道怎么回事老是把目标程序搞崩溃 0.00雪花

2013-5-24 00:05
4392
wpe 只是能拦截Send SendTo Recv RecvFrom 这些函数,然而这些一般情况都是经过加密的,我是通过对程序里加密解密封包函数进行HOOK的,在加密函数里找到一个5字节的指令,修改成JMP到自己定义的处理函数里,在这个处理函数里,读取出封包的内容和长度。然后,使用进程间通信的办法把数据传送到,封包拦截程序窗口上去,具体代码为:
COPYDATASTRUCT cp;
cp.dwData = 0;
cp.cbData = strlen(szRe);
cp.lpData = (void *)szRe;
pWnd->SendMessage(WM_COPYDATA,NULL,(LPARAM)&cp); //pWnd 是事先获取好的拦截程序窗口的


问题就出在这个发送消息这里,总是在拦截程序收到一个封包数据后,目标程序崩溃,把这些注释掉,一切就都没问题了。
我试着像WPE那样去HOOK,Send,Recv这些函数结果也一样
不知道WPE拦截封包内容是怎么样传送回自己程序里的,它这个确实很稳定,请大神赐教。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1392
活跃值: (4872)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
2
SendMessage是消息处理完以后再返回的。如果你那边处理完后没有返回数据,SendMessage应该会等待吧
2013-5-24 09:12
0
雪    币: 3
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这种可能我也想到过 使用PostMessage 还是不行
即使等待 也不该啊 使用F2断下来 等一会再运行 程序也不会崩溃的
2013-5-24 10:28
0
雪    币: 1392
活跃值: (4872)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
4
我之前也写过 不过是拦截程序崩溃了,不是被拦截的崩溃,可能是数据太多了吧要么
2013-5-24 10:38
0
雪    币: 3
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有这种可能,我在那个加密函数的上一层函数里拦截,程序就不崩溃了,看WPE对Send的做法就是使用原函数前5个字节,直接跳转拦截函数,拦截函数不但完成数据拦截功能,还实现发送功能,中间还用到临界区,晚上回去按他这个思路再搞下,要是再不行,就没办法了.
2013-5-24 13:30
0
雪    币: 143
活跃值: (263)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
6
只要截获数据 发送的话直接jmp回去就行了吧
2013-5-25 16:56
0
游客
登录 | 注册 方可回帖
返回
//