老文章档案 · 2003 年

文件分割器的算法

破解教程 · 算法分析 · 2003-08-15 · 作者:PowerBoy 人气: · 出处:赢政天下整理收藏)

软件介绍:一机一码性,注册成功后在注册表中写入标志。

下断点:HMEMCPY 按F12共12次来到下面。。。。。。。

:00483E54 8B45FC mov eax, dword ptr [ebp-04]----->机器码BN

:00483E57 8B15B8DE4800 mov edx, dword ptr [0048DEB8]--->输入的SN

:00483E5D E8C2000000 call 00483F24------------------->算法的关键CALL

:00483E62 84C0 test al, al--------------------->注册标志位AL=1时为注册

:00483E64 7429 je 00483E8F--------------------->跳就死

===========================================================================================

:00483F24 55 push ebp

:00483F25 8BEC mov ebp, esp

:00483F27 83C4F4 add esp, FFFFFFF4

:00483F2A 53 push ebx

:00483F2B 56 push esi

:00483F2C 57 push edi

:00483F2D 8955F8 mov dword ptr [ebp-08], edx

:00483F30 8945FC mov dword ptr [ebp-04], eax

:00483F33 8B45FC mov eax, dword ptr [ebp-04]

:00483F36 E8F5FFF7FF call 00403F30

:00483F3B 8B45F8 mov eax, dword ptr [ebp-08]

:00483F3E E8EDFFF7FF call 00403F30

:00483F43 33C0 xor eax, eax

:00483F45 55 push ebp

:00483F46 688C434800 push 0048438C

:00483F4B 64FF30 push dword ptr fs:[eax]

:00483F4E 648920 mov dword ptr fs:[eax], esp

:00483F51 33DB xor ebx, ebx

:00483F53 33F6 xor esi, esi

:00483F55 C645F700 mov [ebp-09], 00

:00483F59 8B45F8 mov eax, dword ptr [ebp-08]

:00483F5C E81BFEF7FF call 00403D7C

:00483F61 83F80E cmp eax, 0000000E

:00483F64 0F8507040000 jne 00484371

:00483F6A 8B45F8 mov eax, dword ptr [ebp-08]------------>EAX=BN

:00483F6D 0FB638 movzx edi, byte ptr [eax]-------------->EDI取BN的第1位,设为BN1

:00483F70 6683EF41 sub di, 0041--------------------------->EDI=EDI-0x41

:00483F74 8B45F8 mov eax, dword ptr [ebp-08]

:00483F77 8A5001 mov dl, byte ptr [eax+01]-------------->DL=BN2

:00483F7A 80FA39 cmp dl, 39----------------------------->DL与“9”比较

:00483F7D 7507 jne 00483F86--------------------------->不等则跳

:00483F7F B809000000 mov eax, 00000009

:00483F84 EB0A jmp 00483F90

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00483F7D(C)

|

:00483F86 33C0 xor eax, eax-------------------------->EAX=0

:00483F88 8AC2 mov al, dl---------------------------->AL=DL

:00483F8A 83E841 sub eax, 00000041--------------------->EAX=EAX-0x41

:00483F8D 83C00A add eax, 0000000A--------------------->EAX=EAX+0xA

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00483F84(U)

|

:00483F90 80FA5A cmp dl, 5A---------------------------->将DL与0x5A

:00483F93 7501 jne 00483F96-------------------------->不等则跳

:00483F95 40 inc eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00483F93(C)

|

:00483F96 8BD0 mov edx, eax-------------------------->EDX=EAX

:00483F98 83E201 and edx, 00000001--------------------->EDX=EDX AND 1

:00483F9B 4A dec edx------------------------------->EDX=EDX-1

:00483F9C 750E jne 00483FAC-------------------------->比较EDX是否为0,不为0则跳

:00483F9E 8B55F8 mov edx, dword ptr [ebp-08]----------->EDX=BN

:00483FA1 33DB xor ebx, ebx-------------------------->EBX=0

:00483FA3 8A5A02 mov bl, byte ptr [edx+02]------------->EBX=BN3

:00483FA6 6683EB30 sub bx, 0030-------------------------->EBX=EBX-0x30

:00483FAA EB36 jmp 00483FE2-------------------------->跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00483F9C(C)

|

:00483FAC 8BD0 mov edx, eax-------------------------->EDX=EAX

:00483FAE 83E202 and edx, 00000002--------------------->EDX=EDX AND 2

:00483FB1 83FA02 cmp edx, 00000002--------------------->将EDX与2比较

:00483FB4 7512 jne 00483FC8-------------------------->不等就跳

:00483FB6 8B55F8 mov edx, dword ptr [ebp-08]----------->EDX=BN

:00483FB9 33DB xor ebx, ebx-------------------------->EBX=0

:00483FBB 8A5A02 mov bl, byte ptr [edx+02]------------->EBX=BN3

:00483FBE 6683EB41 sub bx, 0041-------------------------->EBX=EBX-0x41

:00483FC2 6683C30A add bx, 000A-------------------------->EBX=EBX+0xA

:00483FC6 EB1A jmp 00483FE2-------------------------->跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00483FB4(C)

|

:00483FC8 8BD0 mov edx, eax-------------------------->EDX=EAX

:00483FCA 83E204 and edx, 00000004--------------------->EDX=EDX AND 4

:00483FCD 83FA04 cmp edx, 00000004--------------------->比较EDX和4

:00483FD0 7510 jne 00483FE2-------------------------->不等则跳

:00483FD2 8B55F8 mov edx, dword ptr [ebp-08]----------->EDX=BN

:00483FD5 33DB xor ebx, ebx-------------------------->EBX=0

:00483FD7 8A5A02 mov bl, byte ptr [edx+02]------------->EBX=BN3

:00483FDA 6683EB41 sub bx, 0041-------------------------->EBX=EBX-0x41

:00483FDE 6683C324 add bx, 0024-------------------------->EBX=EBX+0x24

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00483FAA(U), :00483FC6(U), :00483FD0(C)

|

:00483FE2 8BD0 mov edx, eax-------------------------->EDX=EAX

:00483FE4 83E208 and edx, 00000008--------------------->EDX=EDX AND 8

:00483FE7 83FA08 cmp edx, 00000008--------------------->比较EDX 与 8

:00483FEA 750D jne 00483FF9-------------------------->不等则跳

:00483FEC 8B45F8 mov eax, dword ptr [ebp-08]----------->EAX=BN

:00483FEF 0FB67003 movzx esi, byte ptr [eax+03]---------->ESI=BN4

:00483FF3 6683EE30 sub si, 0030-------------------------->ESI=ESI-0x30

:00483FF7 EB32 jmp 0048402B-------------------------->跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00483FEA(C)

|

:00483FF9 8BD0 mov edx, eax-------------------------->EDX=EAX

:00483FFB 83E210 and edx, 00000010--------------------->EDX=EDX AND 10

:00483FFE 83FA10 cmp edx, 00000010--------------------->比较EDX 与 10

:00484001 7511 jne 00484014-------------------------->不等则跳

:00484003 8B45F8 mov eax, dword ptr [ebp-08]----------->EAX=BN

:00484006 0FB67003 movzx esi, byte ptr [eax+03]---------->ESI=BN4

:0048400A 6683EE41 sub si, 0041-------------------------->ESI=ESI-0x41

:0048400E 6683C60A add si, 000A-------------------------->ESI=ESI-0xA

:00484012 EB17 jmp 0048402B-------------------------->跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00484001(C)

|

:00484014 83E020 and eax, 00000020--------------------->EDX=EAX

:00484017 83F820 cmp eax, 00000020--------------------->比较EDX 与 20

:0048401A 750F jne 0048402B-------------------------->不等则跳

:0048401C 8B45F8 mov eax, dword ptr [ebp-08]----------->EAX=BN

:0048401F 0FB67003 movzx esi, byte ptr [eax+03]---------->ESI=BN4

:00484023 6683EE41 sub si, 0041-------------------------->ESI=ESI-0x41

:00484027 6683C624 add si, 0024-------------------------->ESI=ESI+0x24

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00483FF7(U), :00484012(U), :0048401A(C)

|

:0048402B 0FB7C7 movzx eax, di------------------------->EAX=EDI

:0048402E 83C030 add eax, 00000030--------------------->EAX=EAX+0x30

:00484031 E8C6FEFFFF call 00483EFC------------------------->根据EAX的值进行计算

:00484036 8B55FC mov edx, dword ptr [ebp-04]----------->EDX=SN

:00484039 3A02 cmp al, byte ptr [edx]---------------->比较SN1和计算后的EAX

:0048403B 0F8530030000 jne 00484371-------------------------->不等则跳,跳则死

:00484041 0FB7C3 movzx eax, bx------------------------->EAX=EBX

:00484044 83C030 add eax, 00000030--------------------->EAX=EAX+0x30

:00484047 E8B0FEFFFF call 00483EFC------------------------->根据EAX的值进行计算

:0048404C 8B55FC mov edx, dword ptr [ebp-04]----------->

:0048404F 3A4201 cmp al, byte ptr [edx+01]------------->比较SN2和计算后的EAX

:00484052 0F8519030000 jne 00484371-------------------------->不等则跳,跳则死

:00484058 0FB7C6 movzx eax, si------------------------->EAX=ESI

:0048405B 83C030 add eax, 00000030--------------------->EAX=EAX+0x30

:0048405E E899FEFFFF call 00483EFC------------------------->根据EAX的值进行计算

:00484063 8B55FC mov edx, dword ptr [ebp-04]----------->

:00484066 3A4202 cmp al, byte ptr [edx+02]------------->比较SN3和计算后的EAX

:00484069 0F8502030000 jne 00484371-------------------------->不等则跳,跳则死

:0048406F 0FB7C7 movzx eax, di------------------------->EAX=EDI

:00484072 83C030 add eax, 00000030--------------------->EAX=EAX+0x30

:00484075 83C006 add eax, 00000006--------------------->EAX=EAX+0x6

:00484078 E87FFEFFFF call 00483EFC------------------------->根据EAX的值进行计算

:0048407D 8B55FC mov edx, dword ptr [ebp-04]----------->

:00484080 3A4203 cmp al, byte ptr [edx+03]------------->比较SN4和计算后的EAX

:00484083 0F85E8020000 jne 00484371-------------------------->不等则跳,跳则死

:00484089 0FB7C3 movzx eax, bx------------------------->EAX=EBX

:0048408C 83C030 add eax, 00000030--------------------->EAX=EAX+0x30

:0048408F 83C002 add eax, 00000002--------------------->EAX=EAX+0x2

:00484092 E865FEFFFF call 00483EFC------------------------->根据EAX的值进行计算

:00484097 8B55FC mov edx, dword ptr [ebp-04]----------->

:0048409A 3A4204 cmp al, byte ptr [edx+04]------------->比较SN5和计算后的EAX

:0048409D 0F85CE020000 jne 00484371-------------------------->不等则跳,跳则死

:004840A3 0FB7C6 movzx eax, si------------------------->EAX=ESI

:004840A6 83C030 add eax, 00000030--------------------->EAX=EAX+0x30

:004840A9 40 inc eax------------------------------->EAX=EAX+1

:004840AA E84DFEFFFF call 00483EFC------------------------->根据EAX的值进行计算

:004840AF 8B55FC mov edx, dword ptr [ebp-04]----------->

:004840B2 3A4205 cmp al, byte ptr [edx+05]------------->比较SN6和计算后的EAX

:004840B5 0F85B6020000 jne 00484371-------------------------->不等则跳,跳则死

以上为根据BN的1~4位计算得SN的前1~6位

:004840BB 8B45F8 mov eax, dword ptr [ebp-08]----------->EAX=BN

:004840BE 8078042D cmp byte ptr [eax+04], 2D------------->比较BN5是不是2D("-")

:004840C2 0F85A9020000 jne 00484371-------------------------->不等则跳,跳则死

:004840C8 8B45F8 mov eax, dword ptr [ebp-08]----------->EAX=BN

:004840CB 0FB67805 movzx edi, byte ptr [eax+05]---------->EDI=BN6

:004840CF 6683EF41 sub di, 0041-------------------------->EDI=EDI-0x41

:004840D3 8B45F8 mov eax, dword ptr [ebp-08]----------->EAX=BN

:004840D6 8A4006 mov al, byte ptr [eax+06]------------->AL=BN7

:004840D9 3C39 cmp al, 39---------------------------->将AL与0x39进行比较

:004840DB 7507 jne 004840E4-------------------------->不等则跳

:004840DD B809000000 mov eax, 00000009

:004840E2 EB0B jmp 004840EF

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004840DB(C)

|

:004840E4 25FF000000 and eax, 000000FF--------------------->EAX=EAX AND 0xFF

:004840E9 83E841 sub eax, 00000041--------------------->EAX=EAX-0x41

:004840EC 83C00A add eax, 0000000A--------------------->EAX=EAX+0xA

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004840E2(U)

|

:004840EF 8B55F8 mov edx, dword ptr [ebp-08]----------->EDX=BN

:004840F2 807A015A cmp byte ptr [edx+01], 5A------------->将SN2与0x5A进行比较

:004840F6 7501 jne 004840F9-------------------------->不等则跳

:004840F8 40 inc eax------------------------------->EAX=EAX+1

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004840F6(C)

|

:004840F9 8BD0 mov edx, eax------------------------->EDX=EAX

:004840FB 83E201 and edx, 00000001-------------------->EDX=EDX AND 1

:004840FE 4A dec edx------------------------------>EDX=EDX-1

:004840FF 750E jne 0048410F------------------------->不等0则跳

:00484101 8B55F8 mov edx, dword ptr [ebp-08]---------->EDX=BN

:00484104 33DB xor ebx, ebx------------------------->EBX=0

:00484106 8A5A07 mov bl, byte ptr [edx+07]------------>EBX=BN8

:00484109 6683EB30 sub bx, 0030------------------------->EBX=EBX-0x30

:0048410D EB36 jmp 00484145------------------------->跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004840FF(C)

|

:0048410F 8BD0 mov edx, eax------------------------->EDX=EAX

:00484111 83E202 and edx, 00000002-------------------->EDX=EDX AND 2

:00484114 83FA02 cmp edx, 00000002-------------------->比较EDX和2

:00484117 7512 jne 0048412B------------------------->不等则跳

:00484119 8B55F8 mov edx, dword ptr [ebp-08]---------->EDX=BN

:0048411C 33DB xor ebx, ebx------------------------->EBX=0

:0048411E 8A5A07 mov bl, byte ptr [edx+07]------------>EBX=BN8

:00484121 6683EB41 sub bx, 0041------------------------->EBX=EBX-0x41

:00484125 6683C30A add bx, 000A------------------------->EBX=EBX+0xA

:00484129 EB1A jmp 00484145------------------------->跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00484117(C)

|

:0048412B 8BD0 mov edx, eax------------------------->EDX=EAX

:0048412D 83E204 and edx, 00000004-------------------->EDX=EDX AND 4

:00484130 83FA04 cmp edx, 00000004-------------------->比较EDX和4

:00484133 7510 jne 00484145------------------------->不等则跳

:00484135 8B55F8 mov edx, dword ptr [ebp-08]---------->EDX=BN

:00484138 33DB xor ebx, ebx------------------------->EBX=0

:0048413A 8A5A07 mov bl, byte ptr [edx+07]------------>EBX=BN8

:0048413D 6683EB41 sub bx, 0041------------------------->EBX=EBX-0x41

:00484141 6683C324 add bx, 0024------------------------->EBX=EBX+0x24

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:0048410D(U), :00484129(U), :00484133(C)

|

:00484145 8BD0 mov edx, eax------------------------->EDX=EAX

:00484147 83E208 and edx, 00000008-------------------->EDX=EDX AND 8

:0048414A 83FA08 cmp edx, 00000008-------------------->比较EDX和8

:0048414D 750D jne 0048415C------------------------->不等则跳

:0048414F 8B45F8 mov eax, dword ptr [ebp-08]---------->EAX=BN

:00484152 0FB67008 movzx esi, byte ptr [eax+08]--------->ESI=BN9

:00484156 6683EE30 sub si, 0030------------------------->ESI=ESI-0x30

:0048415A EB32 jmp 0048418E------------------------->跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0048414D(C)

|

:0048415C 8BD0 mov edx, eax------------------------->EDX=EAX

:0048415E 83E210 and edx, 00000010-------------------->EDX=EDX AND 10

:00484161 83FA10 cmp edx, 00000010-------------------->比较EDX和10

:00484164 7511 jne 00484177------------------------->不等则跳

:00484166 8B45F8 mov eax, dword ptr [ebp-08]---------->EAX=BN

:00484169 0FB67008 movzx esi, byte ptr [eax+08]--------->ESI=BN9

:0048416D 6683EE41 sub si, 0041------------------------->ESI=ESI-0x41

:00484171 6683C60A add si, 000A------------------------->ESI=ESI+0xA

:00484175 EB17 jmp 0048418E------------------------->跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00484164(C)

|

:00484177 83E020 and eax, 00000020-------------------->EAX=EAX AND 20

:0048417A 83F820 cmp eax, 00000020-------------------->比较EDX和20

:0048417D 750F jne 0048418E------------------------->不等则跳

:0048417F 8B45F8 mov eax, dword ptr [ebp-08]---------->EAX=BN

:00484182 0FB67008 movzx esi, byte ptr [eax+08]--------->ESI=BN9

:00484186 6683EE41 sub si, 0041------------------------->ESI=ESI-0x41

:0048418A 6683C624 add si, 0024------------------------->ESI=ESI+0x24

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:0048415A(U), :00484175(U), :0048417D(C)

|

:0048418E 0FB7C7 movzx eax, di----------------------->EAX=EDI

:00484191 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:00484194 E863FDFFFF call 00483EFC----------------------->根据EAX的值进行计算

:00484199 8B55FC mov edx, dword ptr [ebp-04]--------->EDX=SN

:0048419C 3A4207 cmp al, byte ptr [edx+07]----------->比较EAX和SN8

:0048419F 0F85CC010000 jne 00484371------------------------>不等则跳,跳则死

:004841A5 0FB7C3 movzx eax, bx----------------------->EAX=EBX

:004841A8 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:004841AB E84CFDFFFF call 00483EFC----------------------->根据EAX的值进行计算

:004841B0 8B55FC mov edx, dword ptr [ebp-04]--------->

:004841B3 3A4208 cmp al, byte ptr [edx+08]----------->比较EAX和SN9

:004841B6 0F85B5010000 jne 00484371------------------------>不等则跳,跳则死

:004841BC 0FB7C6 movzx eax, si----------------------->EAX=ESI

:004841BF 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:004841C2 E835FDFFFF call 00483EFC----------------------->根据EAX的值进行计算

:004841C7 8B55FC mov edx, dword ptr [ebp-04]--------->

:004841CA 3A4209 cmp al, byte ptr [edx+09]----------->比较EAX和SN10

:004841CD 0F859E010000 jne 00484371------------------------>不等则跳,跳则死

:004841D3 0FB7C7 movzx eax, di----------------------->EAX=EDI

:004841D6 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:004841D9 83C008 add eax, 00000008------------------->EAX=EAX+0x8

:004841DC E81BFDFFFF call 00483EFC----------------------->根据EAX的值进行计算

:004841E1 8B55FC mov edx, dword ptr [ebp-04]--------->

:004841E4 3A420A cmp al, byte ptr [edx+0A]----------->比较EAX和SN11

:004841E7 0F8584010000 jne 00484371------------------------>不等则跳,跳则死

:004841ED 0FB7C3 movzx eax, bx----------------------->EAX=EBX

:004841F0 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:004841F3 40 inc eax----------------------------->EAX=EAX+1

:004841F4 E803FDFFFF call 00483EFC----------------------->根据EAX的值进行计算

:004841F9 8B55FC mov edx, dword ptr [ebp-04]--------->

:004841FC 3A420B cmp al, byte ptr [edx+0B]----------->比较EAX和SN12

:004841FF 0F856C010000 jne 00484371------------------------>不等则跳,跳则死

:00484205 0FB7C6 movzx eax, si----------------------->EAX=ESI

:00484208 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:0048420B 83C002 add eax, 00000002------------------->EAX=EAX+0x2

:0048420E E8E9FCFFFF call 00483EFC----------------------->根据EAX的值进行计算

:00484213 8B55FC mov edx, dword ptr [ebp-04]--------->

:00484216 3A420C cmp al, byte ptr [edx+0C]----------->比较EAX和SN13

:00484219 0F8552010000 jne 00484371------------------------>不等则跳,跳则死

以上为根据BN的6~9位计算得SN的8~13位

:0048421F 8B45F8 mov eax, dword ptr [ebp-08]--------->EAX=BN

:00484222 8078092D cmp byte ptr [eax+09], 2D----------->比较BN10是不是2D("-")

:00484226 0F8545010000 jne 00484371------------------------>不等则跳,跳则死

:0048422C 8B45F8 mov eax, dword ptr [ebp-08]--------->EAX=BN

:0048422F 0FB6780A movzx edi, byte ptr [eax+0A]-------->EDI=BN11

:00484233 6683EF41 sub di, 0041------------------------>EDI=EDI-0x41

:00484237 8B45F8 mov eax, dword ptr [ebp-08]--------->EAX=BN

:0048423A 8A400B mov al, byte ptr [eax+0B]----------->AL=BN12

:0048423D 3C39 cmp al, 39-------------------------->比较AL是否等于0x39

:0048423F 7507 jne 00484248------------------------>不等则跳

:00484241 B809000000 mov eax, 00000009------------------->EAX=9

:00484246 EB0B jmp 00484253------------------------>跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0048423F(C)

|

:00484248 25FF000000 and eax, 000000FF------------------->EAX=EAX AND FF

:0048424D 83E841 sub eax, 00000041------------------->EAX=EAX-0x41

:00484250 83C00A add eax, 0000000A------------------->EAX=EAX+0xA

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00484246(U)

|

:00484253 8B55F8 mov edx, dword ptr [ebp-08]--------->EDX=BN

:00484256 807A015A cmp byte ptr [edx+01], 5A----------->比较BN2是否等于0x5A

:0048425A 7501 jne 0048425D------------------------>不等则跳

:0048425C 40 inc eax----------------------------->EAX=EAX+1

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0048425A(C)

|

:0048425D 8BD0 mov edx, eax------------------------>EDX=EAX

:0048425F 83E201 and edx, 00000001------------------->EDX=EDX AND 1

:00484262 4A dec edx----------------------------->EDX=EDX-1

:00484263 750E jne 00484273------------------------>EDX不为0就跳

:00484265 8B55F8 mov edx, dword ptr [ebp-08]--------->EDX=BN

:00484268 33DB xor ebx, ebx------------------------>EBX=0

:0048426A 8A5A0C mov bl, byte ptr [edx+0C]----------->EBX=BN13

:0048426D 6683EB30 sub bx, 0030------------------------>EBX=EBX-0x30

:00484271 EB36 jmp 004842A9------------------------>跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00484263(C)

|

:00484273 8BD0 mov edx, eax------------------------>EDX=EAX

:00484275 83E202 and edx, 00000002------------------->EDX=EDX AND 2

:00484278 83FA02 cmp edx, 00000002------------------->比较EDX和2

:0048427B 7512 jne 0048428F------------------------>不等则跳

:0048427D 8B55F8 mov edx, dword ptr [ebp-08]--------->EDX=BN

:00484280 33DB xor ebx, ebx------------------------>EBX=0

:00484282 8A5A0C mov bl, byte ptr [edx+0C]----------->EBX=BN13

:00484285 6683EB41 sub bx, 0041------------------------>EBX=EBX-0x41

:00484289 6683C30A add bx, 000A------------------------>EBX=EBX+0xA

:0048428D EB1A jmp 004842A9------------------------>跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0048427B(C)

|

:0048428F 8BD0 mov edx, eax------------------------>EDX=EAX

:00484291 83E204 and edx, 00000004------------------->EDX=EDX AND 4

:00484294 83FA04 cmp edx, 00000004------------------->比较EDX和4

:00484297 7510 jne 004842A9------------------------>不等则跳

:00484299 8B55F8 mov edx, dword ptr [ebp-08]--------->EDX=BN

:0048429C 33DB xor ebx, ebx------------------------>EBX=0

:0048429E 8A5A0C mov bl, byte ptr [edx+0C]----------->EBX=BN13

:004842A1 6683EB41 sub bx, 0041------------------------>EBX=EBX-0x41

:004842A5 6683C324 add bx, 0024------------------------>EBX=EBX+0x24

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00484271(U), :0048428D(U), :00484297(C)

|

:004842A9 8BD0 mov edx, eax------------------------>EDX=EAX

:004842AB 83E208 and edx, 00000008------------------->EDX=EDX AND 8

:004842AE 83FA08 cmp edx, 00000008------------------->比较EDX和8

:004842B1 750D jne 004842C0------------------------>不等则跳

:004842B3 8B45F8 mov eax, dword ptr [ebp-08]--------->EAX=BN

:004842B6 0FB6700D movzx esi, byte ptr [eax+0D]-------->ESI=BN14

:004842BA 6683EE30 sub si, 0030------------------------>ESI=ESI-0x30

:004842BE EB32 jmp 004842F2------------------------>跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004842B1(C)

|

:004842C0 8BD0 mov edx, eax------------------------>EDX=EAX

:004842C2 83E210 and edx, 00000010------------------->EDX=EDX AND 10

:004842C5 83FA10 cmp edx, 00000010------------------->比较EDX和10

:004842C8 7511 jne 004842DB------------------------>不等则跳

:004842CA 8B45F8 mov eax, dword ptr [ebp-08]--------->EAX=BN

:004842CD 0FB6700D movzx esi, byte ptr [eax+0D]-------->ESI=BN14

:004842D1 6683EE41 sub si, 0041------------------------>ESI=ESI-0x41

:004842D5 6683C60A add si, 000A------------------------>ESI=ESI+0xA

:004842D9 EB17 jmp 004842F2------------------------>跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004842C8(C)

|

:004842DB 83E020 and eax, 00000020------------------->EAX=EAX AND 20

:004842DE 83F820 cmp eax, 00000020------------------->比较EAX和20

:004842E1 750F jne 004842F2------------------------>不等则跳

:004842E3 8B45F8 mov eax, dword ptr [ebp-08]--------->EAX=BN

:004842E6 0FB6700D movzx esi, byte ptr [eax+0D]-------->ESI=BN14

:004842EA 6683EE41 sub si, 0041------------------------>ESI=ESI-0x41

:004842EE 6683C624 add si, 0024------------------------>ESI=ESI+0x24

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:004842BE(U), :004842D9(U), :004842E1(C)

|

:004842F2 0FB7C7 movzx eax, di----------------------->EAX=EDI

:004842F5 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:004842F8 E8FFFBFFFF call 00483EFC----------------------->根据EAX的值进行计算

:004842FD 8B55FC mov edx, dword ptr [ebp-04]--------->EDX=SN

:00484300 3A420E cmp al, byte ptr [edx+0E]----------->比较EAX和SN15

:00484303 756C jne 00484371------------------------>不等则跳,跳则死

:00484305 0FB7C3 movzx eax, bx----------------------->EAX=EBX

:00484308 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:0048430B E8ECFBFFFF call 00483EFC----------------------->根据EAX的值进行计算

:00484310 8B55FC mov edx, dword ptr [ebp-04]--------->

:00484313 3A420F cmp al, byte ptr [edx+0F]----------->比较EAX和SN16

:00484316 7559 jne 00484371------------------------>不等则跳,跳则死

:00484318 0FB7C6 movzx eax, si----------------------->EAX=ESI

:0048431B 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:0048431E E8D9FBFFFF call 00483EFC----------------------->根据EAX的值进行计算

:00484323 8B55FC mov edx, dword ptr [ebp-04]--------->

:00484326 3A4210 cmp al, byte ptr [edx+10]----------->比较EAX和SN17

:00484329 7546 jne 00484371------------------------>不等则跳,跳则死

:0048432B 0FB7C7 movzx eax, di----------------------->EAX=EDI

:0048432E 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:00484331 83C00D add eax, 0000000D------------------->EAX=EAX+0xD

:00484334 E8C3FBFFFF call 00483EFC----------------------->根据EAX的值进行计算

:00484339 8B55FC mov edx, dword ptr [ebp-04]--------->

:0048433C 3A4211 cmp al, byte ptr [edx+11]----------->比较EAX和SN18

:0048433F 7530 jne 00484371------------------------>不等则跳,跳则死

:00484341 0FB7C3 movzx eax, bx----------------------->EAX=EBX

:00484344 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:00484347 83C002 add eax, 00000002------------------->EAX=EAX+0x2

:0048434A E8ADFBFFFF call 00483EFC----------------------->根据EAX的值进行计算

:0048434F 8B55FC mov edx, dword ptr [ebp-04]--------->

:00484352 3A4212 cmp al, byte ptr [edx+12]----------->比较EAX和SN19

:00484355 751A jne 00484371------------------------>不等则跳,跳则死

:00484357 0FB7C6 movzx eax, si----------------------->EAX=ESI

:0048435A 83C030 add eax, 00000030------------------->EAX=EAX+0x30

:0048435D 83C002 add eax, 00000002------------------->EAX=EAX+0x2

:00484360 E897FBFFFF call 00483EFC----------------------->根据EAX的值进行计算

:00484365 8B55FC mov edx, dword ptr [ebp-04]--------->

:00484368 3A4213 cmp al, byte ptr [edx+13]----------->比较EAX和SN20

:0048436B 7504 jne 00484371------------------------>不等则跳,跳则死

:0048436D C645F701 mov [ebp-09], 01-------------------->注册成功的标志位,到这里就成功了!!^_^

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00483F64(C), :0048403B(C), :00484052(C), :00484069(C), :00484083(C)

|:0048409D(C), :004840B5(C), :004840C2(C), :0048419F(C), :004841B6(C)

|:004841CD(C), :004841E7(C), :004841FF(C), :00484219(C), :00484226(C)

|:00484303(C), :00484316(C), :00484329(C), :0048433F(C), :00484355(C)

|:0048436B(C)

|

:00484371 33C0 xor eax, eax

:00484373 5A pop edx

:00484374 59 pop ecx

:00484375 59 pop ecx

:00484376 648910 mov dword ptr fs:[eax], edx

:00484379 6893434800 push 00484393

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00484391(U)

|

:0048437E 8D45F8 lea eax, dword ptr [ebp-08]

:00484381 BA02000000 mov edx, 00000002

:00484386 E895F7F7FF call 00403B20

:0048438B C3 ret

===========================================================================================

以下为根据EAX的值进行计算CALL的具体算法

:00483EFC 8BD0 mov edx, eax-------------->EDX=EAX

:00483EFE 3C3A cmp al, 3A---------------->将EAX与0x3A进行比较

:00483F00 720E jb 00483F10--------------->小于则跳

:00483F02 3C40 cmp al, 40---------------->将EAX与0x40进行比较

:00483F04 770A ja 00483F10--------------->大于则跳

:00483F06 33D2 xor edx, edx-------------->EDX=0

:00483F08 8AD0 mov dl, al---------------->EAX=EDX

:00483F0A 83C232 add edx, 00000032--------->EDX=EDX+0x32

:00483F0D 8BC2 mov eax, edx-------------->EAX=EDX

:00483F0F C3 ret

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00483F00(C), :00483F04(C)

|

:00483F10 3C5B cmp al, 5B---------------->将EAX与0x5B进行比较

:00483F12 720B jb 00483F1F--------------->小于则跳

:00483F14 3C60 cmp al, 60---------------->将EAX与0x60进行比较

:00483F16 7707 ja 00483F1F--------------->大于则跳

:00483F18 33D2 xor edx, edx-------------->EDX=0

:00483F1A 8AD0 mov dl, al---------------->EDX=EAX

:00483F1C 83C218 add edx, 00000018--------->EDX=EDX+0x18

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00483F12(C), :00483F16(C)

|

:00483F1F 8BC2 mov eax, edx-------------->EAX=EDX

:00483F21 C3 ret

========================================================================================

算法整理:

以我的机器码为例:MCN9-SKKC-CCA4

1.BN1=0x4D "M"

EDI=BN1

EDI=EDI-0x41=0xC

2.BN2=0x43 "C"

EDX=BN2

EDX!=0x39

EDX=EDX-0x41+0xA=0xC

3.BN3=0x4E "N"

EBX=BN3

EBX=EBX-0x41+0x24=0x31

4.BN4=0x39 "9"

ESI=BN4

ESI=ESI-0x30=0x9

------------------------------

5.BN6=0x53 "S"

EDI=BN6

EDI=EDI-0x41=0x12

6.BN7=0x4B "K"

EDX=BN7

EDX!=0x39

SN2!=0x5A

EDX=EDX-0x41+0xA=0x14

7.BN8=0x4B "K"

EBX=BN8

EBX=EBX-0x41+0x24=0x2E

8.BN9=0x43 "C"

ESI=BN9

ESI=ESI-0x41+0x24=0x26

------------------------------

9.BN11=0x43 "C"

EDI=BN11

EDI=EDI-0x41=0x2

10.BN12=0x43 "C"

EDX=BN12

EDX!=0x39

SN2!=0x5A

EDX=EDX-0x41+0xA=0xC

11.BN13=0x41 "A"

EBX=BN13

EBX=EBX-0x41+0x24=0x24

12.BN14=0x34 "4"

ESI=BN14

ESI=ESI-0x30=0x4

=============================================

1.EAX=EDI

EAX=EAX+0x30=0x3C

因为:0x3A<EAX<0x40

所以:SN1=EAX+0x32=0x6E "n"

2.EAX=EBX

EAX=EAX+0x30=0x61

因为:EAX>0x40 & EAX>0x60

所以:SN2=EAX=0x61 "a"

3.EAX=ESI

EAX=EAX+0x30=0x39

因为:0x3A<EAX & 0x5B<EAX

所以:SN3=EAX=0x39 "9"

4.EAX=EDI

EAX=EAX+0x30+0x6=0x42

因为:0x3A<EAX<0x40

所以:SN4=EAX=EAX+0x32=0x42 "B"

5.EAX=EBX

EAX=EAX+0x30+0x2=0x63

因为:EAX>0x40 & EAX>0x60

所以:SN5=EAX=0x63 "c"

6.EAX=ESI

EAX=EAX+0x30+1=0x3A

因为:0x40>EAX>0x3A

所以:SN6=EAX+0x32=0x6C "l"

7.SN7为任意字符 "-"

---------------------------------------------

8.EAX=EDI

EAX=EAX+0x30=0x42

因为:0x3A<EAX<0x40

所以:SN8=EAX=0x42 "B"

9.EAX=EBX

EAX=EAX+0x30=0x5E

因为:0x40<EAX & EAX<60

所以:SN9=EAX+0x18=0x76 "v"

10.EAX=ESI

EAX=EAX+0x30=0x56

因为:EAX>0x40 & 0x60>EAX

所以:SN10=EAX+0x18=0x6E "n"

11.EAX=EDI

EAX=EAX+0x30+0x8=0x4A

因为:EAX>0x40 & EAX<0x5B

所以:SN11=EAX=0x4A "J"

12.EAX=EBX

EAX=EAX+0x30+1=0x5F

因为:0x40<EAX & EAX<60

所以:SN12=EAX+0x18=0x77 "w"

13.EAX=ESI

EAX=EAX+0x30+0x2=0x58

因为:0x40<EAX & EAX<60

所以:SN13=EAX+0x18=0x70 "p"

14.SN14为任意字符 "-"

---------------------------------------------

15.EAX=EDI

EAX=EAX+0x30=0x32

因为:0x3A<EAX<0x40

所以:SN15=EAX=0x32 "2"

16.EAX=EBX

EAX=EAX+0x30=0x54

因为:0x40<EAX & EAX<5B

所以:SN16=EAX=0x54 "T"

17.EAX=ESI

EAX=EAX+0x30=0x34

因为:0x3A>EAX & EAX<5B

所以:SN17=EAX=0x34 "4"

18.EAX=EDI

EAX=EAX+0x30+0xD=0x3F

因为:0x3A<EAX<0x40

所以:SN18=EAX+0x32=0x71 "q"

19.EAX=EBX

EAX=EAX+0x30+0x2=0x56

因为:0x40<EAX & EAX<5B

所以:SN19=EAX=0x56 "V"

20.EAX=ESI

EAX=EAX+0x30+0x2=0x36

因为:0x3A>EAX & EAX<5B

所以:SN20=EAX=0x36 "6"

整理:BN="MCN9-SKKC-CCA4"

SN="na9Bcl-BvnJwp-2T4qV6

(出处:赢政天下整理收藏)

相关文章:

·语音界面2.0算法分析及注册机源码!

·侠客系统修改器1.21破解手记--算法分析

·中文拨号上网计时计费器 V4.12注册算法分析

·ClockWise 3.22e注册码算法分析

·CoolClock V1.02注册算法分析

·Directory Scanner v1.5 注册算法分析

·Disk Chief 1.2 简单注册算法分析

·EffeTech HTTP Sniffer 3.2注册算法分析

·eLib2.01算法分析

·EZ MP3 Recorder 1.15 注册算法分析

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史