破解程序:
SmartCheck 5.0安装程序
破解工具:
ISDCC 1.0
破解者:
chcw
现在,有许多程序使用Install Shield来制作它们的安装程序,而且在安装
时就要求输入注册码。这一类程序的注册过程主要是由Install Shield来控制的,
Install Shield将其安装过程的信息存放在编译后的脚本文件Setup.ins中。因此,
只需要对Setup.ins文件进行反编译,即可洞悉Install Shield的整个安装过程。
ISDCC就是这样一个反编译工具,它能反编译Install Shield 5.1以下版本生
成的所有的脚本程序。下面以SmartCheck 5.0的安装程序为例,介绍如何利用该
工具,实现注册码的破解。
1. 用ISDCC对Install Shield的安装脚本Setup.ins进行反编译,并将结果保存在
Setup.tmp文件中:
ISDCC Setup.ins > Setup.tmp
2. 在Install Shield的安装程序中,字符串比较函数是StrCompare()。用Ultra Edit
打开Setup.tmp文件,查找串"StrCompare"。
3. 在label140处,我们发现了一句可能是比较注册码的语句:
label140:
StrCompare(lString0, "002082840001");
lNumber1 = LAST_RESULT = 0;
if (lNumber1 = 0) then
goto label141;
endif;
return(1);
4. 在该部分程序的上面,还有一些产生lString0的语句:
label139:
StrSub(lString1, pString0,
0, 4); <-取pString0中子串, 从0开始,长为4
StrSub(lString2, pString0,
5, 6); <-取pString0中子串, 从5开始,长为6
StrSub(lString3, pString0,
12, 2); <-取pString0中子串, 从12开始,长为2
lString6 = lString1 + lString2;
lString0 = lString6 + lString3;
StrFind(lString0, "-");
<-查找字符'-'
lNumber1 = LAST_RESULT >= 0;
if (lNumber1 = 0) then
goto label140;
endif;
return(0);
5. 由于反编译后的语句几乎与高级语言完全相同,因此我们很容易猜想出label139段程序
的功能,并得到pString0的形式为:
"0020-828400-01"
6. 在安装过程中输入Serial="0020-828400-01",注册顺利通过。
- 标 题:我的破解心得(12) (1千字)
- 作 者:chcw
- 时 间:2001-3-13 18:13:43
- 链 接:http://bbs.pediy.com