wanjiale 发表于 2009-3-17 23:40

双智格子铺管理软件--追码过程

【文章标题】: 双智格子铺管理软件--追码过程
【文章作者】: 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:
005F6791   .50            PUSH EAX
005F6792   .64:8925 00000>MOV DWORD PTR FS:,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:,ESP
005F67A5   .C745 F8 20614>MOV DWORD PTR SS:,双智格子.00406120
005F67AC   .8B75 08       MOV ESI,DWORD PTR SS:
.......................
005F684B   .8BF8          MOV EDI,EAX
005F684D   .FF91 A0000000 CALL DWORD PTR DS:
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:
005F687B   .FFD3          CALL EBX
005F687D   .50            PUSH EAX
005F687E   .8B45 E8       MOV EAX,DWORD PTR SS:
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:
005F688D   .F7DF          NEG EDI
005F688F   .1BFF          SBB EDI,EDI
005F6891   .8D55 E4       LEA EDX,DWORD PTR SS:
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:
005F68A4   .8D4D CC       LEA ECX,DWORD PTR SS:
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:
005F68BF   .56            PUSH ESI
005F68C0   .FF92 FC020000 CALL DWORD PTR DS:
005F68C6   .50            PUSH EAX
005F68C7   .8D45 CC       LEA EAX,DWORD PTR SS:
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:
005F68D6   .52            PUSH EDX
005F68D7   .6A 01         PUSH 1
005F68D9   .8B0F          MOV ECX,DWORD PTR DS:
005F68DB   .57            PUSH EDI
005F68DC   .FF51 40       CALL DWORD PTR DS:
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:
005F68F7   .8D55 DC       LEA EDX,DWORD PTR SS:
005F68FA   .52            PUSH EDX
005F68FB   .50            PUSH EAX
005F68FC   .8B08          MOV ECX,DWORD PTR DS:
005F68FE   .8BF8          MOV EDI,EAX
005F6900   .FF91 A0000000 CALL DWORD PTR DS:
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:
005F692C   .FFD7          CALL EDI
005F692E   .BA 8CE94300   MOV EDX,双智格子.0043E98C                                  ;UNICODE "7B293FF5D1A543C75F4E8D66A6BDDC97"
005F6933   .8D4D E8       LEA ECX,DWORD PTR SS:
005F6936   .FFD7          CALL EDI
005F6938   .8D45 E4       LEA EAX,DWORD PTR SS:
005F693B   .68 D4204400   PUSH 双智格子.004420D4                                     ;UNICODE "panan"
005F6940   .8D4D E8       LEA ECX,DWORD PTR SS:
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:
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:
005F695D   .FFD3          CALL EBX
005F695F   .8B55 DC       MOV EDX,DWORD PTR SS:
005F6962   .8D4D D8       LEA ECX,DWORD PTR SS:
005F6965   .C745 DC 00000>MOV DWORD PTR SS:,0
005F696C   .FFD3          CALL EBX
005F696E   .8D55 D4       LEA EDX,DWORD PTR SS:
005F6971   .8D45 D8       LEA EAX,DWORD PTR SS:
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:
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:
005F699B   .8D55 D4       LEA EDX,DWORD PTR SS:
好了,试做了下注册机。但是提示错误,猜测可能有防止注册机的东西
但是既然找到方法了,我想大家也达到目的了,嘿嘿做人不能太冠希,凡是给人留条后路嘛。
好了收工,该休息了。

--------------------------------------------------------------------------------
【经验总结】
本例子壳很容易脱掉,破解的思路也很简单,关键是程序对于OD的检测很强。导致很多版本的OD不能载入程序或者程序载入
后不能下断点。明码比较,就不用多说了。

--------------------------------------------------------------------------------
【版权声明】: 本文原创于吾爱破解论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年03月17日 23:36:31

et-boy 发表于 2009-3-19 00:57

0012E5C0   005F6ADF返回到 双智格子.005F6ADF 来自 MSVBVM60.rtcMsgBox


复制代码好了,我们直接alt+F9返回,然后在段首下断。
-------------------------------------------------------------------------------------
能出视频吗?
不太清楚

qiaozjhh 发表于 2009-3-18 20:33

et-boy 发表于 2009-3-18 20:30

你算出来的注册码是多少?

et-boy 发表于 2009-3-18 20:12

怪不得怎么老出错!
麻烦楼主给个 野猪DBG

注册机写不出来吗?
那可以修改机器码吗?写个软件修改机器码和导入注册码?

热火朝天 发表于 2009-3-18 00:01

不错哦,是好文章,支持楼主

lyliucn 发表于 2009-3-23 17:16

vb程序做起来就是比较难做。麻烦的很。

q493632284 发表于 2009-3-24 15:57


对中间的内容还懂,关于API函数的那点
不怎么懂
学习

回眸一笑 发表于 2009-5-2 21:28

不错,非常强大.支持一下

洞庭风 发表于 2009-5-2 21:42

学习了,感谢分享
页: [1] 2
查看完整版本: 双智格子铺管理软件--追码过程