【破文标题】带壳可调试爆破成功,没能追到注册码,脱壳后N重校验,请高手指点!
【破文作者】七夜[CLTG]
【破解工具】OD PEID
【破解平台】XP SP3
【软件名称】双色球神手 V6.20
【软件大小】1.85M
【原版下载】http://www.ssrjw.cn
首先请高人们捂住嘴再笑,看雪论坛是像我这些菜鸟学习和成长的地方,谢谢你们!新年快到了,先祝各位新快乐,2009发大财啊!此款软件集成了很多问题,很值得我们这些菜鸟来学习,由于能力有限,问题点写在后面,请牛人们跟贴指点,先谢啦!好了,言归正传!
【破解过程】
1.下载PEID查壳
壳是PECompact 2.x -> Jeremy Collake
由于脱壳后的自校验没能解决,这也是请牛人指教的地方,所以不脱壳了,直接干吧!
2.运行一下程序看有没有什么可用的信息,程序一启动除了本身的界面外,还多了个注册对话框,随便输入注册信息,确定,提示:注册码失败!
打开OD直接加载程序ssQss,下断点,bp MessageBoxA,输入随便输入注册信息,确定,程序断下,看右下角窗口,
0012E4B8 004867BF /CALL 到 MessageBoxA 来自 ssQss.004867BA
0012E4BC 00060526 |hOwner = 00060526 ('ssqss',class='TApplication')
0012E4C0 0012E93B |Text = "注册失败!"
0012E4C4 0012E552 |Title = "双色球神手"
0012E4C8 00000010 \Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
右键菜单中查找ASCII字符串:注册失败
0061A9CB |> B8 18AA6100 MOV EAX,20080729.0061AA18 ; 注册失败!
往上看看,
0061A998 |. E8 073FFCFF CALL 20080729.005DE8A4 ; 关键CALL 在它前面一行下断点
0061A99D |. 84C0 TEST AL,AL
0061A99F |. 74 2A JE SHORT 20080729.0061A9CB ; 从这里跳到注册失败
0061A9A1 |. A1 5C766800 MOV EAX,DWORD PTR DS:[68765C]
0061A9A6 |. 8B16 MOV EDX,DWORD PTR DS:[ESI]
0061A9A8 |. 8B52 08 MOV EDX,DWORD PTR DS:[EDX+8]
0061A9AB |. E8 64A3DEFF CALL 20080729.00404D14
0061A9B0 |. A1 7C6E6800 MOV EAX,DWORD PTR DS:[686E7C]
0061A9B5 |. 8B16 MOV EDX,DWORD PTR DS:[ESI]
0061A9B7 |. 8B52 10 MOV EDX,DWORD PTR DS:[EDX+10]
0061A9BA |. E8 55A3DEFF CALL 20080729.00404D14
0061A9BF |. C783 4C020000 01000000 MOV DWORD PTR DS:[EBX+24C],1
0061A9C9 |. EB 0A JMP SHORT 20080729.0061A9D5
0061A9CB |> B8 18AA6100 MOV EAX,20080729.0061AA18 ; 注册失败!
在0061A998在它前面一行下断点,f9,确定,停在0061A998前面一行,f8单步,f7跟进0061A998 CALL,
f8单步,
005DE8AB 53 push ebx
005DE8AC 8BD8 mov ebx, eax
005DE8AE 33C0 xor eax, eax
005DE8B0 55 push ebp
005DE8B1 68 41E95D00 push 005DE941
005DE8B6 64:FF30 push dword ptr fs:[eax]
005DE8B9 64:8920 mov dword ptr fs:[eax], esp
005DE8BC 8D4D F8 lea ecx, dword ptr [ebp-8]
005DE8BF 33D2 xor edx, edx
005DE8C1 8BC3 mov eax, ebx
005DE8C3 E8 F8FCFFFF call 005DE5C0
005DE8C8 8D55 FC lea edx, dword ptr [ebp-4] ASCII "mte1os02mtGYlte5mti="
005DE8CB 8BC3 mov eax, ebx
005DE8CD E8 CAFCFFFF call 005DE59C
005DE8D2 807B 1C 00 cmp byte ptr [ebx+1C], 0
005DE8D6 74 28 je short 005DE900 将je改为jmp
005DE8D8 8B55 FC mov edx, dword ptr [ebp-4]
005DE8DB 8B43 14 mov eax, dword ptr [ebx+14] 机器码
005DE8DE E8 E9AFE2FF call 004098CC
005DE8E3 85C0 test eax, eax
005DE8E5 75 0F jnz short 005DE8F6
005DE8E7 8B55 F8 mov edx, dword ptr [ebp-8] ASCII "nJeYms03mdi1ltuYmZy="
005DE8EA 8B43 10 mov eax, dword ptr [ebx+10] ASCII "ndq1ogLQz2DMza=="
005DE8ED E8 DAAFE2FF call 004098CC
005DE8F2 85C0 test eax, eax
005DE8F4 74 04 je short 005DE8FA
005DE8F6 33C0 xor eax, eax
005DE8F8 EB 02 jmp short 005DE8FC
005DE8FA B0 01 mov al, 1
005DE8FC 8BD8 mov ebx, eax
005DE8FE EB 26 jmp short 005DE926
005DE900 8B55 FC mov edx, dword ptr [ebp-4]
005DE903 8B43 0C mov eax, dword ptr [ebx+C]
005DE906 E8 C1AFE2FF call 004098CC
005DE90B 85C0 test eax, eax
005DE90D 75 0F jnz short 005DE91E 将此 nop
005DE90F 8B55 F8 mov edx, dword ptr [ebp-8]
005DE912 8B43 10 mov eax, dword ptr [ebx+10]
005DE915 E8 B2AFE2FF call 004098CC
005DE91A 85C0 test eax, eax
005DE91C 74 04 je short 005DE922 将je改为jmp 跳则OK
005DE91E 33C0 xor eax, eax
F9运行,就可以看到注册成功啦!!!!
还有一个方法就是不跟进CALL ,直截将0061A99F |. 74 2A JE SHORT 20080729.0061A9CB ; 从这里跳到注册失败 这个地方NOP掉也是可以注册成功的。
以上就是未脱壳调试爆破过程。美中不足啊!!
问题遗留:
第一。未能分析出注册码
第二。脱壳后的软件有多重校验,程序起动一闪而过,未能解决
第三。大家看下面代码,是不是有注册机校验,
00671789 |. 55 push ebp
0067178A |. 68 63186700 push 00671863
0067178F |. 64:FF30 push dword ptr fs:[eax]
00671792 |. 64:8920 mov dword ptr fs:[eax], esp
00671795 |. BB 01000000 mov ebx, 1
0067179A |> FF36 /push dword ptr [esi]
0067179C |. 8D55 F8 |lea edx, dword ptr [ebp-8]
0067179F |. 8BC3 |mov eax, ebx
006717A1 |. E8 D687D9FF |call 00409F7C
006717A6 |. FF75 F8 |push dword ptr [ebp-8]
006717A9 |. 68 78186700 |push 00671878 ; .exe
006717AE |. 8D45 FC |lea eax, dword ptr [ebp-4]
006717B1 |. BA 03000000 |mov edx, 3
006717B6 |. E8 9538D9FF |call 00405050
006717BB |. 8B45 FC |mov eax, dword ptr [ebp-4]
006717BE |. E8 818ED9FF |call 0040A644
006717C3 |. 84C0 |test al, al
006717C5 |. 74 08 |je short 006717CF
006717C7 |. 8B45 FC |mov eax, dword ptr [ebp-4]
006717CA |. E8 6990D9FF |call 0040A838
006717CF |> 43 |inc ebx
006717D0 |. 83FB 65 |cmp ebx, 65
006717D3 |.^ 75 C5 \jnz short 0067179A
006717D5 |. 8B16 mov edx, dword ptr [esi]
006717D7 |. 8D45 FC lea eax, dword ptr [ebp-4]
006717DA |. B9 88186700 mov ecx, 00671888 ; 注册机.exe
006717DF |. E8 F837D9FF call 00404FDC
006717E4 |. 8B45 FC mov eax, dword ptr [ebp-4]
006717E7 |. E8 588ED9FF call 0040A644
006717EC |. 84C0 test al, al
006717EE |. 74 08 je short 006717F8
006717F0 |. 8B45 FC mov eax, dword ptr [ebp-4]
006717F3 |. E8 4090D9FF call 0040A838
006717F8 |> FF36 push dword ptr [esi]
006717FA |. 68 9C186700 push 0067189C ; 双色球神手
006717FF |. 68 88186700 push 00671888 ; 注册机.exe
00671804 |. 8D45 FC lea eax, dword ptr [ebp-4]
00671807 |. BA 03000000 mov edx, 3
0067180C |. E8 3F38D9FF call 00405050
00671811 |. 8B45 FC mov eax, dword ptr [ebp-4]
00671814 |. E8 2B8ED9FF call 0040A644
00671819 |. 84C0 test al, al
0067181B |. 74 08 je short 00671825
0067181D |. 8B45 FC mov eax, dword ptr [ebp-4]
00671820 |. E8 1390D9FF call 0040A838
00671825 |> 8B16 mov edx, dword ptr [esi]
00671827 |. 8D45 FC lea eax, dword ptr [ebp-4]
0067182A |. B9 B0186700 mov ecx, 006718B0 ; crack.exe
0067182F |. E8 A837D9FF call 00404FDC
00671834 |. 8B45 FC mov eax, dword ptr [ebp-4]
00671837 |. E8 088ED9FF call 0040A644
0067183C |. 84C0 test al, al
0067183E |. 74 08 je short 00671848
00671840 |. 8B45 FC mov eax, dword ptr [ebp-4]
以上问题请高人指点,本人只是菜鸟一只,~~~~~~~~~~~~~~~~~~~~~~~~`
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法