OD使用技巧

CALL的参数其实就是在调用CALL的时候所需要的运行环境,看寄存器中的提示,有两个红色,说明当我们调用CALL的时候,它使用了寄存器中的两个地址。那么这个就是CALL的 运行环境了,也就是说,只要在我们调用这个CALL的时候,寄存器EAX中有值00D51FE4和寄存器ECX中有值0042ABE4就可以运行。这里还有一个特殊 情况,这里我先卖个关子。 

根据call执行前后的寄存器变化情况来判断

我们首先要判断,那条语句对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的因素。

 

posted @ 2022-03-14 13:36  扰扰  阅读(294)  评论(0编辑  收藏  举报