一个外挂的简单分析



上周末突然有个外挂,逃过了反挂检测,竟然是全图外挂,

图片

通过IDA分析发现 一个virtualQuery函数,

图片

 

于是在od中加载,算了一下该函数相对模块首地址的位置断下该函数,相对基址的偏移为0xB55E,于是断下

图片

 

发现只要打勾,反复循环间隔500ms 都会走此函数,于是判断改地址是 外挂修改游戏的信息的函数

图片

 

继续推测:

通过windbg:来断下改地址,通过Kb命令 发现函数栈如下:

0012fdf4 042d4ed2 XXX+0x4ff44
0012fe20 042ca09e XXX+0x24ed2
0012fe38 77d18734 XXX+0x1a09e
0012fe64 77d18816 USER32!GetDC+0x6d
0012fecc 77d189cd USER32!GetDC+0x14f
0012ff2c 77d196c7 USER32!GetWindowLongW+0x127
0012ff3c 00451858 USER32!DispatchMessageA+0xf
0012ffa8 0045ae95 image00400000+0x51858
0012ffc0 7c817077 image00400000+0x5ae95
0012fff0 00000000 kernel32!RegisterWaitForInputIdle+0x49

 

继续往相对偏移0x1a09e的调用地方找,然后找到函数头为相对偏移0xA088:

图片
这个函数在网上就是DispatchMessage函数,从这可以判断该偏移0xA088函数是 窗体的回调函数里调用的函数,相对来说也是窗口过程,

而0xB55e是计时器调用的实现修改游戏的函数的,现在即可对该外挂进行封堵了!

 

最后提一下,上面那个外挂是Delphi写的, Delphi写的程序反汇编看的真是TMD贱啊,乱七八糟的,没有vc++编译的程序反汇编看的舒服,郁闷啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值