• 1670阅读
  • 2回复

通过一个神秘的CALL轻松找到真正的发包函数地址。 [复制链接]

上一主题 下一主题
离线啊冲
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2016-08-28
----------------
魔鬼作坊
游戏“禁技巧”分析技术揭秘中……
http://www.moguizuofang.com/bbs/
----------------
屏幕 1024*768  系统:XP3
通过一个神秘的CALL轻松找到真正的发包函数地址。
魔恩QQ:8643245
各位亲爱的朋友:
我们又在VIP课程相会了,那么,这节课,我将与你分享通过一个神秘的CALL轻松找到真正的发包函数地址。

解决问题万能思路:遇到什么问题需要解决,百度谷歌一下,你就知道了。
                  因为你想解决的问题,别人可能早已解决。

具体操作技巧:

借箭思路:下Send等封包断点总是返回相同数据的实战解决思路。

思路:对封包数据头4字节下硬件访问/写入断点来获取真正有用的CALL返回数据。



调用堆栈:     主线程
地址       堆栈       函数过程                              调用来自                      结构
0013EA1C   00C647B9   tale.00C62E30                         tale.00C647B4                 0013EAB0
0013EA3C   00C648F0   tale.00C64750                         tale.00C648EB
0013EA50   0049F447   tale.00C648E0                         tale.0049F442                 0013EAB0
0013EA74   0066819F   ? tale.0049F3F0                       tale.0066819A
///喊话CALL
0013F1F4   0066963A   tale.00667870                         tale.00669635                 0013F1F0

0013F278   005A2483   包含tale.0066963A                       tale.005A2481                

0013F274
0013F28C   00C4D33C   包含tale.005A2483                       tale.00C4D339                

0013F288
0013F2A0   00C491B1   tale.00C4D190                         tale.00C491AC
0013F314   00C4D3B2   tale.00C48450                         tale.00C4D3AD                 0013F310
0013F324   00C45115   tale.00C4D370                         tale.00C45110                 0013F38C
0013F334   00C4C92A   包含tale.00C45115                       tale.00C4C927                

0013F38C
0013F390   00C4D541   tale.00C4C8F0                         tale.00C4D53C                 0013F38C
0013F3B8   00C45178   tale.00C4D500                         tale.00C45173                 0013F650
0013F3E0   00C468CF   tale.00C45120                         tale.00C468CA
0013F3F8   0059F4E0   tale.00C468B0                         tale.0059F4DB
0013F654   0059F768   ? tale.0059F460                       tale.0059F763
0013F78C   0047B373   tale.0059F6F0                         tale.0047B36E                 0013F788
0013F7CC   0044FC87   tale.0047B300                         tale.0044FC82                 0013F7C8
0013F7E4   00B69D0E   包含tale.0044FC87                       tale.00B69D0B                

0013F7E0
0013F930   00BB6FE2   包含tale.00B69D0E                       tale.00BB6FE0
0013F944   00B798D0   tale.00BB6FB0                         tale.00B798CB
0013F958   00B83EF8   包含tale.00B798D0                       tale.00B83EF5
0013F968   00B8690E   包含tale.00B83EF8                       tale.00B86908
0013F990   00B639D1   包含tale.00B8690E                       tale.00B639CB
0013F9C8   00B6F703   tale.00B63940                         tale.00B6F6FE
0013FC90   004506F4   tale.00B6F370                         tale.004506EF
0013FCA4   006704F8   tale.004506E0                         tale.006704F3

0066818C    8D8D C0F8FFFF   LEA ECX,DWORD PTR SS:[EBP-740]
00668192    51              PUSH ECX
00668193    E8 A86EE3FF     CALL tale.0049F040
00668198    8BC8            MOV ECX,EAX
0066819A    E8 5172E3FF     CALL tale.0049F3F0

0013EAB0  F6 07 0C 00 00 00 00 03 00 32 32 32 E0 77 94 06  ?..... .222鄔?


F6 07 0C 00 00 00 00 03 00 32 32 32 E0 77 94 06

代码注入器:
push 0e8e0000
call  0049f040
mov ecx,eax
call 0049f3f0

OD死码:

POP EDI
POP ESI
POP EBX
MOV ESP,EBP
POP EBP
RETN 10
INT3
PUSH EBP

MOV EBP,ESP
PUSH -1


搜到后,往上面找第4个与第5个CALL就是要找的。


调用堆栈:     主线程
地址       堆栈       函数过程                              调用来自                      结构
0013F9D4   006CD179   tale.0049F3F0                         tale.006CD174                 0013FA1C


调用堆栈:     主线程
地址       堆栈       函数过程                              调用来自                      结构
0013F39C   006BC035   tale.0049F3F0                         tale.006BC030                 0013F3B0
0013F3B4   006BD027   tale.006BC000                         tale.006BD022                 0013F3B0


======================


为真正的发包函数地址设立OD死码:

ADD ESP,10
POP EDI
POP EBX
POP ESI
MOV ESP,EBP
POP EBP
RETN 4
INT3
INT3

PUSH EBP
MOV EBP,ESP
SUB ESP,11C

搜索到后,搜到的上面这个子程序就是发包函数。













设立找真正发包特征:

1.bpx WSACleanup    找到WS2_32.WSACleanup   是WS2_32.DLL模块里。
注解:bpx 意思是找到进程里所有调用函数WSACleanup的地方。

2.0049F3D2    68 242EF300     PUSH tale.00F32E24                       ; could not find a usable winsock dll!

OD搜索字符串: could not find a usable winsock dll

搜索方法:ctrl+G 来到401000  在汇编里右键-超级字符串参考-查找ANSII 与查找Unicode都可以,试那个能找到就用那个。

以上2种找到后,找下面的第一个子程序.

3.0049F488    68 4C2EF300     PUSH tale.00F32E4C                       ; packet size error[id=%d, stream=%d, size=%d]

OD搜索字符串: packet size error

搜索方法:ctrl+G 来到401000  在汇编里右键-超级字符串参考-查找ANSII 与查找Unicode都可以,试那个能找到就用那个。

找到的地方就是发包子程序,到头部去下断即可。






万事万物相生相克,遇到问题总有解决办法的,不是你没有能力,只是你的方法不对而已。
善者 慈悲心常在 无怨无恨 以苦为乐
默认压缩密码www.hifyl.com
文件分享密码问题:http://www.hifyl.com/read-htm-tid-4444.html
离线杨子

只看该作者 沙发  发表于: 08-16
啊啊啊啊啊啊啊
离线shicongmeng

只看该作者 板凳  发表于: 11-10
以前看过第一集,,,讲的不错,可惜当时不会C语言
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个