永发信息网

OD 汇编 找CALL

答案:1  悬赏:0  手机版
解决时间 2021-11-14 06:20
  • 提问者网友:世勋超人
  • 2021-11-13 22:57
OD 汇编 找CALL
最佳答案
  • 五星知识达人网友:轻熟杀无赦
  • 2021-11-14 00:26
你代码太乱了,根本没法看,手动整理了下,苦逼。

你找的地方根本不对,没法注入,这是其一。
其二就是,就算你的功能函数是对的,不给我OD,起码也给个IDA静态分析下吧。给这么一段,神仙也写不出注入代码来。
你这里的2个call,一个是ws2_32.send,一个是ws2_32.recv.分别是windows系统中的收包/发包函数。现在是在系统领空的,你在ws2_32.,dll里,这里根本就不在游戏的主线程中,不可能有打坐功能。自己进去send内部,在send头部下个断点,或者在command bar 里 bp send。这两个都是在send头部下断。
注意避免心跳包干扰,然后去游戏执行打坐功能。断下来后Ctrl+F9,执行到返回。一般次数要多一点,因为一开始2-3次还是在组包函数里,外面才是正常的游戏功能。不确定的话可以返回2层以后在每次返回后下断,不放心可以多下点。这个层数跟游戏有关系。一般从明文call出来,不会超过5层就能找到合适的调用接口。
断点下完了,F9游戏跑起来。看看是否马上会有断点断下。断了的删了,应该是层数返回的太多,跑到GUI上去了,肯定不是。然后执行些无关紧要的操作,把断下来的断点删掉。
然后打坐,看看第一个断下的断点,那个call是什么形式。首先看看调用接口好不好,push参数多不多,push了几个,有没有ecx赋值,这个一般要进去看retn语句,反正自己细看下,找出参数个数。
然后找个代码注入器,写个汇编测试下,能用最好,崩溃了也很正常。看看push参数个数是否正确,多查找一下。
测试成功了,就要找参数来源了。这个是OD基本功,跟着反汇编层层返回,直到找到基址。
一般来说,当前断下的位置不一定是最合适的调用位置。找参数之前可以长个心眼,看看这个call的内层call的参数含义是否更明确。或者你找到了这个call,它的push参数,都是[esp+0xXXX]读取的,如果从堆栈看都是外层call的push参数,可以考虑是否调用外层call来的更方便。
总之就是要够鸡贼,怎么好弄怎么来。
都找到了,请用E,Delphi,VC等写出注入程序,用内联汇编嵌入你的代码,完成调用。
基本就是这样了,祝你成功,如果感觉我这些还够辛苦费,请采纳。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯