破解Easy Video to 3GP Converter注册码
被害者:Easy Video to 3GP Converter 1.4.2
工具:FastScanner(查壳工具) OllyDbg(调试器)
作案者:Xelloss
之前也看了不少教程,自己也尝试过,但运气不好,找来的软件都是网络注册的,本地破不了 。这次总算是找到个正常的了...
首先先打 卡软件点Register,在User Name里我们填上这边要注册的名字(我填的Xelloss),在Registration Code里随便填一点东西(我填了fark)。点OK之后弹出了“Invalid user name or registeration code”。
接下来对软件用OD进行调试。在里面搜索 ACSII,输入关键字“Invalid user name or registeration code”找到一条Enter进行追踪,调查立即参数,发现只有一个地址,不用管它。接下来光标往上移一点发现
004060A5 > \6A
40
push
40
是被00405FC0 .
/0F85 DF000000 jnz
004060A5
从老远跳过来的。
锁定那个jnz,看看它的周围
00405FA9 . 8D8424
880000>lea
eax, dword ptr
[esp+88]
00405FB0 . 8D4C24
48 lea
ecx, dword ptr
[esp+48]
00405FB4 . 50
push
eax
00405FB5 . 51
push
ecx
00405FB6 . E8 35F8FFFF
call
004057F0
00405FBB
. 83C4
08
add
esp, 8
00405FBE . 85C0
test
eax, eax
00405FC0
. 0F85
DF000000 jnz
004060A5
00405FC6
> 8A4C04 08
mov
cl, byte ptr
[esp+eax+8]
00405FCA . 8888 98964100
mov byte
ptr [eax+419698], cl
00405FD0
. 40
inc
eax
00405FD1 . 84C9
test
cl, cl
00405FD3
.^ 75
F1
jnz short
00405FC6
00405FD5
. 33C0
xor
eax, eax
00405FD7
> 8A4C04 48
mov
cl, byte ptr
[esp+eax+48]
00405FDB . 8888 50924100
mov byte
ptr [eax+419250], cl
我们可以看
出00405FB6 . E8 35F8FFFF
call
004057F0
是关键点。
在00405FA9 . 8D8424
880000>lea
eax, dword ptr
[esp+88]
上按F2下个断点按F9运行程序,注册,输入Name和Code后OK,OllyDBG
跳了出来,暂停在我们下的断点处。看信息窗口
Stack
address=0012A310,
(ASCII "7E87237D")
eax=00000001
这东西一会儿有用。F8单步一次后可以看到信息窗口里我们刚刚输入的信息:
Stack
address=0012A2D0,
(ASCII "fark")
ecx=77A7E910 (ntdll.77A7E910)
也就是我们输入的Code。根据经验可以看出这儿准备要比对注册码。继续F8单步。
走到00405FB6 . E8 35F8FFFF
call
004057F0
这步,按F7跟进去。我们看到的是这么一段函数:
004057F0 /$ 53
push
ebx
004057F1 |.
8B5C24 08
mov
ebx, dword ptr
[esp+8]
004057F5 |.
56
push
esi
004057F6 |.
57
push
edi
004057F7 |.
8BFB
mov
edi, ebx
004057F9 |.
83C9 FF
or
ecx, FFFFFFFF
004057FC |.
33C0
xor
eax, eax
004057FE |.
33D2
xor
edx, edx
00405800 |.
F2:AE
repne scas byte ptr
es:[edi]
00405802 |.
F7D1
not
ecx
00405804 |.
49
dec
ecx
00405805 |.
85C9
test
ecx, ecx
00405807 |.
7E
15
jle short
0040581E
00405809
|> 8A041A
/mov
al, byte ptr
[edx+ebx]
0040580C |.
3C
61
|cmp
al, 61
0040580E
|.
7C
09
|jl
short 00405819
00405810
|.
3C
7A
|cmp
al, 7A
00405812
|.
7F
05
|jg
short 00405819
00405814
|.
2C
20
|sub
al, 20
00405816
|.
88041A
|mov byte
ptr [edx+ebx], al
00405819 |> 42
|inc
edx
0040581A |.
3BD1
|cmp
edx, ecx
0040581C |.^
7C EB
\jl short
00405809
0040581E
|> 8B7424 14
mov
esi, dword ptr
[esp+14]
00405822 |.
8BC3
mov
eax, ebx
00405824 |> 8A10
/mov
dl, byte ptr
[eax]
00405826 |.
8A1E
|mov
bl, byte ptr
[esi]
00405828 |.
8ACA
|mov
cl, dl
0040582A |.
3AD3
|cmp
dl, bl
0040582C |.
75
20
|jnz short
0040584E
0040582E
|.
84C9
|test
cl, cl
00405830 |.
74
16
|je
short 00405848
00405832
|.
8A50
01
|mov
dl, byte ptr
[eax+1]
00405835 |.
8A5E
01
|mov
bl, byte ptr
[esi+1]
00405838 |.
8ACA
|mov
cl, dl
0040583A |.
3AD3
|cmp
dl, bl
0040583C |.
75
10
|jnz short
0040584E
0040583E
|.
83C0
02
|add
eax, 2
00405841
|.
83C6
02
|add
esi, 2
00405844
|.
84C9
|test
cl, cl
00405846 |.^
75 DC
\jnz short
00405824
00405848
|> 5F
pop
edi
00405849 |.
5E
pop
esi
0040584A |.
33C0
xor
eax, eax
0040584C |.
5B
pop
ebx
0040584D |.
C3
retn
0040584E |> 1BC0
sbb
eax, eax
00405850 |.
5F
pop
edi
00405851 |.
5E
pop
esi
00405852 |.
5B
pop
ebx
00405853 |.
83D8 FF
sbb
eax, -1
00405856
\.
C3
retn
继续单步。经过分析可以发现前面只是在检验注册码的合法性和大小写转换。接下来是重点。
0040581E |> \8B7424 14
mov
esi, dword ptr
[esp+14]
00405822 |.
8BC3
mov
eax, ebx
00405824 |> 8A10
/mov
dl, byte ptr
[eax]
00405826 |.
8A1E
|mov
bl, byte ptr
[esi]
00405828 |.
8ACA
|mov
cl, dl
0040582A |.
3AD3
|cmp
dl, bl
0040582C |.
75
20
|jnz short
0040584E
0040582E
|.
84C9
|test
cl, cl
00405830 |.
74
16
|je
short 00405848
00405832
|.
8A50
01
|mov
dl, byte ptr
[eax+1]
00405835 |.
8A5E
01
|mov
bl, byte ptr
[esi+1]
00405838 |.
8ACA
|mov
cl, dl
0040583A |.
3AD3
|cmp
dl, bl
0040583C |.
75
10
|jnz short
0040584E
0040583E
|.
83C0
02
|add
eax, 2
00405841
|.
83C6
02
|add
esi, 2
00405844
|.
84C9
|test
cl, cl
00405846 |.^
75 DC
\jnz short
00405824
一边单步以
便注意信息窗口和寄存器窗口。这步0040581E
|> \8B7424 14
mov
esi, dword ptr
[esp+14]
将一个ASCII为“7E87237D”的值移入esi之后的循环就是将这个值和我们输入的Code一位一位地
比较,一旦不等就跳走,函数返回code错误。根据这个,我们可以知道我们的注册码就是那个ASCII码
值“7E87237D”。接下来禁用掉刚刚下的断点,F9重新运行,注册,输入Name
Xelloss,Code 7E87237D。点OK,显示“This copy is licensed
to:Xelloss”注册成功~
查看帮助关于信息: