本章将讲解一下关于关键全局变量的一些内容,关键的全局变量对于软件的破解非常的有用,找到了关键全局变量并改写它同样可以完成完美爆破一个程序,这里我将使用CM小例子来讲解搜索关键变量的一些技巧,最后我们来实战破解一个程序练练手,从本节课开始我们将进入实战环节,不再仅仅局限于CM小程序的破解啦。

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

在实战之前我们先来看一个简单的CM小程序,来讲解一下关于常量破解的原理性的东西,如下我编写了一个小程序,当我们点击验证和1做比较时,程序会通过CMP指令让变量中的数值和1做一次比较,然后通过比较判断是否弹出一个窗体,默认是不弹窗的,第二个正好相反,现在我们的目的就是通过修改程序中的所有常量来达到破解的目的,让两个按钮都弹出窗口。

1.直接OD载入程序,并运行起来,然后点击两个按钮,会发现都没有反映。

2.然后按下【ctrl + B】,搜索按钮特征码【FF 55 FC 5F 5E】,点击确定,然后在【00416EBD】这个位置下一个【F2】断点。

3.回到程序点击【验证和1做比较】,然后程序会断在【00416EBD】这个位置,我们直接【F7】进入这个按钮事件中去。

4.该按钮的按钮事件内容如下,CALL就是一个关键CALL,关键的比较是CMP命令,可以看到它取【4A25F0】变量的内容来进行比较。

5.我们可以直接在数据窗口跟随一下这个变量的地址,来看一下比较是否会成立,这里cmp命令会拿【0】和【1】相减,影响下面的关键跳转,【jnz】不为0则跳转,显然这条命令是需要执行的,它正好跳过了我们的弹窗。

6.如上图,我们当然可以通过修改CMP指令后面的1将其改为0来完成破解,但是在这之前我们需要确定一下还有没有其他的位置调用了这个常量来进行验证,此时我们直接在反汇编窗口,右键选择【查找】,【所有常量】。

7.记下【4A25F0】常量地址,然后直接查找

8.然后会看到如下图,会看到所有的调用了【4A25F0】这个常量地址的命令,我们直接在CMP命令上下断,MOV是赋值这里我们不需要管。

9.然后我们回到CM程序中,点击第一个按钮,会断在下图的位置,说明它开始做比较了,为了让它跳转成立,我们改写成和0做比较。

10.运行程序,程序正常弹窗了,修改第二个的方法相同,当点击第二个按钮时会断下,将其改为1即可实现爆破程序,这里不做演示了,改完直接保存文件就好了。

实战:破解 豪迪群发器2019

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

1.直接OD载入程序,然后【F9】运行程序,让程序的字符串完全的加载出来,然后我们记下弹出的关键字【注册】后期会用到。

2.OD反汇编窗口,右键选择【中文搜索】选择【智能搜索】,然后查找关键字【注册】,这里我找到了一处关键位置,已注册版本,这句话说明程序已经完成了验证,我们点过去看看。

3.代码如下,我们直接在CALL处下一个【F2】断点,然后回到软件。

4.回到软件点击【注册】按钮,发现程序被断下了,程序被断在了【CALL】位置处,我们直接【F7】进入到CALL的内部,没错这就是计算注册码的关键CALL。

5.出这个CALL吧,我们此处暂时不分析他是怎么算的,我们直接复制这个关键常量【58E5FC】。

6.直接右键,选择【查找】,所有常量,然后在弹出的窗口中输入【58E5FC】

7.此处我们在所有的CMP比较命令上下断点,然后重新载入程序,并运行。

8.第一次断下,我们将cmp byte ptr [58E5FC], 0,改为cmp     byte ptr [58E5FC], 1,也就是和1做比较。

9.第二次修改,同样将和0做比较的地方改为和1做比较。

10.第三次修改同样将0修改成和1做比较,修改完这三处调用以后,直接取消断点并运行程序。

11.破解完成,直接保存文件即可,一定要保存所有更改。

写教程不容易,转载请加出处,您添加出处,是我创作的动力!

X86逆向9:通过关键常量破解的更多相关文章

  1. Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)

    Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...

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

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

  3. X86逆向5:破解程序的自效验

    在软件的破解过程中,经常会遇到程序的自效验问题,什么是自效验?当文件大小发生变化,或者MD5特征变化的时候就会触发自效验暗装,有些暗装是直接退出,而有些则是格盘蓝屏等,所以在调试这样的程序的时候尽量在 ...

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

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

  5. X86逆向7:特殊窗体的破解思路

    本章我们来看两个案例,这两个案例同样使用爆破的方式破解,但是与其他的程序不同,这个程序没有弹窗,提示成功或失败使用的是图片或是一个类似图片的窗体,本章将学习两个新的API函数的使用技巧. ------ ...

  6. 初探Android逆向:通过游戏APP破解引发的安全思考

    如今移动互联网已经完全融入到我们的生活中,各类APP也是层出不穷,因此对于安卓APP安全的研究也尤为重要.本文通过对一款安卓APP的破解实例,来引出对于APP安全的探讨.(本人纯小白,初次接触安卓逆向 ...

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

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

  8. X86逆向12:内存补丁的制作

    本章我们将学习各种打补丁的方式,补丁在软件的破解过程中非常的重要,比如软件无法脱壳我们就只能通过打补丁的方式来破解程序,补丁原理就是当程序运行起来会被释放到内存并解码,然后补丁就通过地址或特征码定位到 ...

  9. X86逆向11:F12暂停法的妙用

    本节课将介绍F12暂停法的使用技巧,F12暂停法的原理其实很简单,当我们点击OD中的暂停按钮时,OD会将当前的堆栈状态保存起来,并暂停当前窗体的线程执行,直到我们点击运行按钮OD才会唤醒全部线程并继续 ...

随机推荐

  1. python中with语句的使用

    引言 with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用) ...

  2. sql语句中where 1=1和 0=1 的作用

    sql where 1=1和 0=1 的作用   where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where  1=1  在多条件查询中的 ...

  3. redis 数据类型详解 以及 redis适用场景场合(滴滴)

    滴滴的面试官问了个问题关于redis的: 我现在想服务器每分钟接收一个用户的请求小于60个,如何处理: 答:使用Redis 缓存服务器,可以设置key=用户ID value不停地加一到了60就停止,然 ...

  4. JS基础_数组的方法

    常用的方法 1.push:向数组的末尾添加一个或更多元素,并返回新的长度. 将要添加的元素作为方法的参数传递,这些元素将会自动添加到数组的末尾 var a=[1,2,3]; var r = a.pus ...

  5. js实现回到顶部功能

    js实现回到顶部功能 一.总结 一句话总结: 可以通过js或者jquery可以很快的控制页面的属性,比如高度等等 //设置当前视口的顶端数值 var setScrollTop = function(t ...

  6. react-1

    react 创建方法 首先确定你的电脑上面已经安装了node和npm 检查方法:window键 输入cmd 输入node -v 或者 npm -v 在全局安装create-react-app这条命令 ...

  7. linux下如何找出交叉编译器的某个库路径?

    答: 使用选项-print-file-name=<lib_name> 如列出libstdc++.so.6的库路径:aarch64-linux-gnu-gcc -print-file-nam ...

  8. CSS三角形的实现原理及运用

    原理 css盒模型 一个盒子包括: margin+border+padding+content– 上下左右边框交界处出呈现平滑的斜线. 利用这个特点, 通过设置不同的上下左右边框宽度或者颜色可以得到小 ...

  9. idea设置包的导入和提示重复代码下波浪线

    1.一般idea都不会导入包.即使按了(以下都是已eclipse设置idea的快捷键) alt+enter键也不能导入. 2.关闭重复代码提示(也就是重复代码有波浪线)

  10. Kettle实现从mysql中取2张表数据关联的数据,并写入到mongodb中

    1 建立转换,并设置DB连接到mysql 选中DB连接:连接类型选择MySQL,输入主机名称,数据库名称,端口号,用户名,密码 输入连接名称,点击确定.(可以先点击测试,测试一下是否连接成功) 如下图 ...