- UID
- 8584
注册时间2006-2-26
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 开心 2016-2-2 16:49 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
【破文标题】smartprinter(虚拟打印机)3.6破解分析
【破文作者】jy2207661
【破解工具】PEID,OD,ImProtREC,DUP2.6
【破解平台】WinXP SP2
【软件名称】smartprinter3.6
【软件大小】4.67MB
【原版下载】http://www.i-enet.com/products/smartprinter.html
【保护方式】注册码
【软件简介】你是否在寻找一款功能的全面虚拟打印机,那么你可以试一下SmartPrinter......SmartPrinter最初(著名软件公司)开发用于传真系统的虚拟打印,它的主要功能是:将任意可打印的文档通过虚拟打印转换成其它图片(文字)格式,后经过一段时间的发展和更新,功能已经越来越强大,在各种的智能传真系统、图片格式转换系统、条码打印系统等都能占主导地位。
------------------------------------------------------------------------
【破解过程】
1.用PEID查SmartFaxTool.exe的壳,为ASProtect V2.X Registered -> Alexey Solodovnikov * Sign.By.fly *
2.用OD打开SmartFaxTool.exe,写入参数:showdialog,然后点击打开
3.用脱壳插件Aspr2.XX_unpacker_v1.0SC.osc脱壳,提示有偷窃代码,请查看记录窗口内的IAT数据
4.点查看->记录(ALT+L),记录数据
IAT 的地址 = 0047E000
IAT 的相对地址 = 0007E000
IAT 的大小 = 00000860
断点位于 00C40079
OEP 的地址 = 00474D7A
OEP 的相对地址 = 00074D7A
5.打开ImProtREC,选择进程SmartFaxTool.exe,在相应的地方依次输入OEP -> 00074D7A RVA -> 0007E000 大小-> 0000860
点获得输入信息按钮,再点修复抓取文件按钮,选择de_SmartFaxTool.exe文件,点打开,再安装目录下便生成了de_SmartFaxTool_.exe,重命名de_SmartFaxTool_.exe为SmartFaxTool.exe,能够正常运行,致此脱壳成功。
6.下面开始破解,OD载入SmartFaxTool.exe,在数据窗口中显示为 长型->地址,找到 Kernel32.GetPrivateProfileStringA函数,右键->查找参考(Ctrl+R)->在每个参数上设置断点,F9运行,然后程序被OD断下,F8单步:
0040B930 /$ 6A FF PUSH -1
0040B932 |. 68 46D74700 PUSH SmartFax.0047D746 ; SE 处理程序安装
0040B937 |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
0040B93D |. 50 PUSH EAX
0040B93E |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
0040B945 |. 81EC 10010000 SUB ESP,110
0040B94B |. 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]
0040B94F |. 50 PUSH EAX
0040B950 |. E8 CB9CFFFF CALL SmartFax.00405620
0040B955 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
0040B957 |. 83C4 04 ADD ESP,4
0040B95A |. 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]
0040B95E |. 50 PUSH EAX ; /IniFileName
0040B95F |. 68 00010000 PUSH 100 ; |BufSize = 100 (256.)
0040B964 |. 51 PUSH ECX ; |ReturnBuffer
0040B965 |. 68 A81E4C00 PUSH SmartFax.004C1EA8 ; |Default = "1234567890"
0040B96A |. 68 78154C00 PUSH SmartFax.004C1578 ; |Key = "KEY"
0040B96F |. 68 54114C00 PUSH SmartFax.004C1154 ; |Section = "SYSTEM"
0040B974 |. FF15 F0E04700 CALL DWORD PTR DS:[<&kernel32.GetPrivate>; \GetPrivateProfileStringA程序被断在这一行,F8
0040B97A |. 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4]
0040B97E |. E8 2D8F0600 CALL <JMP.&mfc42.#800_??1CString@@QAE@XZ>
0040B983 |. 8D5424 00 LEA EDX,DWORD PTR SS:[ESP]
0040B987 |. 52 PUSH EDX
0040B988 |. E8 A37BFFFF CALL SmartFax.00403530
0040B98D |. 8D4424 14 LEA EAX,DWORD PTR SS:[ESP+14] ; 假注册码出现在提示窗口中
0040B991 |. 8BCC MOV ECX,ESP
0040B993 |. 896424 0C MOV DWORD PTR SS:[ESP+C],ESP
0040B997 |. 50 PUSH EAX ; 假注册码入栈
0040B998 |. C78424 200100>MOV DWORD PTR SS:[ESP+120],0
0040B9A3 |. E8 E2900600 CALL <JMP.&mfc42.#537_??0CString@@QAE@PB>
0040B9A8 |. 51 PUSH ECX
0040B9A9 |. 8D5424 08 LEA EDX,DWORD PTR SS:[ESP+8]
0040B9AD |. 8BCC MOV ECX,ESP
0040B9AF |. 896424 14 MOV DWORD PTR SS:[ESP+14],ESP
0040B9B3 |. 52 PUSH EDX
0040B9B4 |. C68424 240100>MOV BYTE PTR SS:[ESP+124],1
0040B9BC |. E8 B7900600 CALL <JMP.&mfc42.#535_??0CString@@QAE@AB>
0040B9C1 |. C68424 200100>MOV BYTE PTR SS:[ESP+120],0
0040B9C9 |. E8 327EFFFF CALL SmartFax.00403800
0040B9CE |. 83C4 08 ADD ESP,8 ; 堆栈窗口中出现真假注册码,上面的CALL是关键,跟进
0040B9D1 |. 8D4C24 00 LEA ECX,DWORD PTR SS:[ESP]
0040B9D5 |. A2 E85D4E00 MOV BYTE PTR DS:[4E5DE8],AL
0040B9DA |. C78424 180100>MOV DWORD PTR SS:[ESP+118],-1
0040B9E5 |. E8 C68E0600 CALL <JMP.&mfc42.#800_??1CString@@QAE@XZ>
0040B9EA |. 8B8C24 100100>MOV ECX,DWORD PTR SS:[ESP+110]
0040B9F1 |. 64:890D 00000>MOV DWORD PTR FS:[0],ECX
0040B9F8 |. 81C4 1C010000 ADD ESP,11C
0040B9FE \. C3 RETN
7.跟进0040B9C9处的CALL,来到这里,再F8单步往下走
00403800 /$ 6A FF PUSH -1
00403802 |. 68 E8D04700 PUSH SmartFax.0047D0E8 ; SE 处理程序安装
00403807 |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
0040380D |. 50 PUSH EAX
0040380E |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
00403815 |. 51 PUSH ECX
00403816 |. 53 PUSH EBX
00403817 |. 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4]
0040381B |. C74424 10 010>MOV DWORD PTR SS:[ESP+10],1
00403823 |. E8 68120700 CALL <JMP.&mfc42.#540_??0CString@@QAE@XZ>
00403828 |. 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]
0040382C |. 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18]
00403830 |. 50 PUSH EAX
00403831 |. 51 PUSH ECX
00403832 |. C64424 18 02 MOV BYTE PTR SS:[ESP+18],2
00403837 |. E8 54FEFFFF CALL SmartFax.00403690
0040383C |. 8B5424 24 MOV EDX,DWORD PTR SS:[ESP+24]
00403840 |. 8B4424 0C MOV EAX,DWORD PTR SS:[ESP+C]
00403844 |. 52 PUSH EDX ; /s2 这里是你输入的假注册码
00403845 |. 50 PUSH EAX ; |s1 = "A6406E58B834403DDE369A74E75D36A4"真注册码
00403846 |. FF15 4CE64700 CALL DWORD PTR DS:[<&msvcrt._mbscmp>] ; \_mbscmp
0040384C |. 83C4 10 ADD ESP,10
0040384F |. 85C0 TEST EAX,EAX
00403851 |. 75 0E JNZ SHORT SmartFax.00403861 ; 检查是否有注册码,没有跳走,所以NOP掉
00403853 |. 8B4C24 1C MOV ECX,DWORD PTR SS:[ESP+1C]
00403857 |. 8379 F8 01 CMP DWORD PTR DS:[ECX-8],1
0040385B |. 7E 04 JLE SHORT SmartFax.00403861 ; 检查注册码是否正确,不正确跳走,NOP掉
0040385D |. B3 01 MOV BL,1
0040385F |. EB 02 JMP SHORT SmartFax.00403863
00403861 |> 32DB XOR BL,BL
00403863 |> 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4]
00403867 |. C64424 10 01 MOV BYTE PTR SS:[ESP+10],1
0040386C |. E8 3F100700 CALL <JMP.&mfc42.#800_??1CString@@QAE@XZ>
00403871 |. 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18]
00403875 |. C64424 10 00 MOV BYTE PTR SS:[ESP+10],0
0040387A |. E8 31100700 CALL <JMP.&mfc42.#800_??1CString@@QAE@XZ>
0040387F |. 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]
00403883 |. C74424 10 FFF>MOV DWORD PTR SS:[ESP+10],-1
0040388B |. E8 20100700 CALL <JMP.&mfc42.#800_??1CString@@QAE@XZ>
00403890 |. 8B4C24 08 MOV ECX,DWORD PTR SS:[ESP+8]
00403894 |. 8AC3 MOV AL,BL
00403896 |. 5B POP EBX
00403897 |. 64:890D 00000>MOV DWORD PTR FS:[0],ECX
0040389E |. 83C4 10 ADD ESP,10
004038A1 \. C3 RETN
8.自己会调试可以追出注册码,但是内存注册机没有加入启动参数的功能,所以只能爆破了。注册信息保存在C:\WINDOWS下的smartprinter.ini文件中。
9.以免以后升级再破解的麻烦,就用DUP V2.16作个通用补丁吧,但是ASProtect的壳用这个补丁后不能正常运行,
也就是说升级后脱壳的过程还是不能偷懒,但脱壳后的工作就交给补丁来做了,建立一个[搜索与替换补丁]方案,
(1).搜索字节为:75 0E 8B 4C 24 1C 83 79 F8 01 7E 04 B3 01 EB 02 32 DB
(2).替换字节为:90 90 8B 4C 24 1C 83 79 F8 01 90 90 B3 01 EB 02 32 DB
(3).选中目标为一个已被压缩的PE文件选项
10.经过上步骤smartprinter3.6破解过程算是破解完了,但要正常使用,还要用破解后的文件替换两处的SmartFaxTool.exe
安装目录下的SmartFaxTool.exe和C:\WINDOWS目录下的SmartFaxTool.exe,所以就做个批处理文件来帮助完成这项工作吧,代码如下:
@echo off
title smartprinter(虚拟打印机)3.6替换文件
MODE con: COLS=40 lines=45
color 0a
for /f "tokens=1,2,*" %%a in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\9AB234FA06470014087A915B4EF95D9D" ^| FIND /I "D0CCD292596FB8846BD94A0EACA2B4A3"') DO (
set SmartFaxTool_path=%%~fsc)
set SmartFaxTool_system=%systemroot%
del %SmartFaxTool_system%\SmartFaxTool.exe /q /f
copy SmartFaxTool.exe %SmartFaxTool_system%\SmartFaxTool.exe
copy SmartFaxTool.exe %SmartFaxTool_path%
pause
[ 本帖最后由 jy2207661 于 2008-10-15 09:12 编辑 ] |
评分
-
查看全部评分
|