前几天要制作学生的“胸牌”,到网上下载个证件打印软件,就下载了“证件通2008”。
证件通2008采用“所见即所得”的证件设计模式,可批量打印如学生证、毕业证、录取通知书、学位证、成绩报告单、学籍卡片、信封、驾驶证、结婚证、土地使用证、房产证、职称证、记者证、会计证、律师证、卫生许可证、合同、数码照片各类证件,是一款优秀的证件打印软件。
下载的这个软件说是破解版的,而破解并不完善,就又下载了一个“证件通2011”,自己调试了一下,将调试时的记录发给大家,期待大侠们的指点。
1、查壳,无,VB语言。
2、OD加载。
3、软件启动有两个地方限制:一是会出现要求注册的对话框;二是接着会出现插入加密狗的提示;
调试具体过程:
查找所有模块间的调用,在以下几个函数上下断点,在rtcMsgBox,下断下,0047238A FF15 B0104000 call dword ptr ds:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox地方断下,向前回溯一下,在00472240 这个地方是段首。整段如下:将这段分析一下。
00472240 55 push ebp
00472241 8BEC mov ebp,esp
00472243 83EC 0C sub esp,0C
00472246 68 86DF4000 push <jmp.&MSVBVM60.__vbaExceptHandler>
0047224B 64:A1 00000000 mov eax,dword ptr fs:[0]
00472251 50 push eax
00472252 64:8925 0000000>mov dword ptr fs:[0],esp
00472259 81EC BC000000 sub esp,0BC
0047225F 53 push ebx
00472260 56 push esi
00472261 57 push edi
00472262 8965 F4 mov dword ptr ss:[ebp-C],esp
00472265 C745 F8 F813400>mov dword ptr ss:[ebp-8],证件通.004013F8
0047226C 8B45 08 mov eax,dword ptr ss:[ebp+8]
0047226F 8BC8 mov ecx,eax
00472271 83E1 01 and ecx,1
00472274 894D FC mov dword ptr ss:[ebp-4],ecx
00472277 24 FE and al,0FE
00472279 50 push eax
0047227A 8945 08 mov dword ptr ss:[ebp+8],eax
0047227D 8B10 mov edx,dword ptr ds:[eax]
0047227F FF52 04 call dword ptr ds:[edx+4]
00472282 33C0 xor eax,eax
00472284 8D4D D4 lea ecx,dword ptr ss:[ebp-2C]
00472287 8945 D4 mov dword ptr ss:[ebp-2C],eax
0047228A 6A 01 push 1
0047228C 8945 D8 mov dword ptr ss:[ebp-28],eax
0047228F 33DB xor ebx,ebx
00472291 8945 DC mov dword ptr ss:[ebp-24],eax
00472294 51 push ecx
00472295 8945 E0 mov dword ptr ss:[ebp-20],eax
00472298 6A 0A push 0A
0047229A 8945 E4 mov dword ptr ss:[ebp-1C],eax
0047229D 895D D0 mov dword ptr ss:[ebp-30],ebx
004722A0 895D CC mov dword ptr ss:[ebp-34],ebx
004722A3 895D C8 mov dword ptr ss:[ebp-38],ebx
004722A6 895D B8 mov dword ptr ss:[ebp-48],ebx
004722A9 895D A8 mov dword ptr ss:[ebp-58],ebx
004722AC 895D 98 mov dword ptr ss:[ebp-68],ebx
004722AF 895D 88 mov dword ptr ss:[ebp-78],ebx
004722B2 899D 78FFFFFF mov dword ptr ss:[ebp-88],ebx
004722B8 899D 68FFFFFF mov dword ptr ss:[ebp-98],ebx
004722BE FF15 E0104000 call dword ptr ds:[<&MSVBVM60.__vbaStrFixstr>]
004722C4 8BD0 mov edx,eax
004722C6 8D4D D0 lea ecx,dword ptr ss:[ebp-30]
004722C9 FF15 A8124000 call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]
004722CF 8D55 CC lea edx,dword ptr ss:[ebp-34]
004722D2 50 push eax
004722D3 52 push edx
004722D4 FF15 68124000 call dword ptr ds:[<&MSVBVM60.__vbaStrToAnsi>]
004722DA 50 push eax
004722DB 6A 02 push 2
004722DD BF 08000000 mov edi,8
004722E2 53 push ebx
004722E3 57 push edi
004722E4 E8 272FFBFF call 证件通.00425210 //进这个Call里看一下,单步跑,就在这下面,进入后单步走,就进入到了Opeth26.dll里面了。一直走到这个地方10003840 E8 FBDFFFFF call Opeth26.10001840
上下分析了一下代码,写在下面了。
10003814 ^\7C F5 jl short Opeth26.1000380B
10003816 85C9 test ecx,ecx
10003818 0F84 590C0000 je Opeth26.10004477 //此处跳了也可以,也不会出现注册窗口
1000381E 83F9 01 cmp ecx,-1 //改成1,下面就跳了,就不会出现注册窗口
10003821 0F85 790C0000 jnz Opeth26.100044A0
10003312 E8 5ADF0000 call Opeth26.10011271
10003840 E8 FBDFFFFF call Opeth26.10001840
10003845 8BC8 mov ecx,eax
10003847 83C4 10 add esp,10
1000384A 85C9 test ecx,ecx
1000384C 7E 08 jle short Opeth26.10003856
1000384E C74424 14 FEFFF>mov dword ptr ss:[esp+14],-2
10003856 83BC24 20070000>cmp dword ptr ss:[esp+720],8 //将8改成0下面就跳了,就不出现注册窗口了。
1000385E 0F85 3C0C0000 jnz Opeth26.100044A0
004722E9 8BF0 mov esi,eax
004722EB FF15 78104000 call dword ptr ds:[<&MSVBVM60.__vbaSetSystemError>>
004722F1 8B45 CC mov eax,dword ptr ss:[ebp-34]
004722F4 8D4D C8 lea ecx,dword ptr ss:[ebp-38]
004722F7 50 push eax
004722F8 51 push ecx
004722F9 FF15 AC114000 call dword ptr ds:[<&MSVBVM60.__vbaStrToUnicode>]
004722FF 8D55 D4 lea edx,dword ptr ss:[ebp-2C]
00472302 50 push eax
00472303 52 push edx
00472304 6A 0A push 0A
00472306 FF15 70104000 call dword ptr ds:[<&MSVBVM60.__vbaLsetFixstr>]
0047230C 8D45 C8 lea eax,dword ptr ss:[ebp-38]
0047230F 8D4D CC lea ecx,dword ptr ss:[ebp-34]
00472312 50 push eax
00472313 8D55 D0 lea edx,dword ptr ss:[ebp-30]
00472316 51 push ecx
00472317 52 push edx
00472318 6A 03 push 3
0047231A 8935 C0328200 mov dword ptr ds:[8232C0],esi
00472320 FF15 38124000 call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>]
00472326 8B35 6C124000 mov esi,dword ptr ds:[<&MSVBVM60.__vbaVarDup>]
0047232C B9 0A000000 mov ecx,0A
00472331 B8 04000280 mov eax,80020004
00472336 894D 88 mov dword ptr ss:[ebp-78],ecx
00472339 894D 98 mov dword ptr ss:[ebp-68],ecx
0047233C 83C4 10 add esp,10
0047233F 8945 90 mov dword ptr ss:[ebp-70],eax
00472342 8945 A0 mov dword ptr ss:[ebp-60],eax
00472345 C785 70FFFFFF A>mov dword ptr ss:[ebp-90],证件通.004251A0
0047234F 89BD 68FFFFFF mov dword ptr ss:[ebp-98],edi
00472355 8D95 68FFFFFF lea edx,dword ptr ss:[ebp-98]
0047235B 8D4D A8 lea ecx,dword ptr ss:[ebp-58]
0047235E FFD6 call esi
00472360 8D95 78FFFFFF lea edx,dword ptr ss:[ebp-88]
00472366 8D4D B8 lea ecx,dword ptr ss:[ebp-48]
00472369 C745 80 A057420>mov dword ptr ss:[ebp-80],证件通.004257A0
00472370 89BD 78FFFFFF mov dword ptr ss:[ebp-88],edi
00472376 FFD6 call esi
00472378 8D45 88 lea eax,dword ptr ss:[ebp-78]
0047237B 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0047237E 50 push eax
0047237F 8D55 A8 lea edx,dword ptr ss:[ebp-58]
00472382 51 push ecx
00472383 52 push edx
00472384 8D45 B8 lea eax,dword ptr ss:[ebp-48]
00472387 6A 40 push 40
00472389 50 push eax
0047238A FF15 B0104000 call dword ptr ds:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox //将此nop掉,就不会出现找加密狗的窗口
此破解并不完善,虽然不出现注册窗口了,但因破解没有算出真正的注册地方,所以在功能上有问题,比如在预览打印的时候,第一个字符总是显示一个“|”,打印时都有些字打印出乱码。
从证件通2004被破解后,的2005,一直到2011都在防爆破方面作了加强,网上到现在为止,还没有一个是真正破解的。
这是破解时的手记,期待路过的大侠能够给出指导。能够点石成金。 QQ号及邮箱:123186685 @QQ.com
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法