Crackme030

Crackme030 的逆向分析 

1.程序观察

 
程序刚打开的界面是空白的,只有两个按钮。
 
点击 File,里面有个 Password 按钮,点击才会出现输入密码的界面

2.简单查壳

 

没有壳。

 

3.程序分析

 因为程序是使用 VB5 编写的,所以我们先使用 VB Decompiler 加载程序看一下

 可以看到,程序有3个面板,6个点击事件。地址 4030F0 处的代码可能就是我们需要的。

 然后使用 OD 载入程序,搜索字符串

进入代码处,可以看到上方不远处有一个比较函数

运行到此处,查看函数的参数

 

第一个参数本应该是我们输入的密码才对,我在此输入的是 123456,但现在却是一些莫名其妙的符号。
第二个参数应该就是正确的密码。

因为第一个参数不是我们原本输入的密码,所以我们猜想程序可能对我们输入的密码进行了一些处理之后,才进行的比较。所以我们要对上面的字符串进行相应的逆处理,才能得到真正的密码。

来到代码开头,也就是上面看到的地址 4030F0 处,下断点,运行程序

 程序首先获取输入的密码,然后求得密码的长度

然后建立循环,循环次数为密码的长度。在循环中,程序每次取输入密码的一个字符,求得其 ASCII 值。然后依次和字符串 "2000" 的单个字符的 ASCII 值进行异或运算。也就是说,密码的第一个字符的 ASCII 值和 2 的 ASCII 值进行异或运算,密码的第二个字符对应 0进行运算,密码的第5个字符又再次和 2相对应进行运算。

 

 循环完成之后,才会进行比较

根据其方法,我们可以反推出其真正的密码

我们将字符串"qBQSYdXUe_BV"再一次和字符串"2000"进行异或运算即可

 

相关文件在我的 Github 

原文地址:https://www.cnblogs.com/white-album2/p/11712249.html