【文章标题】: 东山程序小组《英语口语考试练习系统2007》算法分析及注册机
【文章作者】: 海浪轻风(黄仁来)
【作者邮箱】: futuring@126.com
【作者主页】: http://hi.baidu.com/beyond0769
【软件名称】: 《英语口语考试练习系统2007》
【下载地址】: http://www.dpg2008.cn/200.html
【保护方式】: 加壳,序列号
【编写语言】: Delphi
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
应网友请求,小试东山程序小组《英语口语考试练习系统2007》,发现算法比较简单,不敢独享。
PEid查壳为未知,但脱壳过程比较简单,找到入口OPE=0046D7C4, 为Delphi所编。在注册窗口输入假码后
提示重新启动来验证。OD截入,查超级字符串,很快定位在 0046CABC 为算法过程入口。
0046CABC /. 55 PUSH EBP
0046CABD |. 8BEC MOV EBP,ESP
0046CABF |. B9 04000000 MOV ECX,4
0046CAC4 |> 6A 00 /PUSH 0
0046CAC6 |. 6A 00 |PUSH 0
0046CAC8 |. 49 |DEC ECX
0046CAC9 |.^ 75 F9 \JNZ SHORT UnStart.0046CAC4
0046CACB |. 51 PUSH ECX
0046CACC |. 53 PUSH EBX
0046CACD |. 56 PUSH ESI
0046CACE |. 57 PUSH EDI
0046CACF |. 8BD8 MOV EBX,EAX
0046CAD1 |. 33C0 XOR EAX,EAX
0046CAD3 |. 55 PUSH EBP
0046CAD4 |. 68 61CC4600 PUSH UnStart.0046CC61
0046CAD9 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0046CADC |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0046CADF |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
0046CAE2 |. 50 PUSH EAX
0046CAE3 |. B1 01 MOV CL,1
0046CAE5 |. BA 78CC4600 MOV EDX,UnStart.0046CC78 ; main.exe
0046CAEA |. 8BC3 MOV EAX,EBX
0046CAEC |. E8 AF070000 CALL UnStart.0046D2A0
0046CAF1 |. 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
0046CAF4 |. 8B83 18030000 MOV EAX,DWORD PTR DS:[EBX+318]
0046CAFA |. E8 75ADFCFF CALL UnStart.00437874
0046CAFF |. 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
0046CB02 |. 33C0 XOR EAX,EAX
0046CB04 |. E8 DB5EF9FF CALL UnStart.004029E4
0046CB09 |. 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
0046CB0C |. 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]
0046CB0F |. E8 60B9F9FF CALL UnStart.00408474
0046CB14 |. 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C]
0046CB17 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0046CB1A |. B9 8CCC4600 MOV ECX,UnStart.0046CC8C ; registerid.ini
0046CB1F |. E8 8077F9FF CALL UnStart.004042A4
0046CB24 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0046CB27 |. E8 B8B8F9FF CALL UnStart.004083E4
0046CB2C |. 84C0 TEST AL,AL
0046CB2E |. 0F84 DA000000 JE UnStart.0046CC0E
0046CB34 |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
0046CB37 |. B2 01 MOV DL,1
0046CB39 |. A1 78B64200 MOV EAX,DWORD PTR DS:[42B678]
0046CB3E |. E8 E5EBFBFF CALL UnStart.0042B728
0046CB43 |. 8BF0 MOV ESI,EAX
0046CB45 |. 68 A4CC4600 PUSH UnStart.0046CCA4 ; 1
0046CB4A |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
0046CB4D |. 50 PUSH EAX
0046CB4E |. B9 B0CC4600 MOV ECX,UnStart.0046CCB0 ; serialid
0046CB53 |. BA C4CC4600 MOV EDX,UnStart.0046CCC4 ; reginfo
0046CB58 |. 8BC6 MOV EAX,ESI
0046CB5A |. 8B38 MOV EDI,DWORD PTR DS:[EAX]
0046CB5C |. FF17 CALL DWORD PTR DS:[EDI]
0046CB5E |. 8BC3 MOV EAX,EBX
0046CB60 |. E8 3B050000 CALL UnStart.0046D0A0 ; 返回机器码,这里我的是"5JVBVF3T "
0046CB65 |. 8BD0 MOV EDX,EAX
0046CB67 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0046CB6A |. E8 2176F9FF CALL UnStart.00404190
0046CB6F |. 8D4D DC LEA ECX,DWORD PTR SS:[EBP-24]
0046CB72 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
0046CB75 |. 8BC3 MOV EAX,EBX
0046CB77 |. E8 94060000 CALL UnStart.0046D210
0046CB7C |. 8B55 DC MOV EDX,DWORD PTR SS:[EBP-24]
0046CB7F |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0046CB82 |. E8 A974F9FF CALL UnStart.00404030
0046CB87 |. 68 A4CC4600 PUSH UnStart.0046CCA4 ; 1
0046CB8C |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
0046CB8F |. 50 PUSH EAX ;
0046CB90 |. B9 D4CC4600 MOV ECX,UnStart.0046CCD4 ; registerid
0046CB95 |. BA C4CC4600 MOV EDX,UnStart.0046CCC4 ; reginfo
0046CB9A |. 8BC6 MOV EAX,ESI
0046CB9C |. 8B38 MOV EDI,DWORD PTR DS:[EAX]
0046CB9E |. FF17 CALL DWORD PTR DS:[EDI]
0046CBA0 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
0046CBA3 |. 50 PUSH EAX ;
0046CBA4 |. 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C] ; 机器码 "5JVBVF3T"
0046CBA7 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] ; EDX=测试序列号
0046CBAA |. 8BC3 MOV EAX,EBX
0046CBAC |. E8 7B010000 CALL UnStart.0046CD2C ; 关键算法过程,F7进入
0046CBB1 |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
0046CBB4 |. 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14]
0046CBB7 |. E8 E877F9FF CALL UnStart.004043A4
0046CBBC |. 75 0F JNZ SHORT UnStart.0046CBCD ;经典爆破点,一跳就挂;
0046CBBE |. B2 01 MOV DL,1
0046CBC0 |. 8B83 0C030000 MOV EAX,DWORD PTR DS:[EBX+30C]
0046CBC6 |. E8 99ABFCFF CALL UnStart.00437764
0046CBCB |. EB 38 JMP SHORT UnStart.0046CC05
0046CBCD |> BA E8CC4600 MOV EDX,UnStart.0046CCE8 ; (未注册)
0046CBD2 |. 8B83 0C030000 MOV EAX,DWORD PTR DS:[EBX+30C]
0046CBD8 |. E8 97ACFCFF CALL UnStart.00437874
0046CBDD |. B2 01 MOV DL,1
0046CBDF |. 8B83 0C030000 MOV EAX,DWORD PTR DS:[EBX+30C]
0046CBE5 |. E8 7AABFCFF CALL UnStart.00437764
0046CBEA |. 8B9B 10030000 MOV EBX,DWORD PTR DS:[EBX+310]
0046CBF0 |. BA FCCC4600 MOV EDX,UnStart.0046CCFC ; 未注册版本只能使用两分钟。\n注册后可正常使用。
0046CBF5 |. 8BC3 MOV EAX,EBX
0046CBF7 |. E8 78ACFCFF CALL UnStart.00437874
0046CBFC |. B2 01 MOV DL,1
0046CBFE |. 8BC3 MOV EAX,EBX
0046CC00 |. E8 5FABFCFF CALL UnStart.00437764
0046CC05 |> 8BC6 MOV EAX,ESI
0046CC07 |. E8 3C66F9FF CALL UnStart.00403248
0046CC0C |. EB 38 JMP SHORT UnStart.0046CC46
0046CC0E |> BA E8CC4600 MOV EDX,UnStart.0046CCE8 ; (未注册)
0046CC13 |. 8B83 0C030000 MOV EAX,DWORD PTR DS:[EBX+30C]
0046CC19 |. E8 56ACFCFF CALL UnStart.00437874
0046CC1E |. B2 01 MOV DL,1
0046CC20 |. 8B83 0C030000 MOV EAX,DWORD PTR DS:[EBX+30C]
0046CC26 |. E8 39ABFCFF CALL UnStart.00437764
0046CC2B |. 8B9B 10030000 MOV EBX,DWORD PTR DS:[EBX+310]
0046CC31 |. BA FCCC4600 MOV EDX,UnStart.0046CCFC ; 未注册版本只能使用两分钟。\n注册后可正常使用。
0046CC36 |. 8BC3 MOV EAX,EBX
0046CC38 |. E8 37ACFCFF CALL UnStart.00437874
0046CC3D |. B2 01 MOV DL,1
0046CC3F |. 8BC3 MOV EAX,EBX
0046CC41 |. E8 1EABFCFF CALL UnStart.00437764
0046CC46 |> 33C0 XOR EAX,EAX
0046CC48 |. 5A POP EDX
0046CC49 |. 59 POP ECX
0046CC4A |. 59 POP ECX
0046CC4B |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
0046CC4E |. 68 68CC4600 PUSH UnStart.0046CC68
0046CC53 |> 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
0046CC56 |. BA 09000000 MOV EDX,9
0046CC5B |. E8 5C73F9FF CALL UnStart.00403FBC
0046CC60 \. C3 RETN
_____________
0046CBAC 处F7进入,看算法过程
0046CD2C /$ 55 PUSH EBP
0046CD2D |. 8BEC MOV EBP,ESP
0046CD2F |. 83C4 E8 ADD ESP,-18
0046CD32 |. 53 PUSH EBX
0046CD33 |. 56 PUSH ESI
0046CD34 |. 57 PUSH EDI
0046CD35 |. 33DB XOR EBX,EBX
0046CD37 |. 895D EC MOV DWORD PTR SS:[EBP-14],EBX
0046CD3A |. 895D E8 MOV DWORD PTR SS:[EBP-18],EBX
0046CD3D |. 894D F8 MOV DWORD PTR SS:[EBP-8],ECX
0046CD40 |. 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
0046CD43 |. 8B7D 08 MOV EDI,DWORD PTR SS:[EBP+8]
0046CD46 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0046CD49 |. E8 FA76F9FF CALL UnStart.00404448
0046CD4E |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0046CD51 |. E8 F276F9FF CALL UnStart.00404448
0046CD56 |. 33C0 XOR EAX,EAX
0046CD58 |. 55 PUSH EBP
0046CD59 |. 68 41CF4600 PUSH UnStart.0046CF41
0046CD5E |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0046CD61 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0046CD64 |. 33C0 XOR EAX,EAX
0046CD66 |. 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
0046CD69 |. 33C0 XOR EAX,EAX
0046CD6B |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
0046CD6E |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 序列号
0046CD71 |. E8 E274F9FF CALL UnStart.00404258 ; 取长度
0046CD76 |. 8BD8 MOV EBX,EAX
0046CD78 |. 85DB TEST EBX,EBX ; 不能等于0
0046CD7A |. 7E 14 JLE SHORT UnStart.0046CD90
0046CD7C |. BE 01000000 MOV ESI,1
0046CD81 |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4]
0046CD84 |. 0FB64430 FF |MOVZX EAX,BYTE PTR DS:[EAX+ESI-1]
0046CD89 |. 0145 F4 |ADD DWORD PTR SS:[EBP-C],EAX ; [EBP-C] 返回序列号ASCII之和,记为 S1
0046CD8C |. 46 |INC ESI
0046CD8D |. 4B |DEC EBX
0046CD8E |.^ 75 F1 \JNZ SHORT UnStart.0046CD81
0046CD90 |> 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0046CD93 |. E8 C074F9FF CALL UnStart.00404258
0046CD98 |. 8BD8 MOV EBX,EAX
0046CD9A |. 85DB TEST EBX,EBX ; 机器码的长度不能为0
0046CD9C |. 7E 14 JLE SHORT UnStart.0046CDB2
0046CD9E |. BE 01000000 MOV ESI,1
0046CDA3 |> 8B45 F8 /MOV EAX,DWORD PTR SS:[EBP-8]
0046CDA6 |. 0FB64430 FF |MOVZX EAX,BYTE PTR DS:[EAX+ESI-1]
0046CDAB |. 0145 F0 |ADD DWORD PTR SS:[EBP-10],EAX ; [EBP-10]计算机器码ASCII之和 记为S2
0046CDAE |. 46 |INC ESI
0046CDAF |. 4B |DEC EBX
0046CDB0 |.^ 75 F1 \JNZ SHORT UnStart.0046CDA3
0046CDB2 |> 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0046CDB5 |. 83E8 03 SUB EAX,3 ; S1 - 3
0046CDB8 |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
0046CDBB |. 4A DEC EDX ; S2 - 1
0046CDBC |. F7EA IMUL EDX ; 以上两者相乘
0046CDBE |. 99 CDQ
0046CDBF |. 33C2 XOR EAX,EDX
0046CDC1 |. 2BC2 SUB EAX,EDX
0046CDC3 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
0046CDC6 |. E8 31B1F9FF CALL UnStart.00407EFC ; 将结果转化为十进制无字符值
0046CDCB |. 8BC7 MOV EAX,EDI
0046CDCD |. 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14]
0046CDD0 |. E8 1772F9FF CALL UnStart.00403FEC ; 不重要
0046CDD5 |. 8B07 MOV EAX,DWORD PTR DS:[EDI]
0046CDD7 |. E8 7C74F9FF CALL UnStart.00404258 ; 不重要
0046CDDC |. 8BD8 MOV EBX,EAX
0046CDDE |. 85DB TEST EBX,EBX ; 长度不能为0
0046CDE0 |. 0F8E 29010000 JLE UnStart.0046CF0F
0046CDE6 |. BE 01000000 MOV ESI,1
0046CDEB |> 8B07 /MOV EAX,DWORD PTR DS:[EDI] ; 循环查表 adge0z0123u974
0046CDED |. 8A4430 FF |MOV AL,BYTE PTR DS:[EAX+ESI-1] ; 取大写值为真正注册码 OK
0046CDF1 |. 3C 31 |CMP AL,31
0046CDF3 |. 75 12 |JNZ SHORT UnStart.0046CE07
0046CDF5 |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CDF8 |. BA 5CCF4600 |MOV EDX,UnStart.0046CF5C ; a
0046CDFD |. E8 5E74F9FF |CALL UnStart.00404260
0046CE02 |. E9 00010000 |JMP UnStart.0046CF07
0046CE07 |> 3C 32 |CMP AL,32
0046CE09 |. 75 12 |JNZ SHORT UnStart.0046CE1D
0046CE0B |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CE0E |. BA 68CF4600 |MOV EDX,UnStart.0046CF68 ; d
0046CE13 |. E8 4874F9FF |CALL UnStart.00404260 ; (初始 cpu 选择)
0046CE18 |. E9 EA000000 |JMP UnStart.0046CF07
0046CE1D |> 3C 33 |CMP AL,33
0046CE1F |. 75 12 |JNZ SHORT UnStart.0046CE33
0046CE21 |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CE24 |. BA 74CF4600 |MOV EDX,UnStart.0046CF74 ; g
0046CE29 |. E8 3274F9FF |CALL UnStart.00404260
0046CE2E |. E9 D4000000 |JMP UnStart.0046CF07
0046CE33 |> 3C 34 |CMP AL,34
0046CE35 |. 75 12 |JNZ SHORT UnStart.0046CE49
0046CE37 |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CE3A |. BA 80CF4600 |MOV EDX,UnStart.0046CF80 ; e
0046CE3F |. E8 1C74F9FF |CALL UnStart.00404260
0046CE44 |. E9 BE000000 |JMP UnStart.0046CF07
0046CE49 |> 3C 35 |CMP AL,35
0046CE4B |. 75 12 |JNZ SHORT UnStart.0046CE5F
0046CE4D |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CE50 |. BA 8CCF4600 |MOV EDX,UnStart.0046CF8C ; 0
0046CE55 |. E8 0674F9FF |CALL UnStart.00404260
0046CE5A |. E9 A8000000 |JMP UnStart.0046CF07
0046CE5F |> 3C 36 |CMP AL,36
0046CE61 |. 75 12 |JNZ SHORT UnStart.0046CE75
0046CE63 |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CE66 |. BA 98CF4600 |MOV EDX,UnStart.0046CF98 ; z
0046CE6B |. E8 F073F9FF |CALL UnStart.00404260
0046CE70 |. E9 92000000 |JMP UnStart.0046CF07
0046CE75 |> 3C 37 |CMP AL,37
0046CE77 |. 75 0F |JNZ SHORT UnStart.0046CE88
0046CE79 |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CE7C |. BA 8CCF4600 |MOV EDX,UnStart.0046CF8C ; 0
0046CE81 |. E8 DA73F9FF |CALL UnStart.00404260
0046CE86 |. EB 7F |JMP SHORT UnStart.0046CF07
0046CE88 |> 3C 38 |CMP AL,38
0046CE8A |. 75 0F |JNZ SHORT UnStart.0046CE9B
0046CE8C |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CE8F |. BA A4CF4600 |MOV EDX,UnStart.0046CFA4 ; 1
0046CE94 |. E8 C773F9FF |CALL UnStart.00404260
0046CE99 |. EB 6C |JMP SHORT UnStart.0046CF07
0046CE9B |> 3C 39 |CMP AL,39
0046CE9D |. 75 0F |JNZ SHORT UnStart.0046CEAE
0046CE9F |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CEA2 |. BA B0CF4600 |MOV EDX,UnStart.0046CFB0 ; 2
0046CEA7 |. E8 B473F9FF |CALL UnStart.00404260
0046CEAC |. EB 59 |JMP SHORT UnStart.0046CF07
0046CEAE |> 3C 30 |CMP AL,30
0046CEB0 |. 75 0F |JNZ SHORT UnStart.0046CEC1
0046CEB2 |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CEB5 |. BA BCCF4600 |MOV EDX,UnStart.0046CFBC ; 3
0046CEBA |. E8 A173F9FF |CALL UnStart.00404260
0046CEBF |. EB 46 |JMP SHORT UnStart.0046CF07
0046CEC1 |> 3C 20 |CMP AL,20
0046CEC3 |. 75 0F |JNZ SHORT UnStart.0046CED4
0046CEC5 |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CEC8 |. BA C8CF4600 |MOV EDX,UnStart.0046CFC8 ; u
0046CECD |. E8 8E73F9FF |CALL UnStart.00404260
0046CED2 |. EB 33 |JMP SHORT UnStart.0046CF07
0046CED4 |> 3C 5F |CMP AL,5F
0046CED6 |. 75 0F |JNZ SHORT UnStart.0046CEE7
0046CED8 |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CEDB |. BA D4CF4600 |MOV EDX,UnStart.0046CFD4 ; 9
0046CEE0 |. E8 7B73F9FF |CALL UnStart.00404260
0046CEE5 |. EB 20 |JMP SHORT UnStart.0046CF07
0046CEE7 |> 3C 2D |CMP AL,2D
0046CEE9 |. 75 0F |JNZ SHORT UnStart.0046CEFA
0046CEEB |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CEEE |. BA E0CF4600 |MOV EDX,UnStart.0046CFE0 ; 7
0046CEF3 |. E8 6873F9FF |CALL UnStart.00404260
0046CEF8 |. EB 0D |JMP SHORT UnStart.0046CF07
0046CEFA |> 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
0046CEFD |. BA ECCF4600 |MOV EDX,UnStart.0046CFEC ; 4
0046CF02 |. E8 5973F9FF |CALL UnStart.00404260
0046CF07 |> 46 |INC ESI
0046CF08 |. 4B |DEC EBX
0046CF09 |.^ 0F85 DCFEFFFF \JNZ UnStart.0046CDEB
0046CF0F |> 8BC7 MOV EAX,EDI
0046CF11 |. 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
0046CF14 |. E8 D370F9FF CALL UnStart.00403FEC
0046CF19 |. 33C0 XOR EAX,EAX
0046CF1B |. 5A POP EDX
0046CF1C |. 59 POP ECX
0046CF1D |. 59 POP ECX
0046CF1E |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
0046CF21 |. 68 48CF4600 PUSH UnStart.0046CF48
0046CF26 |> 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
0046CF29 |. BA 02000000 MOV EDX,2
0046CF2E |. E8 8970F9FF CALL UnStart.00403FBC
0046CF33 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
0046CF36 |. BA 02000000 MOV EDX,2
0046CF3B |. E8 7C70F9FF CALL UnStart.00403FBC
0046CF40 \. C3 RETN
看代码注释已经可以理解了。
算法总结:
1、( 序列号ASCII值 - 3 ) * ( 机器码ASCII值 - 1 ) 结果保存为 R1;
2、把R1转化为十进制无符号值,再把结果查表adge0z0123u974,取大写结果为真正注册码
至于破解,那就更简单了。把0046CBBC 处JNZ改为JE即可,(或把75改74或NOP掉即可).
[Delphi算法]
function StrToInt(S: string): integer;
begin
Val(S, Result, Result);
end;
function GetAscii(str:string):LongWord;
var
i:integer;
ii:longword;
begin
ii:=0;
for i:= 1 to length(str) do
ii:=ii+ ord(str[i]);
Result:=ii;
end;
function CalculateCode(SerialNumber, MachineCode: string): string;
//const
// CHART : String = 'ADGE0Z0123U974';
var
i:integer;
ii:longWord;
str,Reg:string;
begin
ii:=0;
ii:=(GetAscii(SerialNumber)-3) * (GetAscii(MachineCode)-1);
str:= inttostr(ii); //计算结果转化为字符串
for i:=1 to Length(str) do
begin
case strtoint(str[i]) of //取字符串第i位转换成数字,
1: Reg:= Reg+ 'A';
2: Reg:= Reg+ 'D';
3: Reg:= Reg+ 'G';
4: Reg:= Reg+ 'E';
5: Reg:= Reg+ '0';
6: Reg:= Reg+ 'Z';
7: Reg:= Reg+ '0';
8: Reg:= Reg+ '1';
9: Reg:= Reg+ '2';
0: Reg:= Reg+ '3'
else Reg:= Reg+ '4';
end;
end;
Result:=Reg;
end;
本文只作学习交流用,失误之处敬请诸位大侠赐教!
请勿用于非法用途。请支持原创国产软件!“海浪轻风”不提供已编译注册机下载
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2008年02月12日 0:07:09
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)