首页
论坛
专栏
课程

菜鸟首次破解的过程记录--希望对新人有帮助

2006-4-3 14:14 8363

菜鸟首次破解的过程记录--希望对新人有帮助

2006-4-3 14:14
8363
刚开始学习破解,这是首次破解的过程记录,希望对刚开始的朋友能有所帮助。

操作系统:win98
破解对象:日语老师V1.0
软件介绍:该软件为日语教学软件,共24课,未注册版本只能学习第一课的内容。安装该软件后,有一个独立的exe程序,名称"注册日语老师.exe"。

1、peid查壳->无壳,编程语言vb5/6。

2、动态找注册码:
TRW2000加载"注册日语老师.exe",注册界面上有两个edit框,上面一个已经自动填写了"F78EE074"(硬盘序号)。在下面的edit框填写假码"12345678",^N调出TRW下断点 __vbastrcomp,F5返回应用程序点注册按钮,TRW拦下,pmodule至程序领空,很幸运,注册码"A17EZPIH"存放在寄存器EAX中。

3、静态暴破:
⑴、使用w32dasm加载"注册日语老师.exe",在串式参考里都是乱码,我不知道有什么方法可以显示出乱码,我当时的考虑是这些乱码与有意义的字符串在字节数上是否有对应关系,乱码中的"桁?x.Ncknx!"是与"注册码不正确!"在字串长度上唯一可以对应的,反汇编的代码显示405A33处调用了"桁?x.Ncknx!",向上查找这个假定的"注册失败模块"是由40593D处的跳转而来。将40593D处的代码"je 00405A03"给NOP掉就可以了。

⑵、使用OD也可以实现上述过程:
前面重复的过程省略
相关代码段:
00405919 . FF15 88104000 call [<&MSVBVM60.__vbaStrCmp>] ; MSVBVM60.__vbaStrCmp                             //很熟悉的字串比较
......
0040593D . /0F84 C0000000   je 00405A03          //关键跳转

//不跳转:
00405943 . 8B0F   mov ecx, [edi]
......
004059AD . C785 3CFDFFFF>mov  dword ptr [ebp-2C4], 00401F84
查看内存401F84处
乱码:桁?b?,.?sQ?.0邋??^ 0T?板/Tㄒ!
对应:注册成功,请关闭《日语老师》后重新启动!          //长度不一致是由于逗号处使用了宽字符

//跳转:
00405A03 > \8B35 24114000 mov esi, [<&MSVBVM60.__vbaVarDup>] ; MSVBVM60.__vbaVarDup
......
00405A33   .  C785 2CFDFFFF>mov     dword ptr [ebp-2D4], 00401FB4
查看内存401FB4处
乱码:桁?x.Ncknx!
对应:注册码不正确!

把40593D开始的0F84 C0000000 改成9090 90909090 (即NOP) 破解版就完成了。

4、内存注册机:
有了OD很清晰的分析,制作内存注册机应该没有难度了。
使用keymake->其他->内存注册机。
中断地址列表部分
中断地址:405919
中断次数:1
第一字节:FF
指令长度:10
注册码部分
内存方式->寄存器EAX->宽字符串
ok!生成内存注册机!

5、关于算法:
确实跟踪注册算法是最耗时耗力的工作,但只要细致和坚持是可以做到的。
该注册算法解释如下:

第一步:计算出一个"变异码"(不知道应该用什么词来命名),变异码的计算过程为硬盘序号最后一个字符的ASCII减去第一个字符的ASCII,如果结果>=0,那么该数字就是变异码,否则就用最后一个字符的ASCII减去第三个字符的ASCII(结果值可以为负数)。

第二步:将硬盘序号的每一位分别与变异数取和。

第三步:第二步的结果按位数分别计算,第一位-1;第二位-2;第三位+3;第四位+4;第五位+25(5的平方);第六位+36(6的平方);第七位+10;第八位+11。

第四步:把第三步的结果当作ASCII值,然后转换为对应的数字或者字母。如果某位的数值超出范围,则按照字串"nmQR22IH"填入对应的位置。

示例:
硬盘序号 F   7   8   E   E   0   7   4
ASCII    70  55  56  69  69  48  55  52      52-56=-4
第二步: 66  51  52  65  65  44  51  48
         -1  -2  +3  +4  +25 +36 +10 +11
第三步: 65  49  55  69  90  80  61  59      48~57(0~9) 65~90(A~Z)
第四步: A   1   7   E   Z   P
候补字串 n   m   Q   R   2   2   I   H
注册码: A   1   7   E   Z   P   I   H

第一次破解,第一次写破文,凡事都会有第一次,仅以此致和我一样刚开始起步的朋友,只是不知道我拙劣的表述是否能对你有所帮助?

2020安全开发者峰会(2020 SDC)议题征集 中国.北京 7月!

最新回复 (20)
thinkSJ 4 2006-4-3 14:52
2
0
沙发上学习!!
影武者 2006-4-3 14:55
3
0
还不错
楼主继续啊
andy00 4 2006-4-3 18:54
4
0
请求加精...........
kanxue 8 2006-4-3 20:08
5
0
一个新手能到这步不简单。
先设置精华,建议算法部分如何分析的补充一下,这篇文章才完整漂亮了。
playx 1 2006-4-3 20:11
6
0
新人应倍感亲和,真是一个学习的好地方。
ccman 2006-4-3 21:07
7
0
真羡慕长.空,第一个破解就这样成功了,我的都一个多月了还未出来
小小天童 2006-4-5 08:15
8
0
楼主能从乱码中的"桁?x.Ncknx!"推断出"注册码不正确!"在字串长度上唯一可以对应的,真不错,谢谢分享
nangua 2006-4-5 08:28
9
0
好!!!!!!!xuexi.....
xssllll 2006-4-5 08:41
10
0
真是一个学习的好地方
WAKU 7 2006-4-5 09:14
11
0
学习了
planting 2006-4-5 18:38
12
0
还没搞懂啥意思!
一头雾水!
蜀山逍遥 2006-4-5 21:15
13
0
虚心学习呀!!
k99992002 2006-4-5 21:37
14
0
最初由 长・空 发布
第一次破解,第一次写破文,凡事都会有第一次,仅以此致和我一样刚开始起步的朋友,只是不知道我拙劣的表述是否能对你有所帮助?

猛啊
ah007 2 2006-4-5 22:04
15
0
支持!
长・空 2 2006-4-28 17:12
16
0
啊! 今天是上来发第二篇破文的。
看到这个被加了精真开心,谢谢斑竹鼓励,谢谢大家支持。
无为道长 2006-4-28 17:34
17
0
明码比较啊,真幸运
花尽尘香 2006-4-28 19:00
18
0
看?要?呃?西?是要慢慢擦的!
放弃 2006-4-28 21:25
19
0
问下,文字乱码是如何整成正规汉字的?
roboter 2006-4-28 21:31
20
0
楼主辛苦了!菜鸟帮需要你这样的人啊!
菜儿 2006-4-28 22:32
21
0
最初由 长・空 发布
啊! 今天是上来发第二篇破文的。
看到这个被加了精真开心,谢谢斑竹鼓励,谢谢大家支持。


楼主辛苦了!菜鸟帮需要你这样的人啊!
游客
登录 | 注册 方可回帖
返回