资源描述:
《授人以鱼不如授人以渔●(找call篇一)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、03授人以鱼不如授人以渔●(找CALL篇一)目标:游戏找CALL练习实例ONE记:看这篇找CALL文章,并不是说要学会它的操作步骤,而是学会找步骤的原理,只有懂得原理,才算真正会了.不要因为模拟器的简单而忽略这篇文章,也不要因为曾经写过这个模拟器的挂而忽略这篇文章.希望这篇文章能给你带来帮助. 这是一位大牛做的模拟器器,今天就来找这个模拟器的CALL用OD加载模拟器然后按F9运行下bpsend断点 P:为什么要下send断点?*send是微软提供的一个API函数,可以用来发送数据包. 绝大部分游戏都是用这个函数来发包的,其他还有WSASend sendto WSASendto == send
2、对应的收包函数是recv WSASend对应的收包函数是WSARecv下段后这里按ALT+B 会显示已经下段的地址 *当你暂时不想断下来而又不想删掉就可以按空格来禁止.断下来后,我们点下 模拟器的加血按钮 OD立马就断了下来 *标题显示模块-ws2_32 表明我们还在系统领空*游戏发送数据包是调用send函数发送的,掉用以后程序告诉系统我要发包了,然后系统就开发发送封包,这个时候断下来后我们就在系统发送完封包后.按CTRL+F9 返回P:为什么要用CTRL+F9返回?而不是前进?*程序是一层套着一层的,就像一个箱子里面包含一个箱子 ,而里面的箱子里又有一个箱子.而我们断的send 就是在最里
3、面的箱子,所以我们需要返回到我们所需要的代码层. 我们来看下堆栈窗口这里第一行是 CALL 第二行到第五行是CALL的参数写成函数就是send(soket,data,datasize,flags)这个就是系统send所需要的参数 DATA这里存放着send发送的封包内容DATASIZE 表示封包的大小 从MSDN查看一下函数的参数我们会发现他的参数跟我们刚刚反汇编的一样. *按照__cdecl调用约定 参数是从右边开始压入堆栈 继续 返回这里我们已经到了程序领空了 (标题显示模拟器,而没有显示ws2_32)在这里OD已经给我们标明了.这是调用send的汇编代码因为这个模拟器并没有写接收返
4、回封包的代码所以我们调用这个send函数程序也是没有反应的继续返回 这里有一个CALL 如果我们第一次找,我们并不能确认这个是否是我们要找的P:如何确认这个是否是我们需要的CALL呢?我们先断下来再说继续返回 这里上面有一个retn *retn 表示 一段程序的结束.这里从 JMP00403814 开始到下面的retn 代表这个是连续的一段代码继续返回 这里我们又发现一个CALL先断下来再说在返回一层 这里也有一个CALL 也断下来好了 我们现在已经返回了6层找到了3个CALL到底哪个是我们需要找的呢我们先来测试下我们找的把send断点删了暂时没用了按下加血我们发现所有断点 都会断, 这个时
5、候我们发现第二个CALL附近有"血"这种文本当然一般的除了喊话CALL以外不会有很明确的数值当做依据这个时候就要靠你的经验去猜了.我们在点下吃蓝 发现只断下第一个.好了,第一个先不要管了.为啥?猜的...好了我们来看看第二个CALLmovedx,00453028call00452E98retn*要写一个CALL,我们就要模拟出他所需要的寄存器,还有堆栈的环境P:如果看一个CALL所需要的寄存器?我们进入call00452E98 的内部选中call00452E98 那行按回车就会跳到下面00452E98 /$ 55 push ebp00452E99
6、. 8BEC mov
7、 ebp,esp00452E9B
8、. 83C4F8 add esp,-800452E9E
9、. 53 push ebx00452E9F
10、. 8955FC mov dwordptr[ebp-4],edx00452EA2
11、. 8BD8 mov ebx,eax00452EA4
12、. 8B45FC mov eax,dwordptr[ebp-4]00452EA7
13、. E81414FBFF call 004042C000452EAC
14、. 33C0 xor eax,eax00452EAE
15、. 55 push ebp00452EAF
16、
17、. 687E2F4500 push 00452F7E00452EB4
18、. 64:FF30 push dwordptrfs:[eax]00452EB7
19、. 64:8920 mov dwordptrfs:[eax],esp00452EBA
20、. 8B45FC mov eax,dwordptr[ebp-4]00452EBD
21、. BA942F4500 mov edx,00452F940