大概讲一下,不敢保证全对!还请高手指教!如果哪位可以写出注册机,希望贴出来,大家研究研究! (4千字)
大概讲一下,不敢保证全对!还请高手指教!如果哪位可以写出注册机,希望贴出来,大家研究研究!首先输入如下信息:First name:abcd
Last name:efghi
Registeration code:1234567890(任意)
:00409659 8D8530FFFFFF lea eax, dword ptr [ebp+FFFFFF30]
:0040965F E824310700 call 0047C788 **小写转大写
:00409664 33F6 xor esi, esi
:00409666 8D9D30FFFFFF lea ebx, dword ptr [ebp+FFFFFF30]
:0040966C EB24 jmp 00409692
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004096A1(C)
|
:0040966E 0FBE03 movsx eax, byte ptr [ebx] ***这里是真正开始对你的信息进行计算!
:00409671 99 cdq
:00409672 52 push edx
:00409673 50 push eax
:00409674 8B45F8 mov eax, dword ptr [ebp-08]
:00409677 8B55FC mov edx, dword ptr [ebp-04]
:0040967A E8512B0800 call 0048C1D0 **这里就是了!按F8进入
:0040967F 8945F8 mov dword ptr [ebp-08], eax
:00409682 8955FC mov dword ptr [ebp-04], edx
:00409685 0FBE4301 movsx eax, byte ptr [ebx+01]
:00409689 99 cdq
:0040968A 0145F8 add dword ptr [ebp-08], eax
:0040968D 1155FC adc dword ptr [ebp-04], edx
:00409690 46 inc esi
:00409691 43 inc ebx
:00409692 8D8D30FFFFFF lea ecx, dword ptr [ebp+FFFFFF30]
:00409698 51 push ecx
:00409699 E87EB90700 call 0048501C **计算需要循环的次数,如果没有错的话应该是你first name+last name的长度。
:0040969E 59 pop ecx
:0040969F 3BF0 cmp esi, eax
:004096A1 7CCB jl 0040966E
计算开始:
* Referenced by a CALL at Addresses:
|:0040967A , :004889FC
:0048C1D0 52 push edx
:0048C1D1 50 push eax
:0048C1D2 8B442410 mov eax, dword ptr [esp+10]
:0048C1D6 F72424 mul dword ptr [esp]
:0048C1D9 8BC8 mov ecx, eax
:0048C1DB 8B442404 mov eax, dword ptr [esp+04]
:0048C1DF F764240C mul [esp+0C]
:0048C1E3 03C8 add ecx, eax
:0048C1E5 8B0424 mov eax, dword ptr [esp]
:0048C1E8 F764240C mul [esp+0C]
:0048C1EC 03D1 add edx, ecx
:0048C1EE 59 pop ecx
:0048C1EF 59 pop ecx
:0048C1F0 C20800 ret 0008
对其算法看了一下,也没太看懂,大概过程如下:
如果输入abcd,公式是X=((((a+a)*a+b)*b+c)*c+d)*d,然后对last name计算,这部分好像也是一个公式。
得初的数被24(十六进制)除,余数小于A的加上30,大于的加上F6。如下程序所示:
|:0048C992(C)
|
:0048C976 4B dec ebx
:0048C977 8A03 mov al, byte ptr [ebx]
:0048C979 3C0A cmp al, 0A **比较余数
:0048C97B 7D08 jge 0048C985
:0048C97D 83C030 add eax, 00000030 **变成数字
:0048C980 8806 mov byte ptr [esi], al **当然了这里就是存放注册码的位置了!呵呵....被发现了!
:0048C982 46 inc esi
:0048C983 EB08 jmp 0048C98D
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0048C97B(C)
|
:0048C985 02451C add al, byte ptr [ebp+1C]
:0048C988 04F6 add al, F6
:0048C98A 8806 mov byte ptr [esi], al
:0048C98C 46 inc esi
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0048C974(U), :0048C983(U)
|
:0048C98D 8D55BC lea edx, dword ptr [ebp-44]
:0048C990 3BDA cmp ebx, edx
:0048C992 75E2 jne 0048C976 **小循环
注意了!程序中有两处这样的程序段,一个是验证我们输入的注册信息是否正确的,一个就是下一次启动时对注册表中的信息进行确定的程序段!键值HKEY_CURRENT_USER\Software\VKN Electronics\Popfix\Registration
好了!谁来写个注册机?在49fdf4处可以看到注册码
我的注册信息:
First name: 小球[CCG]
Last name:china crack group
Registeration code:EIV55OQ5R4ZK
