- 实验目的和要求
研究软件注册机制,利用OD等工具破解U盘监控器、Free Internet Window Washer,绕过或发现注册码,达到注册成功目的。
2. 实验步骤
1、U盘监控器注册破解
U 盘监控器需要注册才能使用全部功能,我们的任务是使得输入任何注册码均能注册成功 。通常在注册时,程序会读取注册码,然后对注册码进行判 断: 正确则显示注册成功,转到正常的程序运行状态:错误则显示注册失败 ,转到未注册运行状态。
运行软件,获得与破解有关的信息;
运行usb软件,随意输入一个注册码;提示注册失败;把usb.exe文件放进winhex中;进入选项
寻找注册失败字符串地址;其偏移地址为00081A79H
![](https://img-blog.csdnimg.cn/img_convert/ee178123213b1c3bb95bc80356d053f9.png)
使用 OD 获取引用该字符串的指令在内存中的地址;
内存地址=文件地址+偏移地址=0x400000+0x081A79=0x481A79;
在OD中的1区右键搜索>>常数;输入0x481A79;定位到指令所在内存地址;
![](https://img-blog.csdnimg.cn/img_convert/d34544ce77f7014a1106e2235dbbc75b.png)
使用W32DASM获得判断语句的位置;
从下网上查看静态分析代码,发现以下携带提示信息字符串地址的指令;判断处这附近指令的代码功能是完成MessageBoxA函数;即显示错误提示信息;这个提示信息告诉我们谁调用了显示错误信息的代码
![](https://img-blog.csdnimg.cn/img_convert/380276e88567aa224dd159cabbfa46e0.png)
查找到该地址的位置,发现它是一个分支语句:jg;即大于则跳转;其相反指令是J1;与我们要查找使其判断条件相反思路相一致;
![](https://img-blog.csdnimg.cn/img_convert/861e8a152f2e9fca7b3e35423983481f.png)
下面则需要修改jg为jl;并把其他设置成NOP填充;
![](https://img-blog.csdnimg.cn/img_convert/d51bf40162ccc84c278665d8231c9993.png)
![](https://img-blog.csdnimg.cn/img_convert/94e39990c08c09955a94930d36638f47.png)
保存可执行文件到同一目录文件下,最后重新启动修改后的可执行文件;随意输入注册码,发现注册成功!
![](https://img-blog.csdnimg.cn/img_convert/6ede3ce4c27770ee1208a6596aeeb50b.png)
1.5、使用OD修改指令字节码。
![](https://img-blog.csdnimg.cn/img_convert/dec11fe11a3e4b20fb04defa45dd7457.png)
如果我们将判断转移条件更改一下,错误则转到正常的运行状态,反之则转到来注册的运行状态 。这样,如果我们输入了错误的注册号,程序也会像输入了正确的注册号 一样运行,流程 如图所示。
破解是将指令代码更改为什么?并加以说明。
尝试找到正确的注册码。
破解将指令代码jg 改为jl ;因为jg 在汇编语言里是:如果大于则跳转,则其相反的指令应该是jl。将jg 更改为jl,使其判断条件相反,达到破解目的。
2、Free Internet Window Washer注册破解
2.1、运行安装软件FIWWSetup2.9.exe,找到安装文件夹;
2.2、查壳:使用PEID工具检验是否加壳;
由PEID工具检验得知Free Internet Window Washer未加壳
![](https://img-blog.csdnimg.cn/img_convert/b6074ccc353ef6052cf20b9a2d66c302.png)
2.3、注册,发现报错字符串;
打开文件进行注册;发现注册码报错:
![](https://img-blog.csdnimg.cn/img_convert/fbe30d6cc1114d08f1394771b12a98e0.png)
在文件目录下找到Wlan_Chinese.ini文件并打开;搜索注册失败的报错字符串位置。
![](https://img-blog.csdnimg.cn/img_convert/54abadde1580ff8b64e5948a08360db7.png)
![](https://img-blog.csdnimg.cn/img_convert/05387659e7b8fadb0f03de929ebc2c7f.png)
2.4、输入错误注册码,调试跟踪,发现注册判断代码位置;
(1)、搜索>> 二进制字符串 进行字符串查找搜索定位错误注册码地址
![](https://img-blog.csdnimg.cn/img_convert/a1d65208245e1ab0e3be739812c15f91.png)
![](https://img-blog.csdnimg.cn/img_convert/371c4a14ed44c9e9896b3d4c9ab621fe.png)
(2)、查找到函数头部004D3874并F2设置断点,进行动态调试
![](https://img-blog.csdnimg.cn/img_convert/ebcb57457d20d345c9206f926af61f91.png)
2.5、使用OD修改指令字节码;
(1)、按下F9运行程序,程序运行后用错误注册码进行注册;
![](https://img-blog.csdnimg.cn/img_convert/95bc514bf6241ea1dc2d348f0864f70a.png)
(2)、按F8进行单步调试,直到出现自己设置的错误注册码停下
(3)、找到注册算法的位置,并双击进行修改;
![](https://img-blog.csdnimg.cn/img_convert/8220a28fb32cd84a3ae1a1eed3d612b0.png)
(4)、修改成功后,保存可执行文件到同一目录文件夹下;再把桌面已运行的关掉;打开修改过的新的exe文件;