本节课将介绍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无条件跳转,就可破解完成,直接保存文件即可。

X86逆向11:F12暂停法的妙用的更多相关文章

  1. X86逆向14:常见的脱壳手法

    本章节内容将介绍软件的脱壳技术.什么是加壳?加壳就是用来压缩或者保护软件不被非法修改破解的一种工具,而脱壳就是将已经加壳的程序从壳中剥离出来,既然能给程序进行加壳,那也就会有相应的脱壳方法,本节课我们 ...

  2. X86逆向10:学会使用硬件断点

    本节课我们将学习硬件断点的使用技巧,硬件断点是由硬件提供给我们的一组寄存器,我们可以对这些硬件寄存器设置相应的值,然后让硬件帮我们断在需要下断点的地址上面,这就是硬件断点,硬件断点依赖于寄存器,这些寄 ...

  3. X86逆向3:通过修改关键CALL破解

    软件逆向第一课中我们通过爆破的方式直接破解了程序的登录限制,但这一种方式很不合理,因为你只是破解了登录这一处的验证,如果程序内部还有其他的验证那么你需要再次爆破第二个验证,显然这种方式是很烦人的,如果 ...

  4. X86逆向1:软件破解入门课【课件下载】

    从本节课开始,我将带领小白入门学习软件破解的相关内容,大佬绕过,以后将会定期更新从最基本的破解知识点开始学习,由简单到复杂循序渐进,难度会逐步提高. 为了防止版权方面的争议,我将自行编写一些破解案例来 ...

  5. 泛化之美--C++11可变模版参数的妙用

    1概述 C++11的新特性--可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数.任意类型的参数.相比C++98/03 ...

  6. X86逆向13:向程序中插入Dll

    本章我们将学习Dll的注入技巧,我们将把一个动态链接库永久的插入到目标程序中,让程序在运行后直接执行这个Dll文件,这一章的内容也可以看作是第八课的加强篇,第八课中我们向程序中插入了一个弹窗,有木有发 ...

  7. X86逆向9:通过关键常量破解

    本章将讲解一下关于关键全局变量的一些内容,关键的全局变量对于软件的破解非常的有用,找到了关键全局变量并改写它同样可以完成完美爆破一个程序,这里我将使用CM小例子来讲解搜索关键变量的一些技巧,最后我们来 ...

  8. X86逆向8:向程序中插入新区段

    本节课我们不去破解程序,本节课学习给应用程序插入一些代码片段,这里我就插入一个弹窗喽,当然你也可以插入一段恶意代码,让使用的人中招, 这里有很多原理性的东西我就不多罗嗦了毕竟是新手入门教程,如果想去了 ...

  9. X86逆向6:易语言程序的DIY

    易语言程序在中国的用户量还是很大的,广泛用于外挂的开发,和一些小工具的编写,今天我们就来看下如何给易语言程序DIY,这里是用的易语言演示,当然这门技术也是可以应用到任何一门编译型语言中的,只要掌握合适 ...

随机推荐

  1. R语言:实现SQL的join功能的函数

    library(dplyr) ribao <- full_join(ribao,result,by = '渠道',copy = T) ribao <- full_join(ribao,se ...

  2. 【log4j】log4j.properties 文件示例

    # 下面的文件内容是写程序长期要用的,放在这里留个底#Output information(higher than INFO) to stdout and file.info/debug/error ...

  3. Android中图片优化

    1.对图片进行压缩:建议使用TinyPNG工具压缩 2.WebP格式(支持4.0以上)可减少文件大小 3.尽量使用NinePatch的PNG 4.图片缓存

  4. 控制器Controller

    1)  org.springframework.web.servlet.mvc.ParameterizableViewController 如果请求是/hello.action的请求路径,则直接跳转到 ...

  5. mybaits及mybaits generator 插件使用指南(亲测原创)

    一. eclips安装mybaits插件 参考文章:http://www.cnblogs.com/zengsong-restService/archive/2013/08/09/3248245.htm ...

  6. SpringMVC中实现Bean Validation(JSR 303 JSR 349 JSR 380)

    JSR 303是针对bean数据校验提出的一个规范.使用注解方式实现数据校验. 每个注解的用法这里就不多介绍,请移步JSR 303 - Bean Validation 介绍及最佳实践 笔者上面提到的J ...

  7. mysql大量locked的一个案例

    转自 http://cyxu2004.blog.163.com/blog/static/45768718201222133440986/

  8. PhpSpreadSheet 读写excel文件

    phpoffice 系列很好用.PhpSpreadSheet取代了原先的phpexcel,用来处理excel文件 https://phpspreadsheet.readthedocs.io/en/la ...

  9. 20190603 - CentOS 7 提示 Failed to load SELinux policy. Freezing 导致卡住不启动的解决办法

    现象 最近 Windows 和两台 Mac 混用,将 Windows VirtualBox 中安装的 CentOS 7 拷贝到 Mac 上. 启动 CentOS 7 时,图形界面进度卡在最后,按 Es ...

  10. 《九阴真经:iOS黑客攻防秘籍》新书发布

    本书内容易于理解,可以让读者循序渐进.系统性地学习iOS安全技术.书中首先细致地介绍了越狱环境的开发与逆向相关工具,然后依次讲解了汇编基础.动态调试.静态分析.注入与hook.文件格式,最后为大家呈现 ...