• OD调试3--获取使用执照


    本文所用实验程序如下:

    这次实验用的很多是关于跳转的。这里给大家分享张图片,是在OD 调试中各种跳转指令

    接下里,我们首先分析下这个程序,总体浏览程序,我们可以发现三个对话框,

    1

     

    2

    3

      分析:  请注意标记或者圈起来的地方,MessageBoxA,我们学过MFC的都知道这是一个对话框函数,当程序运行到这里,对话框就会弹出来,上面的信息也会显示在框中。我们的目的就是跳转到第三个。但是它是怎么切换的呢?仔细看,它都有一些跳转,第一个有些特殊,运行过后就结束了,可不是我们需要的。后两个是在第一个运行的后面,所以要切换到到第三个也就是正确的对话框,必须跳过第一个和第二个。中间的一些跳转位置需要我们注意。小心修改。

    第一步:加载程序,我们先看下运行效果。(F8运行)运行到光标处,也就是MessageBoxA处,点击‘确定’程序结束。

    第二步,我们来修改这个程序。按F8运行到jnz处,我们可以发现一个跳转,正好可以跳过第一个对话框。那我们就修改这个jnz的标志位,或者修改汇编。

    对于jnz,前面我们说过,z标志位为0时跳转,那就修改为1

    修改会变得话就改为jmp,这个命令就是强制跳转

    这样我们就跳过第一个对话框,接着运行。

    第三步:我们会发现又碰到一个跳转,而这个跳转正好到第二个对话框。

    对于这种情况,我们只需把jmp修改为nop让它不起作用。点击右键汇编,修改。因为jmp占两个字节,所以nop也是两个。

    第二个跳转修改完毕,接着往下走。

    第四步:走着走着又发现一个跳转 jl.同理和第一个跳转原理相同,修改标志位或者汇编。

    对于jl,标志位s!=o时跳转,那我们就修改为s=0,

    修改汇编,就是改为nop,不让它跳。这里就不给出截图了。

    修改完毕,接着运行。

    第五步:接着走我们会发现两个小跳转,但不会跳到第二个错误的对话框,可以接着往下走。又碰到一个跳转,这个是调到第二个对话框,需要修改。

    又是烦人的jl,当然了修改的道理同上了。修改后接着走。

    第六步:又到了一个小跳转,这个跳转就有点意思了。指的不是第二个对话框,往下拉。就看到了惊喜。第三个对话框。上图说话:

    第七步我们来看下最后的运行结果。

    这样程序就修改结束了。接下来就是保存的问题了。

    强调:1.标志位的修改是不能保存的,所以如果我们想要保存为可执行文件的话,所有的修改方式都要用修改汇编的方法。这样才可以保存。 

            2.这部分内容都是用的跳转命令,所以文章开头的图片是很有用的。

    试验程序下载:www.fishc.com

  • 相关阅读:
    HTML_<select>
    HTML_<a>
    MySQL_知识点
    MySQL_常用SQL语句
    GIT
    MyBatis_传入参数的问题
    js函数防抖与节流总结
    node 常用方法 生成密钥 token验证 验证码生成 (持续更新)
    node 登陆拦截中间件(egg)
    js 给页面容器增加水印
  • 原文地址:https://www.cnblogs.com/xiao-zhang/p/4396951.html
Copyright © 2020-2023  润新知