• 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的因素。

  • 相关阅读:
    ios中从相册:相机中获取图片信息
    ios中图片的绘画和截图
    UIPickView的简单介绍
    封装类的方式访问数据库(封装字符串、json)
    ajax用户名案例(重点)
    mysql中一对一,一对多,多对多关系
    会话控制:SESSION,COOKIE
    ajax简单案例:返回json型
    ajax同步,异步
    ajax简单案例:字符串返回类型
  • 原文地址:https://www.cnblogs.com/raorao1994/p/16003705.html
Copyright © 2020-2023  润新知