zoukankan      html  css  js  c++  java
  • X86逆向11:F12暂停法的妙用

    本节课将介绍F12暂停法的使用技巧,F12暂停法的原理其实很简单,当我们点击OD中的暂停按钮时,OD会将当前的堆栈状态保存起来,并暂停当前窗体的线程执行,直到我们点击运行按钮OD才会唤醒全部线程并继续执行程序,我们可以在OD暂停的时候得到一些有价值的东西,这在软件破解中也是一个很不错的技巧。

    ------------------------------------------------------------
    本章难度:★★★☆☆☆☆☆☆☆
    课程课件:CM_11.zip
    ------------------------------------------------------------

    1.在实战之前先来用一个CM程序来演示F12暂停法的使用技巧,OD直接载入CM程序,然后运行程序点击关闭按钮,会弹出一个提示框,我们将使用F12暂停法把这个弹窗去除掉,好了直接开搞。

    2.出现弹窗后,直接点击暂停按钮或按下【F12】,程序在暂停后有时会弹出一个窗口,提示是否等待5秒,这里我们选择否,不然又会等5秒。

    3.紧接着我们按下【Alt+K】,会出现以下提示信息,这个就是堆栈的当前状态,只不过被暂停了,以下我们可以看到MessageBox提示框。

    4.直接右键,选择显示调用,回来到反汇编窗口。

    5.直接在这个调用位置,下一个F2断点,然后重新载入程序。

    6.运行后,我们直接关闭程序,然后回到OD,会发现OD被断下了,直接接单步【F8】出这个CALL。

    7.出CALL后,会发现这一层并没有能跳过弹窗的关键跳转,不要犹豫【Ctrl + F9】执行到程序返回,【F8】直接出CALL。

    8.出CALL后发现一个关键跳转,默认是没有跳转的所以弹窗了,我们这里强制它跳转直接改成JMP,然后保存,OK去弹窗成功。

    实战:破解HyperSnap 7专业版

    免责声明:该教程仅用于技术交流,并无任何商业目的,您不得将下述内容用于商业或者非法用途,否则后果自负,如果您喜欢该程序,请支持正版软件,购买注册 ,得到更好的正版服务,如有侵权请邮件联系作者!

    1.直接OD载入程序,然后运行,运行后会弹出如下窗口,我们直接按下【F12】让程序暂停。

    2.暂停后,直接按下【Alt + K】,然后直接在【GetMessageW】函数上,右键,选择【显示调用】。

    3.然后会看到如下代码,这里是系统领空无法直接修改,所以直接在断尾下断,并重新载入程序。

    4.重新载入后,运行程序,程序会断在【retn】的位置,然后我们单步【F8】出这个CALL。

    5.这个位置还是系统领空,我们直接在断尾直接下一个断点,然后重新载入程序。

    6.重新载入程序后,回到程序点击【继续】按钮,回到OD中,我们直接出这个CALL,然后会看到如下,依然是系统领空,直接单步出CALL。

    可能会出现程序跑飞的情况,直接在跑飞的call的下面下断,然后激活所有线程,然后继续单步出这个CALL。

    7.出CALL后,终于回到了程序领空了,我们向上找,看看有没有能够跳过这个CALL的关键跳转吧。

    8.这里第二个JNZ能够跳过验证CALL,但有跳转进来了就是第一个JNZ。

    9.直接把第一个JNZ改成NOP,然后把第二个JNZ改成JMP无条件跳转,就可破解完成,直接保存文件即可。

  • 相关阅读:
    数据结构与算法----双向链表
    数据结构与算法----数学应用之一元多项式
    数据结构----线性表顺序和链式结构的使用(c)
    Android--Otto事件总线 -- 组件之间通讯框架使用 --模式解析
    递归 —— 二分查找法 —— 归并排序
    自己做悬浮拖拽按钮依赖
    RePlugin 插件化-内置加载
    Android图片处理--缩放
    数据结构与算法---常用三大排序算法
    Android图片处理--全景查看效果
  • 原文地址:https://www.cnblogs.com/LyShark/p/11183481.html
Copyright © 2011-2022 走看看