能力值:
( LV2,RANK:10 )
|
-
-
2 楼
算法非常简单,可能是作者写着玩的:
004014CE . 8B75 60 MOV ESI,DWORD PTR SS:[EBP+60] ; 注册码的16进制形式
004014D1 . 8B7D 68 MOV EDI,DWORD PTR SS:[EBP+68] ; 组织码的16进制形式
004014D4 . 33DB XOR EBX,EBX
004014D6 . 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]
004014DA . 53 PUSH EBX
004014DB . 899C24 880000>MOV DWORD PTR SS:[ESP+88],EBX
004014E2 . E8 49010000 CALL CrackMe.00401630
004014E7 . 3BF7 CMP ESI,EDI ; 对比两者,不能相同
004014E9 . C68424 840000>MOV BYTE PTR SS:[ESP+84],1
004014F1 . 0F84 BB000000 JE CrackMe.004015B2
004014F7 . 8B45 64 MOV EAX,DWORD PTR SS:[EBP+64] ; 用户名16进制
004014FA . 3BC7 CMP EAX,EDI ; 对比用户名和组织码,不能相同
004014FC . 894424 18 MOV DWORD PTR SS:[ESP+18],EAX ; 用户名16进制
00401500 . 0F84 AC000000 JE CrackMe.004015B2
00401506 . 3BF0 CMP ESI,EAX ; 对比组织码和用户名,不能相同
00401508 . 0F84 A4000000 JE CrackMe.004015B2
0040150E . 83FE 64 CMP ESI,64 ; 注册码的HEX要大于64
00401511 . 0F8C 9B000000 JL CrackMe.004015B2
00401517 . 83FF 64 CMP EDI,64 ; 组织码的HEX要大于64
0040151A . 0F8C 92000000 JL CrackMe.004015B2
00401520 . 83F8 64 CMP EAX,64 ; 用户名的HEX要大于64
00401523 . 0F8C 89000000 JL CrackMe.004015B2
00401529 . 8D04B6 LEA EAX,DWORD PTR DS:[ESI+ESI*4] ; 注册码+注册码*4=结果1
0040152C . 8D0480 LEA EAX,DWORD PTR DS:[EAX+EAX*4] ; 结果1+结果1*4=结果2
0040152F . 2BF8 SUB EDI,EAX ; 结果2-组织名=结果3
00401531 . 8D04BF LEA EAX,DWORD PTR DS:[EDI+EDI*4] ; 结果3+结果3*4=结果4
00401534 . D1E0 SHL EAX,1 ; 结果4 SHL 1
00401536 . 83F8 10 CMP EAX,10 ; 要大于10
00401539 . 894424 14 MOV DWORD PTR SS:[ESP+14],EAX
0040153D 90 NOP
0040153E 90 NOP
0040153F . DD05 10254000 FLD QWORD PTR DS:[402510] ; DS:[00402510]=2.000000000000000
00401545 . DB4424 14 FILD DWORD PTR SS:[ESP+14] ; 结果4
00401549 . E8 A8030000 CALL <JMP.&MSVCRT._CIpow> ; _CIpow转换函数
0040154E . DA6424 18 FISUB DWORD PTR SS:[ESP+18]
00401552 . E8 99030000 CALL <JMP.&MSVCRT._ftol> ; 浮点转整数
00401557 . 8BC8 MOV ECX,EAX
00401559 . 99 CDQ ; 双子扩展
0040155A . F7FE IDIV ESI ; 除注册码的16进制值
0040155C . 2BCE SUB ECX,ESI ; 必须为注册码16进制值+1
0040155E . 83F8 01 CMP EAX,1 ; 即相减必须为1
从后面逆推。
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
|