上一节我讲解了吃血的CALL,吃蓝,回城,其实跟吃血一样,我个人觉得没必要去写了。如果仔细看过我的文章的话,我坚信一定可以做出来的。
好的,废话不多说,我们继续找“冰系”“火系”CALL以及如何去表达它。
打开OD和找CALL练习并且附加,下断,一系列工作不再赘述。
单击“冰系”-----断了。根据上次我们所说的,CALL在第四层中。我们直接进入第四层
好的,我们看到了RETN之前的4条语句,
这里就是我们要找的CALL了。好的,在此CALL上下断!(F2)并去掉原来的断(ALT+B)
OK,F9运行程序并再次点击“冰系”使其断下。
很好,很好,在我们要找的CALL处断下了。
OK,首先看汇编语句
我们首先要判断,那条语句对CALL产生了作用,那么如何判断呢?
我目前有三个途径可以判断,一是根据断点判断,二是根据寄存器判断,三是跟踪判断。
好的,这里我们先说下断点判断。
在上面四条语句中全部下断。并让程序恢复运行状态。
好的,再次点击“冰系”我们发现了一个问题。就是前面两条命令并没有参与CALL的调用动作,因为直接跳过了,并没有在语句中断下。于此判断,这两个语句跟这里的CALL无关。
OK,既然确定了CALL的因素,我们就来分析,应该如何去调用它。
下面三个图大家看一下,我给大家一个对比
好,通过上面的图,大家可以发现
当命令
mov edx,1执行的时候,调用了寄存器中EAX ECX EDX中的值
CALL 00452DF8 执行的之后只调用了EDX。也就是说,这里的EDX是影响CALL的因素。
RETN EAX ECX EDX 这里返回的时候也是返回了三个值,正好跟EDX的因素有关系。
现在这样就确定了,EAX,ECX,EDX就是CALL的因素。
那么该如何调用应该不用我去说了吧。不清楚的去看我的第一篇文章,
有变化的仅仅是这里其中一条命令应该为 mov edx,1
好的。如果不明白,就留言吧,我会发代码上来的。
回答。3.4楼问题,这里的edx,1是要传递的。其实大可不必来问,自己动手做一下,什么都明白了
阅读(2419) | 评论(0) | 转发(0) |