文件密使2.1破解及注册算法,请伪哥帮忙些个机! (4千字)
目标软件:文件密使2.1破解人 :TAE![CCG BCG FCG]
保护方法:注册码
下载地址:http://newhua.infosail.com/down/jiami.exe
前面的步骤不再敷述,下面是重点!
跟踪到这里:
:00415C85 E80E4E0000 Call 0041AA98
:00415C8A 8D8E50160000 lea ecx, dword ptr [esi+00001650]
:00415C90 E82BC3FFFF call 00411FC0 \\进入
:00415C95 85C0 test eax, eax
:00415C97 752E jne 00415CC7
:00415C99 6A40 push 00000040
* Possible Reference to Dialog:
|
:00415C9B 6890814200 push 00428190
* Possible StringData Ref from Data Obj ->"注册码错误,请重新输入"
|
:00415CA0 68288F4200 push 00428F28
:00415CA5 8BCB mov ecx, ebx
下面是第一段:
:0041204A 8A1C0F mov bl, byte ptr [edi+ecx]
:0041204D 8D340F lea esi, dword ptr [edi+ecx]
:00412050 8BC3 mov eax, ebx
:00412052 25FF000000 and eax, 000000FF
:00412057 99 cdq
:00412058 F7F9 idiv ecx
:0041205A 8BD0 mov edx, eax
:0041205C 8AC3 mov al, bl
:0041205E F6E9 imul cl
:00412060 02D0 add dl, al
:00412062 41 inc ecx
:00412063 83F920 cmp ecx, 00000020
:00412066 88142E mov byte ptr [esi+ebp], dl
:00412069 7CDF jl 0041204A
这段程序是算第一个数据串依次放入了esi+ebp,待会说说它的算法!下面会用到。
:0041206B 8B6C2410 mov ebp, dword ptr [esp+10]
:0041206F 33FF xor edi, edi
:00412071 33F6 xor esi, esi
:00412073 8BC6 mov eax, esi
:00412075 33C9 xor ecx, ecx
:00412077 99 cdq
:00412078 83E203 and edx, 00000003
:0041207B C6443C1000 mov [esp+edi+10], 00
:00412080 03C2 add eax, edx
:00412082 C1F802 sar eax, 02
:00412085 8D440414 lea eax, dword ptr [esp+eax+14]
再看下面这里:
又一个循环!
:00412089 8A1408 mov dl, byte ptr [eax+ecx]
:0041208C 8A5C3C10 mov bl, byte ptr [esp+edi+10]
:00412090 32DA xor bl, dl
:00412092 41 inc ecx
:00412093 83F908 cmp ecx, 00000008
:00412096 885C3C10 mov byte ptr [esp+edi+10], bl
:0041209A 7CED jl 00412089 \\内层的小循环
将上面得到的数据和用户名连接进行计算!
:0041209C 83C620 add esi, 00000020 \\大循环每循环一次esi+20
:0041209F 47 inc edi
:004120A0 81FE80000000 cmp esi, 00000080 \\也就是循环4次喽!
:004120A6 7CCB jl 00412073 \\外面一层大循环!
经过以上四次大循环可以得到四个数值!
:004120AE 33C9 xor ecx, ecx
:004120B0 8A4C040C mov cl, byte ptr [esp+eax+0C]
:004120B4 03E9 add ebp, ecx
:004120B6 85C0 test eax, eax
:004120B8 7406 je 004120C0
:004120BA C1E508 shl ebp, 08
:004120BD 48 dec eax
:004120BE 79EE jns 004120AE
这里试讲算出的四个数值连接起来放入ebp,于是这个ebp中数的10进制值就是正确的注册码了!
:004120C0 8B542444 mov edx, dword ptr [esp+44]
:004120C4 8D4C2440 lea ecx, dword ptr [esp+40]
:004120C8 2BEA sub ebp, edx
:004120CA C7442438FFFFFFFF mov [esp+38], FFFFFFFF
:004120D2 F7DD neg ebp
:004120D4 1BED sbb ebp, ebp
:004120D6 45 inc ebp
:004120D7 8BF5 mov esi, ebp
注册算法:
姓名以“1234”为例,有4个字符,用名字的最后一个字符
0x34/4=0xD
0x34*4=0xD0
0xD0+0xD=0xDD//数据串中的第一个数
然后就是用
0xDD/5=0x2C
0xDD*5=0xFF51
0x51+0x2C=0x7D//数据串中的第二个数
算出20个数后,将名字和这20个数连接起来形成"31323334DD7D020E7105322AFBD282EE20F0E0AC871"
0x31^0=0x31
0x31^0x32=03
03^0x33=30
做8次这样的操作以后得到一个数0xA8
外面的大循环做4次,于是得到四个数0xA8、0xE0、0x3E、0x00,将四个数反相连接起来得到3EE0A8,
这就是注册码的16进制数,那么将它换算成十进制就是正确的注册码了!
一个可用的注册码!
用户名:TAE![CCG]
注册码:45677
我的注册机已经写了一大半了,可是有些实现为程序的细节不太清楚,所以请伪装者大哥给写个注册机,
好让我学协!多谢了!!
