这个是我们系统的一个年终考核软件,由于单位的机器更新换代,同时软件厂商也不知所踪,无法重新计算注册序列号。为了能在新机器上正常使用,所以拿它练练手先。
语文学的不好,可能有言语不通的地方,望见谅。
用的工具为:C32Asm(修改程序)、W32Dasm(查字符串)、OLLYDBG(跟踪程序流程)
开工:
1、运行查找蛛丝马迹。
[由程序内给出的三个提示分别来到三个地址,00645D0F、00515357、005153D0
(其实W32Dasm我也就用来找个字符串,其他的不会用了,
。)
00645d0f要先于后两个提示部分启动运行,首先判断程序是否注册,验证序列号是否正确。
::00645CB8:: 55 PUSH EBP
::00645CB9:: 8BEC MOV EBP,ESP
::00645CBB:: 33C9 XOR ECX,ECX
::00645CBD:: 51 PUSH ECX
::00645CBE:: 51 PUSH ECX
::00645CBF:: 51 PUSH ECX
::00645CC0:: 51 PUSH ECX
::00645CC1:: 51 PUSH ECX
::00645CC2:: 51 PUSH ECX
::00645CC3:: 51 PUSH ECX
::00645CC4:: 53 PUSH EBX
::00645CC5:: 56 PUSH ESI
::00645CC6:: 8945 FC MOV [EBP-4],EAX
::00645CC9:: 33C0 XOR EAX,EAX
::00645CCB:: 55 PUSH EBP
::00645CCC:: 68 31606400 PUSH 646031 \->: 槁孥腚^[嬪]?
::00645CD1:: 64:FF30 PUSH DWORD PTR FS:[EAX]
::00645CD4:: 64:8920 MOV FS:[EAX],ESP
::00645CD7:: 8D55 F8 EA EDX,[EBP-8]
::00645CDA:: A1 F4EE6400 MOV EAX,[64EEF4]
::00645CDF:: 8B00 MOV EAX,[EAX]
::00645CE1:: E8 AEEBECFF CALL 00514894 \:JMPUP
::00645CE6:: 8B45 F8 MOV EAX,[EBP-8]
::00645CE9:: 50 PUSH EAX
::00645CEA:: A1 F4EE6400 MOV EAX,[64EEF4]
::00645CEF:: 8B00 MOV EAX,[EAX]
::00645CF1:: E8 46ECECFF CALL 0051493C \:JMPUP
::00645CF6:: 33D2 XOR EDX,EDX
::00645CF8:: 52 PUSH EDX
::00645CF9:: 50 PUSH EAX
::00645CFA:: 8D45 F4 LEA EAX,[EBP-C]
::00645CFD:: E8 1E44DCFF CALL 0040A120 \:JMPUP
::00645D02:: 8B55 F4 MOV EDX,[EBP-C]
::00645D05:: 58 POP EAX
::00645D06:: E8 45F5DBFF CALL 00405250 \:JMPUP
::00645D0B:: 74 7E JE SHORT 00645D8B \:JMPDOWN
::00645D0D:: 6A 34 PUSH 34
::00645D0F:: B9 40606400 MOV ECX,646040 \->: 警告
::00645D14:: BA 48606400 MOV EDX,646048 \->: 您使用的软件序列号出现错误,无法使用本软件,想现在重新输入吗?
::00645D19:: A1 34EE6400 MOV EAX,[64EE34]
::00645D1E:: 8B00 MOV EAX,[EAX]
::00645D20:: E8 97B2E2FF CALL 00470FBC \:JMPUP
::00645D25:: 83F8 06 CMP EAX,6
::00645D28:: 75 55 JNZ SHORT 00645D7F \:JMPDOWN
::00645D2A:: 8B4D FC MOV ECX,[EBP-4]
::00645D2D:: B2 01 MOV DL,1
::00645D2F:: A1 8C505100 MOV EAX,[51508C]
::00645D34:: E8 C337E2FF CALL 004694FC \:JMPUP
::00645D39:: 8B15 E0EB6400 MOV EDX,[64EBE0]
::00645D3F:: 8902 MOV [EDX],EAX
::00645D41:: 33C0 XOR EAX,EAX
::00645D43:: 55 PUSH EBP
::00645D44:: 68 785D6400 PUSH 645D78 \->: 閧檑腱?頳
::00645D49:: 64:FF30 PUSH DWORD PTR FS:[EAX]
::00645D4C:: 64:8920 MOV FS:[EAX],ESP
::00645D4F:: A1 E0EB6400 MOV EAX,[64EBE0]
::00645D54:: 8B00 MOV EAX,[EAX]
::00645D56:: 8B10 MOV EDX,[EAX]
::00645D58:: FF92 E8000000 CALL [EDX+E8]
::00645D5E:: 33C0 XOR EAX,EAX
::00645D60:: 5A POP EDX
::00645D61:: 59 POP ECX
::00645D62:: 59 POP ECX
::00645D63:: 64:8910 MOV FS:[EAX],EDX
::00645D66:: 68 7F5D6400 PUSH 645D7F \->: ?頳
::00645D6B:: A1 E0EB6400 MOV EAX,[64EBE0] \:BYJMP JmpBy:00645D7D,
::00645D70:: 8B00 MOV EAX,[EAX]
::00645D72:: E8 EDE1DBFF CALL 00403F64 \:JMPUP
::00645D77:: C3 RETN
关键部分为:
::00645D06:: E8 45F5DBFF CALL 00405250 \:JMPUP 《通过动态跟踪大概判断出这里是判断序列号对否的地方。》
::00645D0B:: 74 7E JE SHORT 00645D8B \:JMPDOWN 《关键!不跳就死翘翘了,我在这里让它一往无前的跳过去!跳过去海阔天空了。》
::00645D0D:: 6A 34 PUSH 34
::00645D0F:: B9 40606400 MOV ECX,646040 \->: 警告
::00645D14:: BA 48606400 MOV EDX,646048 \->: 您使用的软件序列号出现错误,无法使用本软件,想现在重新输入吗?
::00645D19:: A1 34EE6400 MOV EAX,[64EE34]
::00645D1E:: 8B00 MOV EAX,[EAX]
::00645D20:: E8 97B2E2FF CALL 00470FBC \:JMPUP ]
2、用C32Asm载入程序,跳转到
::00645D0B:: 74 7E JE SHORT 00645D8B \:JMPDOWN
直接修改je short 00645d88 为jne short 00645d88
然后保存。重新运行,我可爱的用户登录界面出来了。
此次暴力破解到此完成。
其实这个程序在00405250 内部也可以进行修改,不过改过的程序破解不完全,无法加载程序界面的图片。
这个程序我在查壳的时候有这个提示,不知道什么意思,哪位大虾知道还望赐教。还有,就是为什么要连续压5次ECX?
安装程序有点大,发到我自己的网盘,不知道违不违规,有想练手的可以下载试试。完全破解一个软件原来也是很有成就感的。
http://www.brsbox.com/filebox/down/fc/5c9aabf0d3ad3fa374abfc61616fb82b
[课程]Android-CTF解题方法汇总!