好友
阅读权限10
听众
最后登录1970-1-1
|
【文章标题】: 双智格子铺管理软件--追码过程
【文章作者】: kelvar
【作者邮箱】: kelvar@sohu.com
【作者主页】: 建设中
【作者QQ号】: 44232165
【软件名称】: 双智格子铺管理软件 2.6
【软件大小】: 5468KB
【下载地址】: 自己搜索下载
【保护方式】: 注册码
【编写语言】: VB
【使用工具】: PEID0.95,FlyOD,野猪OD
【操作平台】: 盗版window xp2
【软件介绍】: http://www.newhua.com/soft/71803.htm
【作者声明】: 菜鸟凑热闹~^_^,失误之处请大虾们指出。
--------------------------------------------------------------------------------
【详细过程】
看到有网友求破文和注册机。由于以前也没有写过注册机(发现注册机不能工作)。也算是锻炼下自己。好了废话少说,下面进入正题。
首先下载安装,用PEID查壳,ASPack 2.12 -> Alexey Solodovnikov的壳。嘿嘿,小样忒简单的壳啦。
直接用PEID插件--PEID通用脱壳器脱之。并选择使用IMREC修复,好了运行下脱壳后的文件,OK可以运行。PEID再查下,
显示Microsoft Visual Basic 5.0 / 6.0。
OD直接载入,忽略所有异常。隐藏OD 然后Ctrl+N,查找使用到的API函数,一般使用三个 004010F0 MSVBVM60.rtcMsgBox
00401188 MSVBVM60.__vbaStrCmp
00401300 MSVBVM60.__vbaVarCmpEq
OK,三个函数上直接下断,然后Shift+F9运行,发现程序在NT.dll出现死机现象。(注:我在另一台电脑上
调试的时候,先是一个中断,然后就是直接退出。后来再另一台机器上调试的时候试了几个版本的OD都不好用,但是最终找到
野猪DBG加载成功)。所以猜测程序有校验之类的东西检测断点。所以我们只能先
取消断点让程序跑起来,然后三个断点一个一个的试试。其实很快的。
方法推荐下面的两种
1。使用rtcMsgBox,出现错误提示框的时候查看堆栈中的返回地址回溯。
2。使用两个__vbaStrCmp,__vbaVarCmpEq断点一个一个试试好了,看看程序先断在那里
这里我就直接使用第一种方法。
F9让程序先跑起来,然后点击帮助--软件注册,输入假码"123456789"。这里我的机器码是"F1BC9C1350940B60"
此时先将断点rtcMsgBox激活,然后点击注册按钮。看到堆栈中出现 0012E5C0 005F6ADF 返回到 双智格子.005F6ADF 来自 MSVBVM60.rtcMsgBox
好了,我们直接alt+F9返回,然后在段首下断。 005F6780 > \55 PUSH EBP
005F6781 . 8BEC MOV EBP,ESP
005F6783 . 83EC 0C SUB ESP,0C
005F6786 . 68 16C24000 PUSH <JMP.&MSVBVM60.__vbaExceptHandler> ; SE 处理程序安装
005F678B . 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
005F6791 . 50 PUSH EAX
005F6792 . 64:8925 00000>MOV DWORD PTR FS:[0],ESP
005F6799 . 81EC CC000000 SUB ESP,0CC
005F679F . 53 PUSH EBX
005F67A0 . 56 PUSH ESI
005F67A1 . 57 PUSH EDI
005F67A2 . 8965 F4 MOV DWORD PTR SS:[EBP-C],ESP
005F67A5 . C745 F8 20614>MOV DWORD PTR SS:[EBP-8],双智格子.00406120
005F67AC . 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8]
.......................
005F684B . 8BF8 MOV EDI,EAX
005F684D . FF91 A0000000 CALL DWORD PTR DS:[ECX+A0]
005F6853 . 3BC3 CMP EAX,EBX
005F6855 . DBE2 FCLEX
005F6857 . 7D 12 JGE SHORT 双智格子.005F686B
005F6859 . 68 A0000000 PUSH 0A0
005F685E . 68 08FF4300 PUSH 双智格子.0043FF08
005F6863 . 57 PUSH EDI
005F6864 . 50 PUSH EAX
005F6865 . FF15 9C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckObj>] ; MSVBVM60.__vbaHresultCheckObj
005F686B > E8 002EF3FF CALL 双智格子.00529670
005F6870 . 8B1D 64134000 MOV EBX,DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>] ; MSVBVM60.__vbaStrMove
005F6876 . 8BD0 MOV EDX,EAX ; 出现真码
005F6878 . 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
005F687B . FFD3 CALL EBX
005F687D . 50 PUSH EAX
005F687E . 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
005F6881 . 50 PUSH EAX
005F6882 . FF15 88114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCmp>] ; MSVBVM60.__vbaStrCmp
005F6888 . 8BF8 MOV EDI,EAX
005F688A . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
005F688D . F7DF NEG EDI
005F688F . 1BFF SBB EDI,EDI
005F6891 . 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]
005F6894 . 51 PUSH ECX
005F6895 . 47 INC EDI
005F6896 . 52 PUSH EDX
005F6897 . 6A 02 PUSH 2
005F6899 . F7DF NEG EDI
005F689B . FF15 DC124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStrList>] ; MSVBVM60.__vbaFreeStrList
005F68A1 . 8D45 C8 LEA EAX,DWORD PTR SS:[EBP-38]
005F68A4 . 8D4D CC LEA ECX,DWORD PTR SS:[EBP-34]
005F68A7 . 50 PUSH EAX
005F68A8 . 51 PUSH ECX
005F68A9 . 6A 02 PUSH 2
005F68AB . FF15 54104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeObjList>] ; MSVBVM60.__vbaFreeObjList
005F68B1 . 83C4 18 ADD ESP,18
005F68B4 . 66:85FF TEST DI,DI
005F68B7 . 0F84 B6010000 JE 双智格子.005F6A73
005F68BD . 8B16 MOV EDX,DWORD PTR DS:[ESI]
005F68BF . 56 PUSH ESI
005F68C0 . FF92 FC020000 CALL DWORD PTR DS:[EDX+2FC]
005F68C6 . 50 PUSH EAX
005F68C7 . 8D45 CC LEA EAX,DWORD PTR SS:[EBP-34]
005F68CA . 50 PUSH EAX
005F68CB . FF15 F4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSet>] ; MSVBVM60.__vbaObjSet
005F68D1 . 8BF8 MOV EDI,EAX
005F68D3 . 8D55 C8 LEA EDX,DWORD PTR SS:[EBP-38]
005F68D6 . 52 PUSH EDX
005F68D7 . 6A 01 PUSH 1
005F68D9 . 8B0F MOV ECX,DWORD PTR DS:[EDI]
005F68DB . 57 PUSH EDI
005F68DC . FF51 40 CALL DWORD PTR DS:[ECX+40]
005F68DF . 85C0 TEST EAX,EAX
005F68E1 . DBE2 FCLEX
005F68E3 . 7D 0F JGE SHORT 双智格子.005F68F4
005F68E5 . 6A 40 PUSH 40
005F68E7 . 68 58F64300 PUSH 双智格子.0043F658
005F68EC . 57 PUSH EDI
005F68ED . 50 PUSH EAX
005F68EE . FF15 9C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckObj>] ; MSVBVM60.__vbaHresultCheckObj
005F68F4 > 8B45 C8 MOV EAX,DWORD PTR SS:[EBP-38]
005F68F7 . 8D55 DC LEA EDX,DWORD PTR SS:[EBP-24]
005F68FA . 52 PUSH EDX
005F68FB . 50 PUSH EAX
005F68FC . 8B08 MOV ECX,DWORD PTR DS:[EAX]
005F68FE . 8BF8 MOV EDI,EAX
005F6900 . FF91 A0000000 CALL DWORD PTR DS:[ECX+A0]
005F6906 . 85C0 TEST EAX,EAX
005F6908 . DBE2 FCLEX
005F690A . 7D 12 JGE SHORT 双智格子.005F691E
005F690C . 68 A0000000 PUSH 0A0
005F6911 . 68 08FF4300 PUSH 双智格子.0043FF08
005F6916 . 57 PUSH EDI
005F6917 . 50 PUSH EAX
005F6918 . FF15 9C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckObj>] ; MSVBVM60.__vbaHresultCheckObj
005F691E > 8B3D C8124000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaStrCopy>] ; MSVBVM60.__vbaStrCopy
005F6924 . BA 50214400 MOV EDX,双智格子.00442150 ; UNICODE "13561322200*"
005F6929 . 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
005F692C . FFD7 CALL EDI
005F692E . BA 8CE94300 MOV EDX,双智格子.0043E98C ; UNICODE "7B293FF5D1A543C75F4E8D66A6BDDC97"
005F6933 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
005F6936 . FFD7 CALL EDI
005F6938 . 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
005F693B . 68 D4204400 PUSH 双智格子.004420D4 ; UNICODE "panan"
005F6940 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
005F6943 . 50 PUSH EAX
005F6944 . 51 PUSH ECX
005F6945 . E8 C63CF3FF CALL 双智格子.0052A610
005F694A . 8BD0 MOV EDX,EAX
005F694C . 8D4D E0 LEA ECX,DWORD PTR SS:[EBP-20]
005F694F . FFD3 CALL EBX
005F6951 . 50 PUSH EAX
005F6952 . FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCat>] ; MSVBVM60.__vbaStrCat
005F6958 . 8BD0 MOV EDX,EAX
005F695A . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
005F695D . FFD3 CALL EBX
005F695F . 8B55 DC MOV EDX,DWORD PTR SS:[EBP-24]
005F6962 . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]
005F6965 . C745 DC 00000>MOV DWORD PTR SS:[EBP-24],0
005F696C . FFD3 CALL EBX
005F696E . 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
005F6971 . 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
005F6974 . 52 PUSH EDX
005F6975 . 50 PUSH EAX
005F6976 . E8 553AF3FF CALL 双智格子.0052A3D0
005F697B . 8BD0 MOV EDX,EAX
005F697D . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30]
005F6980 . FFD3 CALL EBX
005F6982 . 50 PUSH EAX
005F6983 . 68 30214400 PUSH 双智格子.00442130 ; UNICODE "regcode"
005F6988 . 68 1C214400 PUSH 双智格子.0044211C ; UNICODE "reginfo"
005F698D . 68 C4204400 PUSH 双智格子.004420C4
005F6992 . FF15 0C104000 CALL DWORD PTR DS:[<&MSVBVM60.rtcSaveSetting>] ; MSVBVM60.rtcSaveSetting
005F6998 . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30]
005F699B . 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
好了,试做了下注册机。但是提示错误,猜测可能有防止注册机的东西
但是既然找到方法了,我想大家也达到目的了,嘿嘿做人不能太冠希,凡是给人留条后路嘛。
好了收工,该休息了。
--------------------------------------------------------------------------------
【经验总结】
本例子壳很容易脱掉,破解的思路也很简单,关键是程序对于OD的检测很强。导致很多版本的OD不能载入程序或者程序载入
后不能下断点。明码比较,就不用多说了。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于吾爱破解论坛, 转载请注明作者并保持文章的完整, 谢谢!
2009年03月17日 23:36:31 |
免费评分
-
查看全部评分
|