破解逆向专辑(一)
一、学习背景
1、本专辑灵感源于吾爱破解的yyhd大神,一个从零到一的破解系列,也为了补充一下自己的短板
2、使用软件 DIEx64、x64dbg、OD、Immunity Debugger,与原文软件略有不同,因为是比较老版本的文章,这里选择了比较新的主流的软件进行学习
3、软件功能 DIEx64,支持64位和32位数,主要进行查壳,并且die也能查询是什么语言写的并且查什么壳,OD分析的是程序的汇编代码
二、正片开始,重启验证
这里我们开始第一个专题,重启验证,我们手里有这样两个exe程序,一个是机器码验证、一个是注册表重启验证,我们首先进行第一步查壳
1、破解三件套
我们使用PEiD进行查壳,这里一个upx的壳,接下来派出DIE64来看一下
这里我们使用DIE发现也能查是什么语言编写的,这种情况下就是没壳,但是有种情况就是这两个软件查出来时vc语言,但实际上是易语言编写的情况,这时候我们需要在OD里面查看00401000这个位置的汇编代码
这里00401000如果是XOR EAX,EAX ,没错,只要是00401000这行代码是这样的,就是易语言写的程序。
2、OD、x64dbg使用介绍
3、开始破解第一题
方式一,修改为jnz,条件不成立时跳转
这里我们手上有一个机器码验证,无论我们输入什么都是密码错误,我们丢进X64bdg看一下
这里的逻辑是这样的,
JE;等于则跳转同JZ,既然每次都是登陆失败也就是说每次je条件都是不等于,就是失败的,那我们改成jne或者jnz就是说每次不等于跳转,自然就成功了
方式二,下断点查看真码
然后输入真码即可登录成功
方式三,nop大法
设置为空就不用再判断正确了
4、开始破解第二题
第二题一个
找到登录提示的位置,这里是一个jz的条件判断,我们更改成jnz一个无条件跳转或者这是为nop即可破解成功
一下便是设置为空的情况
5、第三题,多次返回到
这是我们需要实现的结果,接下来我们一步一步实现
首先按f3打开我们的软件。 这里我们运行之后输入一些账号密码会提示我们请输入7位有效数字,这里我的理解就是他有一个判断语句,就是判断是否输入了7位数字,我们只需要把这个条件更改即可
这里很明显有个跳转,我们写的是跳转未实现,如果跳转实现了就不会弹出请输入7位有效数字了,那么我们把这个条件改掉,让他直接跳转过去
这里如图,我们改了之后就不再去进行条件判断了,直接进行跳转,接下来我们看看程序是否有变化
okok,到这里已经是登录失败了,不再是请输入7位有效数字,也就是说我们已经直接跳转过去了
下一步我们去找登陆失败的判断
这里很明显是登录成功或者失败的判断语句
这里有一点需要注意,就是中间的004015E8这句话是我们从004015A9跳转过来的,逻辑是这样的,如果上面的条件也就是004015A9跳转了那我们就无法触发恭喜你,登录成功!。因为登录成功这句话就在跳转的下面,你都已经跳过去了还怎么登录成功,跳转过去了那我们就触发下面的登录失败!,所以这里我们修改004015A9即可
即便我们登录成功了,我们还需要解决其他问题,也就是限制我们输入字符长度的问题,我们依然找到该判断语句
这里很明显要把jle跳转压入下面,这里是判断是否输入超过6位字符,只有不超过6位才跳转并且压入数据,那我们更改为Jmp无条件跳转即可。
ok,更改成功。 第一节课结束