OD如何找call
1个回答
展开全部
用OD打开进程以后登录人物跑到一个空地,确保一切正常以后回OD下断(bp send)测试了一下就算什么都不操作,OD也会每隔几秒断到一次send乘这个基本固定时间中断的一次结束以后在聊天窗口里打句话发送,OD成功断下断在007682A6(WS2_32.send)上面(打bp send当然是断在send上面啦,然后层层退出去找我们要的)敲一次ctrl+F9,地址转到了0058446E00584459 |. 8B0D ACCB9000 mov ecx, dword ptr [90CBAC]0058445F |. 6A 00 push 0 ; /Flags = 000584461 |. 6A 01 push 1 ; |DataSize = 100584463 |. 68 E8399000 push 009039E8 ; |Data = elementc.009039E800584468 |. 51 push ecx ; |Socket => FC00584469 |. E8 383E1E00 call ; \send0058446E |. EB 07 jmp short 00584477 ; 第一次跳出来的地方,上面一行就是send的调用4个参数OD都帮我们注释清楚了,还不明白可以找windows socket相关的文章来看看send的调用再敲一次ctrl+F9,回到再上层调用地址0057C6C5再按ctrl+F9退一层,就到了004BF82A,而这行的上三行,就是最终找到的喊话call的调用004BF823 |. 56 push esi ; /Arg2004BF824 |. 50 push eax ; |Arg1004BF825 |. E8 A6F60B00 call 0057EED0 ; \elementc.0057EED0004BF82A |. 8D8D D0FAFFFF lea ecx, dword ptr [ebp-530]怎么确定的? 部分是猜测,部分是参考了 http://www.ghoffice.com/bbs/read.php?tid-37847-fpage-0-toread--page-2.html 这个帖子里奇才贴的代码,事先知道了喊话call是2个参数的,省了不少麻烦。地址换版本变了,不过还是找出来了。取消send的断点,然后在004BF825上按F2下断,验证一下.聊天窗口里喊1234567,成功断在004BF825此时寄存器里数据为:EAX 00924100 elementc.00924100ECX 033B1C68EDX 0C3C6BFC UNICODE "123567"EBX 066CF6E0ESP 0012E6DCEBP 0012F420ESI 0C3C6BFC UNICODE "123567"EDI 00000002EIP 004BF825 elementc.004BF825注意这2个ESI 0C3C6BFC UNICODE "123567"EAX 00924100 elementc.00924100一切尽在不言中了。
记得采纳啊
记得采纳啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询