另辟蹊径的破解方法“鼠标破解法”
程序员文章站
2022-07-08 14:15:02
作者:TC-XB一般来说,对于软件的破解无非也就是两种主要方法,一种是修改代码暴力破解,另一种则是想办法找到软件的注册码。今天在这里我要为大家介绍一种很奇妙的方法,只用动动鼠标就可以轻松地实现...
作者:TC-XB
一般来说,对于软件的破解无非也就是两种主要方法,一种是修改代码暴力破解,另一种则是想办法找到软件的注册码。今天在这里我要为大家介绍一种很奇妙的方法,只用动动鼠标就可以轻松地实现破解的目的,就暂且叫它做“鼠标破解法”吧。说到这里大家肯定很想知道这个方法究竟是怎样实现对程序进行破解的目的的,下面我们就用一个Crackme来给大家演示一下这个奇妙的方法。
用OD打开这个Crackme(没有加壳,可直接用OD载入),对付这些简单的Crackme最有效的办法就是寻找关键字符串。打开OD的字符串查找功能看看有没有可用的重要注册信息。果然,程序中出现的所有字符串一目了然,选择一个注册成功的提示并双击,就来到了对应的代码处,代码非常整齐也很简单。
0040133C /75 15 jnz short 00401353
0040133E |6A 00 push 0
00401340 |68 62344000 push 00403462 ;key/crackme #2
00401345 |68 B8344000 push 004034B8 ;good job, i wish you the very best
这段代码对于破解工作来说,没有什么实际的意义,但我们可以看出第一句代码是一个跳转,这个跳转是干什么用的呢?我们去它的目的地“00401353”看看。按快捷键CtrL+G打开对话框,输入地址“00401353”,就来到了下面的代码处。
0040133C /75 15 jnz short 00401353
0040133E |6A 00 push 0
00401340 |68 62344000 push 00403462 ;key/crackme #2
00401345 |68 B8344000 push 004034B8 ;good job, i wish you the very best
原来,来到了注册失败的提示这里。一个跳转的后面紧接着就是注册成功和注册失败的提示,所以我们现在就可以基本确定了,那个跳转的作用就是针对真假注册码比较的结果来做出不同的反应。具体来说就是当两个注册码相等时就按顺序执行注册成功的代码,当注册码不相等时就通过跳转来到这里并执行代码,然后告诉我们注册失败。很明显,这就是一个所谓的“关键跳”。对于关键跳的处理,无非就是采用修改代码的方法进行“暴破”。如果使用“暴破”方法那就没有什么新意了,究竟这个奇妙的方法神奇在哪里呢?我们一步一步来,先在这里下一个断点,位置就选在第一段代码中的那个跳转上。
0040133C /75 15 jnz short 00401353 ;就在这句代码上设置断点
设置好了断点,重新用OD载入一遍程序,并且让程序在OD中运行起来。同样,还是任意输入一组注册名和注册码,按下“确定”,程序就被中断了。
一般来说,在这里就要修改跳转实现爆破,或是在内存中寻找注册码的身影了。但是,我们说过了本文中说到的方法,即不用改跳转也不费劲的寻找注册码,究竟怎么去做呢?
让我们把注意力重新转移到OD上来,现在大家注意OD的寄存器窗口(就是右上角的那个窗口),注意观察一下里面寄存器的情况,把需要用的复制出来。一般经常用到的EAX、EBX我们就不管了,只用关心下面这段寄存器中数值的情况。
C 1 ES 0023 32位 0(FFFFFFFF)
P 1 CS 001B 32位 0(FFFFFFFF)
A 0 SS 0023 32位 0(FFFFFFFF)
Z 0 DS 0023 32位 0(FFFFFFFF)
S 1 FS 003B 32位 7FFDF000(FFF)
T 0 GS 0000 NULL
我们把注意力放在第四行上,即:“Z 0 DS 0023 32位 0(FFFFFFFF)”这一行。现在一切都用最简单的语言来描述,因为这里的东西会涉及到很多内容,很容易搞混,所以一切从简。简单的说,我们看到第一个字母是Z,后面跟着一个数字0,关键的地方就在这里了。用鼠标在OD中单击这个数字0选中它,然后再单击右键选择“置1”,修改后这句代码就变成了“Z 1 DS 0023 32位 0(FFFFFFFF)”。大家可能还会说,这没有什么奇妙的地方呀,别急,再按下F9让程序运行起来,看看是不是弹出了注册成功的提示了?我们既没有修改跳转,也没有寻找注册码,但是同样达到了破解的目的。是不是很方便很快捷呢
一般来说,对于软件的破解无非也就是两种主要方法,一种是修改代码暴力破解,另一种则是想办法找到软件的注册码。今天在这里我要为大家介绍一种很奇妙的方法,只用动动鼠标就可以轻松地实现破解的目的,就暂且叫它做“鼠标破解法”吧。说到这里大家肯定很想知道这个方法究竟是怎样实现对程序进行破解的目的的,下面我们就用一个Crackme来给大家演示一下这个奇妙的方法。
用OD打开这个Crackme(没有加壳,可直接用OD载入),对付这些简单的Crackme最有效的办法就是寻找关键字符串。打开OD的字符串查找功能看看有没有可用的重要注册信息。果然,程序中出现的所有字符串一目了然,选择一个注册成功的提示并双击,就来到了对应的代码处,代码非常整齐也很简单。
0040133C /75 15 jnz short 00401353
0040133E |6A 00 push 0
00401340 |68 62344000 push 00403462 ;key/crackme #2
00401345 |68 B8344000 push 004034B8 ;good job, i wish you the very best
这段代码对于破解工作来说,没有什么实际的意义,但我们可以看出第一句代码是一个跳转,这个跳转是干什么用的呢?我们去它的目的地“00401353”看看。按快捷键CtrL+G打开对话框,输入地址“00401353”,就来到了下面的代码处。
0040133C /75 15 jnz short 00401353
0040133E |6A 00 push 0
00401340 |68 62344000 push 00403462 ;key/crackme #2
00401345 |68 B8344000 push 004034B8 ;good job, i wish you the very best
原来,来到了注册失败的提示这里。一个跳转的后面紧接着就是注册成功和注册失败的提示,所以我们现在就可以基本确定了,那个跳转的作用就是针对真假注册码比较的结果来做出不同的反应。具体来说就是当两个注册码相等时就按顺序执行注册成功的代码,当注册码不相等时就通过跳转来到这里并执行代码,然后告诉我们注册失败。很明显,这就是一个所谓的“关键跳”。对于关键跳的处理,无非就是采用修改代码的方法进行“暴破”。如果使用“暴破”方法那就没有什么新意了,究竟这个奇妙的方法神奇在哪里呢?我们一步一步来,先在这里下一个断点,位置就选在第一段代码中的那个跳转上。
0040133C /75 15 jnz short 00401353 ;就在这句代码上设置断点
设置好了断点,重新用OD载入一遍程序,并且让程序在OD中运行起来。同样,还是任意输入一组注册名和注册码,按下“确定”,程序就被中断了。
一般来说,在这里就要修改跳转实现爆破,或是在内存中寻找注册码的身影了。但是,我们说过了本文中说到的方法,即不用改跳转也不费劲的寻找注册码,究竟怎么去做呢?
让我们把注意力重新转移到OD上来,现在大家注意OD的寄存器窗口(就是右上角的那个窗口),注意观察一下里面寄存器的情况,把需要用的复制出来。一般经常用到的EAX、EBX我们就不管了,只用关心下面这段寄存器中数值的情况。
C 1 ES 0023 32位 0(FFFFFFFF)
P 1 CS 001B 32位 0(FFFFFFFF)
A 0 SS 0023 32位 0(FFFFFFFF)
Z 0 DS 0023 32位 0(FFFFFFFF)
S 1 FS 003B 32位 7FFDF000(FFF)
T 0 GS 0000 NULL
我们把注意力放在第四行上,即:“Z 0 DS 0023 32位 0(FFFFFFFF)”这一行。现在一切都用最简单的语言来描述,因为这里的东西会涉及到很多内容,很容易搞混,所以一切从简。简单的说,我们看到第一个字母是Z,后面跟着一个数字0,关键的地方就在这里了。用鼠标在OD中单击这个数字0选中它,然后再单击右键选择“置1”,修改后这句代码就变成了“Z 1 DS 0023 32位 0(FFFFFFFF)”。大家可能还会说,这没有什么奇妙的地方呀,别急,再按下F9让程序运行起来,看看是不是弹出了注册成功的提示了?我们既没有修改跳转,也没有寻找注册码,但是同样达到了破解的目的。是不是很方便很快捷呢