『破解作者』 Moodsky
『作者邮箱』 [email]moodsky@eyou.com[/email]
『使用工具』 Peid,OD
『破解平台』 Win2000
『软件名称』 xQBar 1.01
『本地下载』
附件:xQBar1.01.rar
『软件简介』 比较全面的QQ控件
『软件大小』 200K
『加壳方式』 无
『破解声明』 我是一只小菜鸟,偶得一点心得,愿与大家分享。
――――――――――――――――――――――――――――――――――――――――――――――――――
『破解内容』
用Peid查看为VB6编写,没有加壳,但未注册时总弹出NAG窗口。
首先建立一个包含控件的工程,运行看了看,典型的NAG骚扰,想法有两个,第一就是找到关
键跳转改掉,第二个是找到NAG的CALL把它NOP,好吧,下面来用OD载入工程吧!
载入工程1.EXE后看看这个工程所载入的模块(ALT+E),如下:
可执行部件
基数 大小 入口 名称 文件版本 路径
00400000 0001E000 00401274 工程1 1.00 D:\xQBar1.01\工程1.exe
65D20000 00054000 65D2DE8C USP10 1.0325.2195.6692 C:\WINNT\system32\USP10.dll
66000000 00152000 66001AEC MSVBVM60 6.00.9782 C:\WINNT\system32\MSVBVM60.DLL
6C330000 00008000 6C332DA3 LPK 5.00.2195.6692 C:\WINNT\system32\LPK.DLL
75E00000 0001A000 75E01264 IMM32 5.00.2195.6655 C:\WINNT\system32\IMM32.DLL
77990000 0009B000 77A04030 OLEAUT32 2.40.4522 C:\WINNT\system32\OLEAUT32.dll
77A30000 000EF000 77A4B5CC ole32 5.00.2195.6906 C:\WINNT\system32\ole32.dll
77DF0000 00065000 77E14689 USER32 5.00.2195.6897 C:\WINNT\system32\USER32.dll
77E60000 000D2000 77E67A40 KERNEL32 5.00.2195.6946 C:\WINNT\system32\KERNEL32.dll
77F40000 0003B000 GDI32 5.00.2195.6945 C:\WINNT\system32\GDI32.DLL
77F80000 0007D000 ntdll 5.00.2195.6899 C:\WINNT\system32\ntdll.dll
786F0000 00071000 786F3E30 RPCRT4 5.00.2195.6904 C:\WINNT\system32\RPCRT4.DLL
796D0000 00062000 796D1ECE ADVAPI32 5.00.2195.6876 C:\WINNT\system32\ADVAPI32.dll
可以看到,程序刚运行时并没有载入xQBar.ocx,但这个NAG一定包括在xQBar.ocx里,我们都知道,
在DLL里取函数位置系统要用到LoadLibrary函数(载入指定的动态链接库,并将它映射到当前进程使用
的地址空间。)好,就用它来做断点,看看程序什么时候可以载入xQBar.ocx。
bp LoadLibraryA
F9运行,然后继续8次F9(共9次F9,VB好像载入OCX都是9次),我们(ALT+E)就看到了:
可执行部件
基数 大小 入口 名称 文件版本 路径
00400000 0001E000 00401274 工程1 1.00 D:\xQBar1.01\工程1.exe
01270000 0000E000 01271414 Commandx 1.03 D:\xQBar1.01\Commandxu.ocx
11000000 0003A000 110024C4 xQBar 1.00 D:\xQBar1.01\xQBar.ocx
60000000 00045000 60001F5E MSCTF 1.00.2409.7 buil C:\WINNT\system32\MSCTF.dll
65D20000 00054000 65D2DE8C USP10 1.0325.2195.6692 C:\WINNT\system32\USP10.dll
66000000 00152000 66001AEC MSVBVM60 6.00.9782 C:\WINNT\system32\MSVBVM60.DLL
66630000 0001C000 vb6chs 6.00.8988 C:\WINNT\system32\vb6chs.dll
6C330000 00008000 6C332DA3 LPK 5.00.2195.6692 C:\WINNT\system32\LPK.DLL
72C50000 00090000 72CC92E0 CLBCATQ 2000.2.3511.0 C:\WINNT\system32\CLBCATQ.DLL
75950000 00006000 75951A6A LZ32 5.00.2195.6611 C:\WINNT\system32\LZ32.DLL
75E00000 0001A000 75E01264 IMM32 5.00.2195.6655 C:\WINNT\system32\IMM32.DLL
777E0000 00007000 777E1334 VERSION 5.00.2195.6623 C:\WINNT\system32\VERSION.DLL
77990000 0009B000 77A04030 OLEAUT32 2.40.4522 C:\WINNT\system32\OLEAUT32.dll
77A30000 000EF000 77A4B5CC ole32 5.00.2195.6906 C:\WINNT\system32\ole32.dll
77DF0000 00065000 77E14689 USER32 5.00.2195.6897 C:\WINNT\system32\USER32.dll
77E60000 000D2000 77E67A40 KERNEL32 5.00.2195.6946 C:\WINNT\system32\KERNEL32.dll
77F40000 0003B000 GDI32 5.00.2195.6945 C:\WINNT\system32\GDI32.DLL
77F80000 0007D000 ntdll 5.00.2195.6899 C:\WINNT\system32\ntdll.dll
78000000 00045000 78001000 MSVCRT 6.10.9844.0 C:\WINNT\system32\MSVCRT.dll
786F0000 00071000 786F3E30 RPCRT4 5.00.2195.6904 C:\WINNT\system32\RPCRT4.DLL
796D0000 00062000 796D1ECE ADVAPI32 5.00.2195.6876 C:\WINNT\system32\ADVAPI32.dll
既然已经载入了,我们就得想办法在进入它的区域里来做手脚,(ALT+M)进入内存镜像,在
xQBar.ocx的.text区段F2下断:
内存镜像,项目 52
地址=11001000
大小=0002F000 (192512.)
Owner=xQBar 11000000
区段=.text
包含=code,imports,exports
类型=Imag 01001002
访问=R
初始访问=RWE
然后F9运行,程序被断在了这里:
1100F512 8BD0 mov edx, eax
1100F514 8D4D D8 lea ecx, dword ptr ss:[ebp-28]
1100F517 FF15 78110011 call dword ptr ds:[<&MSVBVM60.__vbaStrMo>; MSVBVM60.__vbaStrMove
1100F51D 50 push eax
1100F51E FF15 A8110011 call dword ptr ds:[<&MSVBVM60.#581_rtcR8>; MSVBVM60.rtcR8ValFromBstr
1100F524 DD9D 30FFFFFF fstp qword ptr ss:[ebp-D0]
1100F52A C785 74FFFFFF 0>mov dword ptr ss:[ebp-8C], 0
1100F534 C785 6CFFFFFF 0>mov dword ptr ss:[ebp-94], 4
F8一直跟进,直到:
11010F68 8D45 AC lea eax, dword ptr ss:[ebp-54]
11010F6B 50 push eax
11010F6C FF15 20100011 call dword ptr ds:[<&MSVBVM60.__vbaStrVa>; MSVBVM60.__vbaStrVarMove
11010F72 8BD0 mov edx, eax
11010F74 8D4D D8 lea ecx, dword ptr ss:[ebp-28]
11010F77 FF15 78110011 call dword ptr ds:[<&MSVBVM60.__vbaStrMo>; MSVBVM60.__vbaStrMove
11010F7D 8BD0 mov edx, eax
11010F7F 8B4D 08 mov ecx, dword ptr ss:[ebp+8]
11010F82 81C1 B8000000 add ecx, 0B8
11010F88 FF15 14110011 call dword ptr ds:[<&MSVBVM60.__vbaStrCo>; MSVBVM60.__vbaStrCopy
11010F8E 8D4D D8 lea ecx, dword ptr ss:[ebp-28]
11010F91 FF15 A0110011 call dword ptr ds:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
11010F97 8D4D AC lea ecx, dword ptr ss:[ebp-54]
11010F9A FF15 1C100011 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVar
11010FA0 C745 FC 2300000>mov dword ptr ss:[ebp-4], 23
11010FA7 8B4D 08 mov ecx, dword ptr ss:[ebp+8]
11010FAA 8B11 mov edx, dword ptr ds:[ecx]
11010FAC 8B45 08 mov eax, dword ptr ss:[ebp+8]
11010FAF 50 push eax
11010FB0 FF92 BC080000 call dword ptr ds:[edx+8BC]
11010FB6 C745 FC 2400000>mov dword ptr ss:[ebp-4], 24
11010FBD C785 74FFFFFF 0>mov dword ptr ss:[ebp-8C], 0
11010FC7 C785 6CFFFFFF 0>mov dword ptr ss:[ebp-94], 2
执行到11010FB0时NAG窗口出现,向上看了看,没找到关键跳转(太菜了),只好对CALL来NOP
了:
11010FAF 50 push eax
11010FB0 90 nop
11010FB1 90 nop
11010FB2 90 nop
11010FB3 90 nop
11010FB4 90 nop
11010FB5 90 nop
11010FB6 C745 FC 2400000>mov dword ptr ss:[ebp-4], 24
修改部分保存,OD自动辨认为xQBar.ocx,重新运行程序加载试试,成功,NAG窗口消失!
写的不好,让大家见笑了。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)