【破解作者】 xcs
【作者邮箱】 xcs2356.126.com
【使用工具】 c32asm,peid,regshot1.61
【破解平台】 Win9x/NT/2000/XP
【软件名称】 esdps4.01
【软件简介】 这是一款工程测量专业软件,无论是界面还是功能相当不错.未注册用户只能使用150次.注册费180元.
下载地址:
http://download.5iyt.com/softview/softview_4266.html
【软件大小】 2.02
【加壳方式】 aspack2.12
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:);献丑了!!
--------------------------------------------------------------------------------
【破解内容】
以前我破解了这个版本,去掉了NAG,后来有朋友反映说软件已经过期,@_@.我倒.
拿来一看,果真过期了(原版没过期,说明是破解引起的),详细分析一下一团糟。干脆
来个重新破解.注册码嘛很遗憾没找到.只有爆破了,^_^!!各位大哥见笑了.
分析之后有以下几处需要解决:
1、去掉启动NAG
2、去掉次数限制
3、去掉“未注册”字样
4、去掉计算NAG
5、解决过期问题
先脱壳,再让我一个一个来:
1、用TRW+F10粗跟踪,再通过分析汇编代码,发现以下信息:
::00413B56:: 8BCE MOV ECX, ESI
::00413B58:: E8 8B1E0600 CALL 004759E8
::00413B5D:: 6A 04 PUSH 4
::00413B5F:: 8BCE MOV ECX, ESI
::00413B61:: E8 7C1E0600 CALL 004759E2
::00413B66:: 8BCE MOV ECX, ESI
::00413B68:: E8 53070000 CALL 004142C0
::00413B6D:: 84C0 TEST AL, AL
::00413B6F:: 0F85 1A020000 JNZ 00413D8F
::00413B75:: 6A 00 PUSH 0
::00413B77:: 8D4C24 5C LEA ECX, DWORD PTR [ESP+5C]
::00413B7B:: E8 10410400 CALL 00457C90
::00413B80:: 8D4C24 58 LEA ECX, DWORD PTR [ESP+58]
::00413B84:: C78424 1C050000 01000000 MOV DWORD PTR [ESP+51C], 1
::00413B8F:: E8 FE190600 CALL 00475592 \此处就是调用启动注册对话框的CALL,NOP掉.
过期问题由此引起,不知道在此CALL内作了
什么手脚。我跟了半天,一头雾水。@_@
::00413B94:: 83F8 02 CMP EAX, 2
::00413B97:: 0F85 CB000000 JNZ 00413C68
::00413B9D:: 8D8C24 10050000 LEA ECX, DWORD PTR [ESP+510]
::00413BA4:: C78424 1C050000 0A000000 MOV DWORD PTR [ESP+51C], A
::00413BAF:: E8 941B0600 CALL 00475748
::00413BB4:: 8D8C24 0C050000 LEA ECX, DWORD PTR [ESP+50C]
2、解决次数问题,先用注册表监视工具regshot1.61监视,发现程序的注册信息和使用次数放在往注册表里,每次启动是读写注册表。
用C32ASM反汇编,参考字符串“BCGPControlBar-59392”来到这里。
::00413C63:: E9 1E020000 JMP 00413E86
::00413C68:: 6A 01 PUSH 1
::00413C6A:: 68 74C54900 PUSH 49C574 \->: times
::00413C6F:: 68 74C54900 PUSH 49C574 \->: times
::00413C74:: 8BCE MOV ECX, ESI
::00413C76:: E8 611D0600 CALL 004759DC
::00413C7B:: 6A 01 PUSH 1
::00413C7D:: 68 5CC54900 PUSH 49C55C \->: BCGPControlBar-59392
::00413C82:: 68 50C54900 PUSH 49C550 \->: Settings
::00413C87:: 8BCE MOV ECX, ESI
::00413C89:: E8 4E1D0600 CALL 004759DC \从注册表里读出总次数
::00413C8E:: 0FBFC0 MOVSX EAX, AX
::00413C91:: A3 FC2E4A00 MOV DWORD PTR [4A2EFC], EAX
::00413C96:: 40 INC EAX \此处总次数加1,NOP掉
::00413C97:: 50 PUSH EAX
::00413C98:: 68 74C54900 PUSH 49C574 \->: times
::00413C9D:: 68 74C54900 PUSH 49C574 \->: times
::00413CA2:: 8BCE MOV ECX, ESI
::00413CA4:: E8 2D1D0600 CALL 004759D6 \从注册表里读出使用次数
::00413CA9:: 8B15 FC2E4A00 MOV EDX, DWORD PTR [4A2EFC]
::00413CAF:: 8BCE MOV ECX, ESI
::00413CB1:: 42 INC EDX \ 此处使用次数加1,NOP掉
::00413CB2:: 52 PUSH EDX
::00413CB3:: 68 5CC54900 PUSH 49C55C \->: BCGPControlBar-59392
::00413CB8:: 68 50C54900 PUSH 49C550 \->: Settings
::00413CBD:: E8 141D0600 CALL 004759D6
::00413CC2:: C605 002F4A00 00 MOV BYTE PTR [4A2F00], 0
::00413CC9:: 8D8C24 10050000 LEA ECX, DWORD PTR [ESP+510]
::00413CD0:: C78424 1C050000 13000000 MOV DWORD PTR [ESP+51C], 13
次数问题就这样轻松解决了,永远都是“第一次”使用。嘿嘿!!!
3、去掉“未注册”字样,共有两处:
::0041493F:: 68 3CC74900 PUSH 49C73C \->: 此软件使用权属于:
::00414944:: 8D4C24 10 LEA ECX, DWORD PTR [ESP+10]
::00414948:: 75 4B JNZ SHORT 00414995 \此一处,跳过就没有啦!!!75改74
::0041494A:: E8 FF0D0600 CALL 0047574E
::0041494F:: 8D4C24 3C LEA ECX, DWORD PTR [ESP+3C]
::00414953:: 51 PUSH ECX
::00414954:: 8D4C24 10 LEA ECX, DWORD PTR [ESP+10]
::00414958:: E8 350F0600 CALL 00475892
::0041495D:: 68 30C74900 PUSH 49C730 \->: (未注册)
::00414962:: 8D4C24 10 LEA ECX, DWORD PTR [ESP+10]
::00414966:: E8 270F0600 CALL 00475892
::0041496B:: 8B4424 0C MOV EAX, DWORD PTR [ESP+C]
::0041496F:: C74424 18 02000000 MOV DWORD PTR [ESP+18], 2
::00414977:: C74424 1C B6000000 MOV DWORD PTR [ESP+1C], B6
::0041497F:: 897424 20 MOV DWORD PTR [ESP+20], ESI
::00414983:: C74424 24 C8000000 MOV DWORD PTR [ESP+24], C8
::0041498B:: 8B48 F8 MOV ECX, DWORD PTR [EAX-8]
::0041498E:: 53 PUSH EBX
::0041498F:: 8D5424 1C LEA EDX, DWORD PTR [ESP+1C]
::00414993:: EB 49 JMP SHORT 004149DE
::00414995:: E8 B40D0600 CALL 0047574E
::0041499A:: 8D4C24 3C LEA ECX, DWORD PTR [ESP+3C]
::0041499E:: 51 PUSH ECX
::0041499F:: 8D4C24 10 LEA ECX, DWORD PTR [ESP+10]
::004149A3:: E8 EA0E0600 CALL 00475892
::004149A8:: 68 24C74900 PUSH 49C724 \->: (已注册)
::004149AD:: 8D4C24 10 LEA ECX, DWORD PTR [ESP+10]
::004149B1:: E8 DC0E0600
::0045E67B:: 68 3CC74900 PUSH 49C73C \->: 此软件使用权属于:
::0045E680:: 8D4C24 08 LEA ECX, DWORD PTR [ESP+8]
::0045E684:: 75 1A JNZ SHORT 0045E6A0 \又一处,跳过就没有啦!!!74改75
::0045E686:: E8 C3700100 CALL 0047574E
::0045E68B:: 8D4424 24 LEA EAX, DWORD PTR [ESP+24]
::0045E68F:: 8D4C24 04 LEA ECX, DWORD PTR [ESP+4]
::0045E693:: 50 PUSH EAX
::0045E694:: E8 F9710100 CALL 00475892
::0045E699:: 68 30C74900 PUSH 49C730 \->: (未注册)
::0045E69E:: EB 18 JMP SHORT 0045E6B8
::0045E6A0:: E8 A9700100 CALL 0047574E
::0045E6A5:: 8D4C24 24 LEA ECX, DWORD PTR [ESP+24]
::0045E6A9:: 51 PUSH ECX
::0045E6AA:: 8D4C24 08 LEA ECX, DWORD PTR [ESP+8]
::0045E6AE:: E8 DF710100 CALL 00475892
::0045E6B3:: 68 24C74900 PUSH 49C724 \->: (已注册)
::0045E6B8:: 8D4C24 08 LEA ECX, DWORD PTR [ESP+8]
::0045E6BC:: E8 D1710100 CALL 00475892
::0045E6C1:: 8D4C24 04 LEA ECX, DWORD PTR [ESP+4]
::0045E6C5:: C74424 3C FFFFFFFF MOV DWORD PTR [ESP+3C], -1
::0045E6CD:: E8 76700100 CALL 00475748
::0045E6D2:: 8B4C24 34 MOV ECX, DWORD PTR [ESP+34]
::0045E6D6:: 33C0 XOR EAX, EAX
::0045E6D8:: 5E POP ESI
::0045E6D9:: 64:890D 00000000 MOV DWORD PTR FS:[0], ECX
4、去掉计算NAG,通过分析汇编代码,发现以下信息:
::00419466:: 52 PUSH EDX
::00419467:: 6A 04 PUSH 4
::00419469:: 57 PUSH EDI
::0041946A:: E8 B1CD0500 CALL 00476220
::0041946F:: 56 PUSH ESI
::00419470:: E8 5BC20500 CALL 004756D0
::00419475:: 83C4 04 ADD ESP, 4
::00419478:: A0 002F4A00 MOV AL, BYTE PTR [4A2F00]
::0041947D:: 84C0 TEST AL, AL
::0041947F:: 75 25 JNZ SHORT 004194A6 \此处跳过"数据处理结束\x0A未注册"的NAG,当然是75改74啦!
::00419481:: 8B4424 1C MOV EAX, DWORD PTR [ESP+1C]
::00419485:: 6A 01 PUSH 1
::00419487:: 68 F4010000 PUSH 1F4
::0041948C:: 68 B80B0000 PUSH BB8
::00419491:: 68 F4010000 PUSH 1F4
::00419496:: 68 F0CA4900 PUSH 49CAF0 \->: 数据处理结束\x0A未注册
::0041949B:: 8D88 A0020000 LEA ECX, DWORD PTR [EAX+2A0]
::004194A1:: E8 8A690400 CALL 0045FE30
::004194A6:: 8D4C24 28 LEA ECX, DWORD PTR [ESP+28]
5,最后解决过期问题,这个问题捆绕了我很久,解决计算NAG的过程中给我一些信息与启发,查找字符串”软件已经过期“,
一查,还真有。下面的事就好办了。我改:
::004320FD:: 7F 09 JG SHORT 00432108
::004320FF:: A0 382F4A00 MOV AL, BYTE PTR [4A2F38]
::00432104:: 84C0 TEST AL, AL
::00432106:: 75 2F JNZ SHORT 00432137
::00432108:: A0 002F4A00 MOV AL, BYTE PTR [4A2F00]
::0043210D:: 84C0 TEST AL, AL
::0043210F:: 75 26 JNZ SHORT 00432137 \此处解决过期问题,不跳就过期啦我跳!75改74
::00432111:: 6A 01 PUSH 1 \问题解决
::00432113:: 68 F4010000 PUSH 1F4
::00432118:: 68 B80B0000 PUSH BB8
::0043211D:: 68 F4010000 PUSH 1F4
::00432122:: 68 04D84900 PUSH 49D804 \->: 软件已经过期\x0A请注册
::00432127:: 8D8E A0020000 LEA ECX, DWORD PTR [ESI+2A0]
::0043212D:: E8 FEDC0200 CALL 0045FE30
::00432132:: 5F POP EDI
::00432133:: 33C0 XOR EAX, EAX
::00432135:: 5E POP ESI
::00432136:: C3 RETN
通过上面的修改,此软件已经是没有任何限制的注册版了;哈哈,高兴。美中不足的是没有找到注册码。
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)