GoldView32 2.0 build 168破解过程
【软件简介】是一个对文件的所在结构进行浏览的软件。就是能显示文件有关结
构和对象的相关信息,是一种只能显示不能修改的工具,对于不想 查询数据词典而想知道有关信息的人非常有用,能让人们安全浏览
文件。
【下载地址】http://newhua.infosail.com/Goldview.htm
【破解工具】Language2000、DeDe 3.0、Ollydbg 1.4
【文章作者】eCool[BCG][FCG][CNCG]
【出版时间】2002年1月24日
【郑重声明】转载请保持文章完整,谢谢。
很久没有搞破解了有点手痒,所以立马去华军一趟,随便选了个软件下载,结果就搞到了这个东东,安装完成后,运行,注册,原来是单Serial型的注册,看来有点困难,随便输入一个注册码,点Ok,出来一个错误对话框,呵呵,有戏看了。退出程序,立即用Language2000分析一下GoldView.exe,不错没有加壳,而且是DeDe的,so,用Dede分析一下,很快在Nag
Unit中找到个RegisterButtonClick,进入这个事件,来到这里:
* Reference to field TNagDlg.OFFS_0314
|
004E0626 8B9314030000 mov
edx, [ebx+$0314]
004E062C 8D45FC
lea eax, [ebp-$04]
|
004E062F E8B445F2FF call
00404BE8
004E0634 8B45FC
mov eax, [ebp-$04]
|
004E0637 E894F8FFFF call
004DFED0
004E063C 84C0
test al, al==》经典的比较啊,因此在4E0637处下断。
004E063E 743C
jz 004E067C
004E0640 8D55F4
lea edx, [ebp-$0C]
好的,马上运行Ollydbg,载入,运行,输入假注册码AB1234,然后在4E0637下断,点OK按钮,马上背拦下,按F7跟入。
004DFED0 55
push ebp
004DFED1 8BEC
mov ebp, esp
004DFED3 33C9
xor ecx, ecx
004DFED5 51
push ecx
004DFED6 51
push ecx
004DFED7 51
push ecx
004DFED8 51
push ecx
004DFED9 51
push ecx
004DFEDA 51
push ecx
004DFEDB 53
push ebx
004DFEDC 56
push esi
004DFEDD 8945FC
mov [ebp-$04], eax
004DFEE0 8B45FC
mov eax, [ebp-$04]
|
004DFEE3 E89C4EF2FF call
00404D84
004DFEE8 33C0
xor eax, eax
004DFEEA 55
push ebp
* Possible String Reference to: '閹B?脬奅鸮[嬪]脥@'
|
004DFEEB 68F5FF4D00 push
$004DFFF5
***** TRY
|
004DFEF0 64FF30
push dword ptr fs:[eax]
004DFEF3 648920
mov fs:[eax], esp
004DFEF6 C645FB00 mov
byte ptr [ebp-$05], $00
004DFEFA 8D55EC
lea edx, [ebp-$14]
004DFEFD 8B45FC
mov eax, [ebp-$04]
|
004DFF00 E8DB8EF2FF call
00408DE0==》取字符串"Goldview32"
004DFF05 8B55EC
mov edx, [ebp-$14]
004DFF08 8D45FC
lea eax, [ebp-$04]
|
004DFF0B E86C4AF2FF call
0040497C==》将"Goldview32"加上我们的注册码
004DFF10 8D45F0
lea eax, [ebp-$10]所以变成"Goldview32AB1234"
|
004DFF13 E8CC49F2FF call
004048E4==》转换成大写
004DFF18 8B45FC
mov eax, [ebp-$04]"GOLDVIEW32AB1234"
|
004DFF1B E87C4CF2FF call
00404B9C
004DFF20 8BD8
mov ebx, eax
004DFF22 EB01
jmp 004DFF25
004DFF24 4B
dec ebx
004DFF25 8B45FC
mov eax, [ebp-$04] -+
004DFF28 8A4418FF mov
al, byte ptr [eax+ebx-$01] |这段代码的作用是
004DFF2C 04D0
add al, -$30
|判断输入的注册码的
004DFF2E 2C0A
sub al, $0A
|最后几位是不是数字。
004DFF30 7304
jnb 004DFF36
|(最起码最后一位必须
004DFF32 85DB
test ebx, ebx
|是数字)
004DFF34 7FEE
jnle 004DFF24
-+
004DFF36 8D45F0
lea eax, [ebp-$10]
004DFF39 50
push eax
004DFF3A 8B45FC
mov eax, [ebp-$04]
|
004DFF3D E85A4CF2FF call
00404B9C
004DFF42 8BC8
mov ecx, eax
004DFF44 2BCB
sub ecx, ebx
004DFF46 8D5301
lea edx, [ebx+$01]
004DFF49 8B45FC
mov eax, [ebp-$04]
|
004DFF4C E8A34EF2FF call
00404DF4
004DFF51 8D45F4
lea eax, [ebp-$0C]
004DFF54 50
push eax
004DFF55 8B45FC
mov eax, [ebp-$04]
|
004DFF58 E83F4CF2FF call
00404B9C
004DFF5D 50
push eax
004DFF5E 8B45F0
mov eax, [ebp-$10]
|
004DFF61 E8364CF2FF call
00404B9C
004DFF66 59
pop ecx
004DFF67 2BC8
sub ecx, eax
004DFF69 BA01000000 mov
edx, $00000001
004DFF6E 8B45FC
mov eax, [ebp-$04]
|
004DFF71 E87E4EF2FF call
00404DF4
004DFF76 33F6
xor esi, esi
004DFF78 8B45F4
mov eax, [ebp-$0C]
|
004DFF7B E81C4CF2FF call
00404B9C
004DFF80 85C0
test eax, eax
004DFF82 7E4E
jle 004DFFD2
004DFF84 8B45F4
mov eax, [ebp-$0C]
|
004DFF87 E8104CF2FF call
00404B9C
004DFF8C 85C0
test eax, eax
004DFF8E 7E42
jle 004DFFD2
004DFF90 8B45F4
mov eax, [ebp-$0C]
|
004DFF93 E8044CF2FF call
00404B9C==》取去掉最后几位数字的字符
004DFF98 85C0
test eax, eax 这里是GOLDVIEW32AB
004DFF9A 7E1B
jle 004DFFB7
004DFF9C BB01000000 mov
ebx, $00000001
004DFFA1 8B55F4
mov edx, [ebp-$0C]
004DFFA4 0FB6541AFF movzx
edx, byte ptr [edx+ebx-$01]-+对GOLDVIEW32AB进行运算
004DFFA9 0FAFD3
imul edx, ebx
|s="GOLDVIEW32AB":y=0
004DFFAC 6BCB0B
imul ecx, ebx, $0B
|for i=1 to len(s)
004DFFAF 03D1
add edx, ecx
| x=asc(mid$(s,i,1))
004DFFB1 03F2
add esi, edx
| x=x*i
004DFFB3 43
inc ebx
| x=i*&hb+x
004DFFB4 48
dec eax
| y=y+x
004DFFB5 75EA
jnz 004DFFA1
-+next i
004DFFB7 8D55E8
lea edx, [ebp-$18]
004DFFBA 8BC6
mov eax, esi
|
004DFFBC E80395F2FF call
004094C4==》获得最后几位是数字的字符,这里是1234
004DFFC1 8B45E8
mov eax, [ebp-$18]==》eax=y=6100
004DFFC4 8B55F0
mov edx, [ebp-$10]==》edx=1234
|
004DFFC7 E8144DF2FF call
00404CE0==》比较是否相等
004DFFCC 7504
jnz 004DFFD2
004DFFCE C645FB01 mov
byte ptr [ebp-$05], $01
004DFFD2 33C0
xor eax, eax
004DFFD4 5A
pop edx
004DFFD5 59
pop ecx
004DFFD6 59
pop ecx
004DFFD7 648910
mov fs:[eax], edx
****** FINALLY
|
* Possible String Reference to: '奅鸮[嬪]脥@'
|
004DFFDA 68FCFF4D00 push
$004DFFFC
004DFFDF 8D45E8
lea eax, [ebp-$18]
004DFFE2 BA04000000 mov
edx, $00000004
|
004DFFE7 E81C49F2FF call
00404908
004DFFEC 8D45FC
lea eax, [ebp-$04]
|
004DFFEF E8F048F2FF call
004048E4
004DFFF4 C3
ret
004DFFF5 E98E42F2FF jmp
00404288
004DFFFA EBE3
jmp 004DFFDF
****** END
|
004DFFFC 8A45FB
mov al, byte ptr [ebp-$05]
004DFFFF 5E
pop esi
004E0000 5B
pop ebx
004E0001 8BE5
mov esp, ebp
004E0003 5D
pop ebp
004E0004 C3
ret
到此,我们可以得到一个合法的注册码是:AB6100.
- 标 题:班门弄斧之GoldView32 2.0 Build168算法分析 (8千字)
- 作 者:eCool[BCG]
- 时 间:2002-1-24 12:07:03
- 链 接:http://bbs.pediy.com