【破解作者】 blue_devil_bomb[DFCG][BCG]
【作者邮箱】 [email]ninesunnine@sina.com[/email]
【作者主页】 www.chinadfcg.com
【使用工具】 peid OllyDbg1.10
【破解平台】 Win2000
【软件名称】 中华灯谜V2004 build 02.01
【下载地址】 http://laofuzi.3322.net
【软件简介】 〖中华灯谜〗软件是目前国产最好的灯谜软件,软件受到数十家刊物的特别撰文推荐。
软件中集成的灯谜类别齐全,灯谜条数可能是一个足以令你目瞪口呆的数字。
软件支持灯谜的模糊搜索、各方式排序、随时添加、修改、删除等,使用简单,功能强大。
【软件大小】 1.43MB
【加壳方式】 未加壳
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】
用PEID查看为Borland Dephi 6.0 or 7.0本想用DEDE来破之,可由于本人不太会用,且由于没有在DEDE中
找到很有用的信息
于是就使出我的最爱OLLYDBG 1.10。
我们知道Borland Dephi对于我们常用的断点是无效的,这里我采用的是回溯设断法找注册算法。
何谓回溯设断法就是我们依据一定的信息找到一个有用的断点后,依据调用的CALL来逐步找到调用的源,
在源上
下断就会找到我们输入信息的运算函数。
利用回溯设断法我们设到如下断点,在订单号中输入1234,注册码中输入1234567890点击确认输入中断于
如下:
0052D068 /. 55 PUSH EBP
0052D069 |. 8BEC MOV EBP,ESP
0052D06B |. B9 17000000 MOV ECX,17
0052D070 |> 6A 00 /PUSH 0
0052D072 |. 6A 00 |PUSH 0
0052D074 |. 49 |DEC ECX
0052D075 |.^75 F9 \JNZ SHORT zhdm.0052D070
0052D077 |. 53 PUSH EBX
0052D078 |. 56 PUSH ESI
0052D079 |. 8BD8 MOV EBX,EAX
0052D07B |. 33C0 XOR EAX,EAX
0052D07D |. 55 PUSH EBP
0052D07E |. 68 DED25200 PUSH zhdm.0052D2DE
0052D083 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0052D086 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0052D089 |. 68 80000000 PUSH 80 ; /BufSize = 80 (128.)
0052D08E |. 8D85 7BFFFFFF LEA EAX,DWORD PTR SS:[EBP-85] ; |
0052D094 |. 50 PUSH EAX ; |Buffer
0052D095 |. E8 6AA1EDFF CALL <JMP.&kernel32.GetSystemDirectoryA> ; \GetSystemDirectoryA
0052D09A |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0052D09D |. 8D95 7BFFFFFF LEA EDX,DWORD PTR SS:[EBP-85]
0052D0A3 |. B9 81000000 MOV ECX,81
0052D0A8 |. E8 2F79EDFF CALL zhdm.004049DC
0052D0AD |. 8D95 74FFFFFF LEA EDX,DWORD PTR SS:[EBP-8C]
0052D0B3 |. 8B83 84030000 MOV EAX,DWORD PTR DS:[EBX+384]
0052D0B9 |. E8 0E6EF1FF CALL zhdm.00443ECC ;返回输入注册码长度
0052D0BE |. 83BD 74FFFFFF >CMP DWORD PTR SS:[EBP-8C],0 ; 输入的注册码是否为空
0052D0C5 |. 74 1A JE SHORT zhdm.0052D0E1 ;为空报警
0052D0C7 |. 8D95 70FFFFFF LEA EDX,DWORD PTR SS:[EBP-90]
0052D0CD |. 8B83 7C030000 MOV EAX,DWORD PTR DS:[EBX+37C]
0052D0D3 |. E8 F46DF1FF CALL zhdm.00443ECC ;返回输入的订单号
0052D0D8 |. 83BD 70FFFFFF >CMP DWORD PTR SS:[EBP-90],0 ;输入的订单号是否为空
0052D0DF |. 75 15 JNZ SHORT zhdm.0052D0F6 ;为空报警
0052D0E1 |> BA F0D25200 MOV EDX,zhdm.0052D2F0
0052D0E6 |. 8B83 BC030000 MOV EAX,DWORD PTR DS:[EBX+3BC]
0052D0EC |. E8 577FFDFF CALL zhdm.00505048
0052D0F1 |. E9 6B010000 JMP zhdm.0052D261
0052D0F6 |> 8D95 6CFFFFFF LEA EDX,DWORD PTR SS:[EBP-94]
0052D0FC |. 8B83 84030000 MOV EAX,DWORD PTR DS:[EBX+384]
0052D102 |. E8 C56DF1FF CALL zhdm.00443ECC
0052D107 |. 8B85 6CFFFFFF MOV EAX,DWORD PTR SS:[EBP-94] ;将输入的注册码放入EAX
0052D10D |. 50 PUSH EAX
0052D10E |. 8D95 60FFFFFF LEA EDX,DWORD PTR SS:[EBP-A0]
0052D114 |. 8B83 7C030000 MOV EAX,DWORD PTR DS:[EBX+37C]
0052D11A |. E8 AD6DF1FF CALL zhdm.00443ECC
0052D11F |. 8B85 60FFFFFF MOV EAX,DWORD PTR SS:[EBP-A0] ;将输入的订单号放入EAX
0052D125 |. E8 5AC4EDFF CALL zhdm.00409584 ; 订单号的值由DEC到HEX形式放
入EAX
0052D12A |. B9 15030000 MOV ECX,315
0052D12F |. 99 CDQ
0052D130 |. F7F9 IDIV ECX ;EDX=EAX%ECX;EAX=EAX/ECX;
0052D132 |. 8BC2 MOV EAX,EDX ;EAX=EDX;
0052D134 |. 8D95 64FFFFFF LEA EDX,DWORD PTR SS:[EBP-9C]
0052D13A |. E8 E1C3EDFF CALL zhdm.00409520 ; HexToDec
0052D13F |. FFB5 64FFFFFF PUSH DWORD PTR SS:[EBP-9C] ; ECX中的HexToDec值,也就是
余数的十进制值(后面用)=Rushu
0052D145 |. 8D95 54FFFFFF LEA EDX,DWORD PTR SS:[EBP-AC]
0052D14B |. 8B83 7C030000 MOV EAX,DWORD PTR DS:[EBX+37C]
0052D151 |. E8 766DF1FF CALL zhdm.00443ECC ; 订单号长度存入EAX
0052D156 |. 8B85 54FFFFFF MOV EAX,DWORD PTR SS:[EBP-AC] ; 订单号放入EAX
0052D15C |. E8 23C4EDFF CALL zhdm.00409584 ; DecToHex十进制变十六进制放
入EAX
0052D161 |. 8D95 58FFFFFF LEA EDX,DWORD PTR SS:[EBP-A8]
0052D167 |. E8 C4E0FFFF CALL zhdm.0052B230 ; 处理上面的值过程如下:
{*********************CALL zhdm.0052b230
0052B230 /$ 55 PUSH EBP
0052B231 |. 8BEC MOV EBP,ESP
0052B233 |. 33C9 XOR ECX,ECX
0052B235 |. 51 PUSH ECX
0052B236 |. 51 PUSH ECX
0052B237 |. 51 PUSH ECX
0052B238 |. 51 PUSH ECX
0052B239 |. 53 PUSH EBX
0052B23A |. 56 PUSH ESI
0052B23B |. 8BF2 MOV ESI,EDX
0052B23D |. 8BD8 MOV EBX,EAX
0052B23F |. 33C0 XOR EAX,EAX
0052B241 |. 55 PUSH EBP
0052B242 |. 68 00B35200 PUSH zhdm.0052B300
0052B247 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0052B24A |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0052B24D |. 81F3 F1250B00 XOR EBX,0B25F1 ; 订单号值
^0xB25F1=Blue
0052B253 |. 8BC3 MOV EAX,EBX
0052B255 |. 33D2 XOR EDX,EDX
0052B257 |. 52 PUSH EDX ; /Arg2 => 00000000
0052B258 |. 50 PUSH EAX ; |Arg1
0052B259 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] ; |
0052B25C |. E8 EFE2EDFF CALL zhdm.00409550 ; \zhdm.00409550
0052B261 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; Blue值 HexToDEC
=Blue
0052B264 |. 0FB600 MOVZX EAX,BYTE PTR DS:[EAX] ; Blue[0]
0052B267 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ;
0052B26A |. 0FB652 01 MOVZX EDX,BYTE PTR DS:[EDX+1] ; Blue[1]
0052B26E |. 03C2 ADD EAX,EDX ; S1=Blue1[0]+Blue[1];
0052B270 |. B9 05000000 MOV ECX,5
0052B275 |. 99 CDQ
0052B276 |. F7F9 IDIV ECX
0052B278 |. 80C2 34 ADD DL,34 ; DL=S1%5;
0052B27B |. 8855 F8 MOV BYTE PTR SS:[EBP-8],DL ; Save S1-->[ebp-8]
0052B27E |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0052B281 |. 0FB640 02 MOVZX EAX,BYTE PTR DS:[EAX+2] ; Blue[2]
0052B285 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
0052B288 |. 0FB652 03 MOVZX EDX,BYTE PTR DS:[EDX+3] ; Blue[3]
0052B28C |. 03C2 ADD EAX,EDX ; S2=Blue[2]+Blue[3];
0052B28E |. B9 05000000 MOV ECX,5
0052B293 |. 99 CDQ
0052B294 |. F7F9 IDIV ECX
0052B296 |. 8BDA MOV EBX,EDX
0052B298 |. 80C3 33 ADD BL,33 ; BL=S2%5;
0052B29B |. 885D F9 MOV BYTE PTR SS:[EBP-7],BL ; Save BL->[EBP-7]
0052B29E |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0052B2A1 |. 8A55 F8 MOV DL,BYTE PTR SS:[EBP-8] ;
0052B2A4 |. E8 AB96EDFF CALL zhdm.00404954
0052B2A9 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0052B2AC |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0052B2AF |. B9 1B000000 MOV ECX,1B
0052B2B4 |. E8 539AEDFF CALL zhdm.00404D0C ;S1值联接至Blue串后=Blue1
0052B2B9 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
0052B2BC |. 8BD3 MOV EDX,EBX
0052B2BE |. E8 9196EDFF CALL zhdm.00404954
0052B2C3 |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
0052B2C6 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0052B2C9 |. B9 19000000 MOV ECX,19
0052B2CE |. E8 399AEDFF CALL zhdm.00404D0C ;S2值联接至Blue1串后
=Blue1
0052B2D3 |. 8BC6 MOV EAX,ESI
0052B2D5 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ;EDX指向Blue1地址指针
0052B2D8 |. E8 EB94EDFF CALL zhdm.004047C8
0052B2DD |. 33C0 XOR EAX,EAX
0052B2DF |. 5A POP EDX
0052B2E0 |. 59 POP ECX
0052B2E1 |. 59 POP ECX
0052B2E2 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
0052B2E5 |. 68 07B35200 PUSH zhdm.0052B307
0052B2EA |> 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
0052B2ED |. BA 02000000 MOV EDX,2
0052B2F2 |. E8 A194EDFF CALL zhdm.00404798
0052B2F7 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0052B2FA |. E8 7594EDFF CALL zhdm.00404774
0052B2FF \. C3 RETN
0052B300 .^E9 B78DEDFF JMP zhdm.004040BC
0052B305 .^EB E3 JMP SHORT zhdm.0052B2EA
0052B307 . 5E POP ESI
0052B308 . 5B POP EBX
0052B309 . 8BE5 MOV ESP,EBP
0052B30B . 5D POP EBP
0052B30C . C3 RETN
}*********************CALL zhdm.0052b230
0052D16C |. 8B85 58FFFFFF MOV EAX,DWORD PTR SS:[EBP-A8] ;指向Blue1的地址指针
0052D172 |. E8 0DC4EDFF CALL zhdm.00409584 ;将Blue1转换成16进制数放入
EAX
0052D177 |. 8D95 5CFFFFFF LEA EDX,DWORD PTR SS:[EBP-A4] ;堆栈值中包括订单号和订单号
运算保存的余数Rushu
0052D17D |. E8 8EE1FFFF CALL zhdm.0052B310 ;Blue1与Rushu运算
{*********************CALL zhdm.0052B310
0052B310 /$ 55 PUSH EBP
0052B311 |. 8BEC MOV EBP,ESP
0052B313 |. 33C9 XOR ECX,ECX
0052B315 |. 51 PUSH ECX
0052B316 |. 51 PUSH ECX
0052B317 |. 51 PUSH ECX
0052B318 |. 51 PUSH ECX
0052B319 |. 51 PUSH ECX
0052B31A |. 51 PUSH ECX
0052B31B |. 53 PUSH EBX
0052B31C |. 56 PUSH ESI
0052B31D |. 8BF2 MOV ESI,EDX
0052B31F |. 8BD8 MOV EBX,EAX
0052B321 |. 33C0 XOR EAX,EAX
0052B323 |. 55 PUSH EBP
0052B324 |. 68 5CB45200 PUSH zhdm.0052B45C
0052B329 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0052B32C |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0052B32F |. 81F3 8776FBDD XOR EBX,DDFB7687
;Blue1^0xDDFB7687=Blue2
0052B335 |. 8BC3 MOV EAX,EBX
0052B337 |. 33D2 XOR EDX,EDX
0052B339 |. 52 PUSH EDX ; /Arg2 => 00000000
0052B33A |. 50 PUSH EAX ; |Arg1
0052B33B |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] ; |
0052B33E |. E8 0DE2EDFF CALL zhdm.00409550 ; \zhdm.00409550
0052B343 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ;Blue2 的DEC形式
0052B346 |. 0FB600 MOVZX EAX,BYTE PTR DS:[EAX] ;Blue2[0]
0052B349 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
0052B34C |. 0FB652 01 MOVZX EDX,BYTE PTR DS:[EDX+1] ;Blue2[1]
0052B350 |. 03C2 ADD EAX,EDX ;S1=Blue2[0]+Blue2[1];
0052B352 |. B9 05000000 MOV ECX,5
0052B357 |. 99 CDQ
0052B358 |. F7F9 IDIV ECX
0052B35A |. 80C2 66 ADD DL,66 ;DL=S1%5;S1=DL+0x66;
0052B35D |. 8855 F8 MOV BYTE PTR SS:[EBP-8],DL
0052B360 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0052B363 |. 0FB640 02 MOVZX EAX,BYTE PTR DS:[EAX+2] ;Blue2[2];
0052B367 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
0052B36A |. 0FB652 03 MOVZX EDX,BYTE PTR DS:[EDX+3] ;Blue2[3];
0052B36E |. 03C2 ADD EAX,EDX ;S2=Blue2[2]+Blue2[3];
0052B370 |. B9 05000000 MOV ECX,5
0052B375 |. 99 CDQ
0052B376 |. F7F9 IDIV ECX
0052B378 |. 80C2 75 ADD DL,75 ;DL=S2%5;S2=DL+0x75;
0052B37B |. 8855 F9 MOV BYTE PTR SS:[EBP-7],DL
0052B37E |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0052B381 |. 0FB640 04 MOVZX EAX,BYTE PTR DS:[EAX+4] ;Blue2[4]
0052B385 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
0052B388 |. 0FB652 05 MOVZX EDX,BYTE PTR DS:[EDX+5] ;Blue2[5]
0052B38C |. 03C2 ADD EAX,EDX ;S3=Blue2[4]+Blue2[5];
0052B38E |. B9 05000000 MOV ECX,5
0052B393 |. 99 CDQ
0052B394 |. F7F9 IDIV ECX
0052B396 |. 80C2 7A ADD DL,7A ;DL=S3%5;S3=DL+0x7A
0052B399 |. 8855 FA MOV BYTE PTR SS:[EBP-6],DL
0052B39C |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0052B39F |. 0FB640 06 MOVZX EAX,BYTE PTR DS:[EAX+6] ;Blue2[6];
0052B3A3 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
0052B3A6 |. 0FB652 07 MOVZX EDX,BYTE PTR DS:[EDX+7] ;Blue2[7]
0052B3AA |. 03C2 ADD EAX,EDX ;S4=Blue2[6]+BLue2[7];
0052B3AC |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
0052B3AF |. 0FB652 08 MOVZX EDX,BYTE PTR DS:[EDX+8] ;Blue2[8];
0052B3B3 |. 03C2 ADD EAX,EDX
S4=Blue2[6]+BLue2[7]+Blue2[8];
0052B3B5 |. B9 05000000 MOV ECX,5
0052B3BA |. 99 CDQ
0052B3BB |. F7F9 IDIV ECX
0052B3BD |. 80C2 69 ADD DL,69 ;DL=S4%5;S4=DL+x69;
0052B3C0 |. 8855 FB MOV BYTE PTR SS:[EBP-5],DL
0052B3C3 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0052B3C6 |. 8A55 F8 MOV DL,BYTE PTR SS:[EBP-8] ;DL=S1;
0052B3C9 |. E8 8695EDFF CALL zhdm.00404954 ;
0052B3CE |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0052B3D1 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0052B3D4 |. B9 07000000 MOV ECX,7
0052B3D9 |. E8 2E99EDFF CALL zhdm.00404D0C ;DL值加入Blue2串的第7个
位置(从1开始)形成新串值Blue2
0052B3DE |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
0052B3E1 |. 8A55 FB MOV DL,BYTE PTR SS:[EBP-5] ;DL=S4;
0052B3E4 |. E8 6B95EDFF CALL zhdm.00404954
0052B3E9 |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
0052B3EC |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0052B3EF |. B9 03000000 MOV ECX,3
0052B3F4 |. E8 1399EDFF CALL zhdm.00404D0C ;DL值加入Blue2串的第3个
位置(从1开始)形成新串值Blue2
0052B3F9 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
0052B3FC |. 8A55 F9 MOV DL,BYTE PTR SS:[EBP-7] ;DL=S2;
0052B3FF |. E8 5095EDFF CALL zhdm.00404954
0052B404 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
0052B407 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0052B40A |. B9 05000000 MOV ECX,5
0052B40F |. E8 F898EDFF CALL zhdm.00404D0C ;DL值加入Blue2串的第5个
位置(从1开始)形成新串值Blue2
0052B414 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
0052B417 |. 8A55 FA MOV DL,BYTE PTR SS:[EBP-6] ;DL=S3
0052B41A |. E8 3595EDFF CALL zhdm.00404954
0052B41F |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
0052B422 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0052B425 |. B9 09000000 MOV ECX,9
0052B42A |. E8 DD98EDFF CALL zhdm.00404D0C ;DL值加入Blue2串的第9个
位置(从1开始)形成新串值Blue2
0052B42F |. 8BC6 MOV EAX,ESI
0052B431 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ;最后生成的Blue2串放入
EDX
0052B434 |. E8 8F93EDFF CALL zhdm.004047C8
0052B439 |. 33C0 XOR EAX,EAX
0052B43B |. 5A POP EDX
0052B43C |. 59 POP ECX
0052B43D |. 59 POP ECX
0052B43E |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
0052B441 |. 68 63B45200 PUSH zhdm.0052B463
0052B446 |> 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
0052B449 |. BA 04000000 MOV EDX,4
0052B44E |. E8 4593EDFF CALL zhdm.00404798
0052B453 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0052B456 |. E8 1993EDFF CALL zhdm.00404774
0052B45B \. C3 RETN
0052B45C .^E9 5B8CEDFF JMP zhdm.004040BC
0052B461 .^EB E3 JMP SHORT zhdm.0052B446
0052B463 . 5E POP ESI
0052B464 . 5B POP EBX
0052B465 . 8BE5 MOV ESP,EBP
0052B467 . 5D POP EBP
0052B468 . C3 RETN
}*********************CALL zhdm.0052B310
0052D182 |. FFB5 5CFFFFFF PUSH DWORD PTR SS:[EBP-A4]
0052D188 |. 68 10D35200 PUSH zhdm.0052D310
0052D18D |. 8D85 68FFFFFF LEA EAX,DWORD PTR SS:[EBP-98]
0052D193 |. BA 03000000 MOV EDX,3
0052D198 |. E8 4F79EDFF CALL zhdm.00404AEC ;生成正解的注册码
{*********************CALL zhdm.00404AEC
00404AEC $ 53 PUSH EBX
00404AED . 56 PUSH ESI
00404AEE . 57 PUSH EDI
00404AEF . 52 PUSH EDX
00404AF0 . 50 PUSH EAX
00404AF1 . 89D3 MOV EBX,EDX
00404AF3 . 31FF XOR EDI,EDI
00404AF5 . 8B4C94 14 MOV ECX,DWORD PTR SS:[ESP+EDX*4+14] ;Yushu
00404AF9 . 85C9 TEST ECX,ECX
00404AFB . 74 06 JE SHORT zhdm.00404B03
00404AFD . 3908 CMP DWORD PTR DS:[EAX],ECX
00404AFF . 75 02 JNZ SHORT zhdm.00404B03
00404B01 . 89C7 MOV EDI,EAX
00404B03 > 31C0 XOR EAX,EAX
00404B05 > 8B4C94 14 MOV ECX,DWORD PTR SS:[ESP+EDX*4+14] ;Blue2
00404B09 . 85C9 TEST ECX,ECX
00404B0B . 74 09 JE SHORT zhdm.00404B16
00404B0D . 0341 FC ADD EAX,DWORD PTR DS:[ECX-4] ;EAX存放Yushu十进制串长度
,[ECX-4]存放Blue2串长度
00404B10 . 39CF CMP EDI,ECX
00404B12 . 75 02 JNZ SHORT zhdm.00404B16
00404B14 . 31FF XOR EDI,EDI
00404B16 > 4A DEC EDX
00404B17 .^75 EC JNZ SHORT zhdm.00404B05
00404B19 . 85FF TEST EDI,EDI
00404B1B . 74 14 JE SHORT zhdm.00404B31
00404B1D . 89C2 MOV EDX,EAX
00404B1F . 89F8 MOV EAX,EDI
00404B21 . 8B37 MOV ESI,DWORD PTR DS:[EDI]
00404B23 . 8B76 FC MOV ESI,DWORD PTR DS:[ESI-4]
00404B26 . E8 85020000 CALL zhdm.00404DB0
00404B2B . 57 PUSH EDI
00404B2C . 0337 ADD ESI,DWORD PTR DS:[EDI]
00404B2E . 4B DEC EBX
00404B2F . EB 08 JMP SHORT zhdm.00404B39
00404B31 > E8 02FDFFFF CALL zhdm.00404838
00404B36 . 50 PUSH EAX
00404B37 . 89C6 MOV ESI,EAX
00404B39 > 8B449C 18 MOV EAX,DWORD PTR SS:[ESP+EBX*4+18] ;依次取Yush和Blue2十进制串
00404B3D . 89F2 MOV EDX,ESI
00404B3F . 85C0 TEST EAX,EAX
00404B41 . 74 0A JE SHORT zhdm.00404B4D
00404B43 . 8B48 FC MOV ECX,DWORD PTR DS:[EAX-4] ;Yush和Blue2串长度
00404B46 . 01CE ADD ESI,ECX
00404B48 . E8 C7DEFFFF CALL zhdm.00402A14 ;串联接后尾部插入字'^'
00404B4D > 4B DEC EBX
00404B4E .^75 E9 JNZ SHORT zhdm.00404B39
00404B50 . 5A POP EDX
00404B51 . 58 POP EAX
00404B52 . 85FF TEST EDI,EDI
00404B54 . 75 0C JNZ SHORT zhdm.00404B62
00404B56 . 85D2 TEST EDX,EDX
00404B58 . 74 03 JE SHORT zhdm.00404B5D
00404B5A . FF4A F8 DEC DWORD PTR DS:[EDX-8]
00404B5D > E8 66FCFFFF CALL zhdm.004047C8
00404B62 > 5A POP EDX
00404B63 . 5F POP EDI
00404B64 . 5E POP ESI
00404B65 . 5B POP EBX
00404B66 . 58 POP EAX
00404B67 . 8D2494 LEA ESP,DWORD PTR SS:[ESP+EDX*4]
00404B6A . FFE0 JMP EAX
00404B6C . C3 RETN
}*********************CALL zhdm.00404AEC
0052D19D |. 8B95 68FFFFFF MOV EDX,DWORD PTR SS:[EBP-98] ;正确的注册码,这里可以作内存
注册机
0052D1A3 |. 58 POP EAX ;输入的试炼码
0052D1A4 |. E8 C779EDFF CALL zhdm.00404B70 ;正确的注册码与试炼码的比较
0052D1A9 |. 0F85 95000000 JNZ zhdm.0052D244 ;不相等跳到出错信息,这里可以
爆破
算法描述
1.设ddh为输入的订单号
2.yushu=ddh%0x315;
3.blue=ddh^0xB25F1;转换成串
4.blue=blue+[(blue[0]+blue[1])%5+0x34]+[(blue[2]+blue[3])%5+0x33];转换成整数
5.blue1=blue^DDFB7687;
6.s1=(blue1[0]+blue1[1])%5+0x66;
s2=(blue1[2]+blue1[3])%5+0x75;
s3=(blue1[4]+blue1[5])%5+0x7a;
s4=(blue1[6]+blue1[7]+blue1[8])%5+0x69;
7.blue1转换成串;
串blue1的第7个位置插入S1(从1开始)生成新串blue1;
串blue1的第3个位置插入S4(从1开始)生成新串blue1;
串blue1的第5个位置插入S2(从1开始)生成新串blue1;
串blue1的第9个位置插入S3(从1开始)生成新串blue1;
8.yushu转换成串
设注册码为zcm
zcm=yush+blue1+'^'
由于版权问题我就不附注册机了,注册机源程序也就不附了,有兴趣的可以编写一下.
不过我还是给出一个注册号:
订单号:12345678
注册码:19525l9u087{i883
不过该软件注册成功后,如果订单号短的话,就会重启后显示没有注册,最好是8位的订单号
注册完成的信息可能存放在了c:\\winnt\\system32\\coin_o_38.dll文件里。
注:该注册的订单号必须大于1700000,否则注册不成功显然当时显示注册成功了!具体见下:
在程序关闭时调用:
0052CFC3 |. 3D A0F01900 CMP EAX,19F0A0 ;eax 为订单号值与0x19F0A0=1700000比较
0052CFC8 |. 7F 1E JG SHORT zhdm.0052CFE8
0052CFCA |> 8D85 64FFFFFF LEA EAX,DWORD PTR SS:[EBP-9C]
0052CFD0 |. B9 24D05200 MOV ECX,zhdm.0052D024 ; ASCII "\CoIn_o_38.dll"
0052CFD5 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
0052CFD8 |. E8 9B7AEDFF CALL zhdm.00404A78
0052CFDD |. 8B85 64FFFFFF MOV EAX,DWORD PTR SS:[EBP-9C]
0052CFE3 |. E8 0CC8EDFF CALL zhdm.004097F4 ; 调用删除\CoIn_o_38.dll
0052CFE8 |> 33C0 XOR EAX,EAX
0052CFEA |. 5A POP EDX
0052CFEB |. 59 POP ECX
0052CFEC |. 59 POP ECX
0052CFED |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
0052CFF0 |. 68 15D05200 PUSH zhdm.0052D015
0052CFF5 |> 8D85 64FFFFFF LEA EAX,DWORD PTR SS:[EBP-9C]
0052CFFB |. BA 05000000 MOV EDX,5
0052D000 |. E8 9377EDFF CALL zhdm.00404798
0052D005 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0052D008 |. E8 6777EDFF CALL zhdm.00404774
0052D00D \. C3 RETN
004097F4 /$ 53 PUSH EBX
004097F5 |. 8BD8 MOV EBX,EAX
004097F7 |. 8BC3 MOV EAX,EBX
004097F9 |. E8 26B4FFFF CALL zhdm.00404C24
004097FE |. 50 PUSH EAX ; /FileName
004097FF |. E8 28D9FFFF CALL <JMP.&kernel32.DeleteFileA> ; \DeleteFileA
00409804 |. 83F8 01 CMP EAX,1
00409807 |. 1BC0 SBB EAX,EAX
00409809 |. 40 INC EAX
0040980A |. 5B POP EBX
0040980B \. C3 RETN
--------------------------------------------------------------------------------
【破解总结】
该程序不好下断点,且由于DEDE我不太会用,没有在DEDE的编译信息中找到有用的信息,因此用OLLYDBG来跟
踪,Dephi的程序的确是有点麻烦,可能是我对Dephi编程不懂的原因吧!看来以后还得玩玩Dephi编程.
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)