首页
社区
课程
招聘
[求助]第一次遇到这种的破解
发表于: 2008-4-26 23:20 10123

[求助]第一次遇到这种的破解

2008-4-26 23:20
10123
声明 本人菜鸟对于破解来说
下了软件 需要注册  学生哪有钱的  壳很容易脱了

但一运行 这样的 呵呵

不知道 如果我要爆破  

应该怎么办呢?

已上传

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (37)
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
:-)不会破解,看了一下,提供一点逆向的思维建议
这个软件它的注册码是在另一个文件里面,运行时已经显示在里面了,
有一种小概率的可能是它在我们点确定时才进行注册码的比较,我们就要拦截下确定按钮的子过程,然后就是读懂它的比较指令,
而另一种大概率的是,其实程序已经完成比较了,我们点确定时它只是输出比较的失败结果,我们的入手点就在与,程序既然在呈现出来前已经完成了比较,它的流程可以猜想是这样的,读出sn.txt里面的数据,把里面的数据作为注册码进行比较,得出失败的结果,弹出界面等待我们点确认,输出失败结果,我们就要在它读出sn.txt的数据地方进行拦截(在它操作文件的地方入手),顺着下去找到比较指令,读懂比较过程。
另一种概率的是,程序使用了Tls来达到目的,我用PE工具看了一下,没有见到Tls数据。

进行一个试验,我们把sn.txt文件移走,运行程序后,出现了一个内容为空的sn.txt文件,可见程序在读取sn.txt文件时有一个分支,首先是在当前目录寻找sn.txt文件,如果有就读出里面的东西作为用户输入的注册码,如果没有就创建一个空的sn.txt文件,这样,我们也就可以在它进行这些流程的中间拦截程序到达关键比较代码处。

呵呵,只是一点纯理论的建议,也仅仅是猜测,不知道对不对,希望对你有用。
2008-4-27 01:26
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
3
是VB P-CODE 的,OD不行,用WKT的VBDEBUGGER吧,呵呵

P-CODE的东西真是。。。很。。。难搞。
2008-4-27 08:36
0
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
4
WKT的VBDEBUGGER  无法打开此文件
2008-4-27 09:39
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
5
谢谢楼上的aoanzhishu试验,问题找到了。

不知道是壳还是什么原因,文件的导入表中MSVB60.DLL被替换成了全部小写,而WKT的调试器硬编码为判断是否导入了MSVB开头的的DLL,而小写的msvb60.dll被WKT的调试器认为不是VB的虚拟机,从而拒绝载入。

解决方法,修改程序的导入表,或者给WKT的调试器打内存补丁。补丁地址:00401489,原来的0x4256534d即是大写的“MSVB”,修改之即可。

在P-CODE的世间中尽情晕头转向吧。祝你好运。
2008-4-27 10:17
0
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
6
看来我懂得比你还少,我就去试验,你成功了的话,交流交流经验...
2008-4-27 11:35
0
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
7
能个不能把 VBDebugger 程序发上来,我下的始终找不到BDASMDLL.dll
然后进不去
2008-4-27 11:48
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
8
如果你是从看雪下的,这个文件是有的。

它提示找不到,你用下面的方法之一,你试试看是不是路径的问题,注意,任先一种方法就行了。

1。进入WKT DEBUGGER的目录再运行LOADER
2。修改桌面上的快捷方式,将起始目录指向WKT DEBUGGER的目录
3。将WKT目录下的BDASMDLL.dll和WKTVBDE。DLL拷贝到系统目录%SYSTEMROOT%\SYSTEM32下面。
2008-4-27 11:58
0
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
9
[Command1.Click]
**********Reference To-> sub_0040BF78
                               |
:0040B564  0B03000000                      ImpAdCallI2                ;Call ptr_004020E0; check stack 0000; Push EAX
:0040B569  2370FF                          FStStrNoPop                ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=[stack]
:0040B56C  0474FF                          FLdRfVar                   ;Push LOCAL_008C
:0040B56F  050400                          ImpAdLdRf                  ;Push ptr
:0040B572  240500                          NewIfNullPr                ;[Pop] [SR]
:0040B575  0F0003                          VCallAd                    ;Return the control index 02
:0040B578  1978FF                          FStAdFunc                  ;
:0040B57B  0878FF                          FLdPr                      ;[SR]=[LOCAL_0088]
***********Reference To:[propget]TextBox.Text
                              |
:0040B57E  0DA0000600                      VCallHresult               ;Call ptr_00404914
:0040B583  6C74FF                          ILdRf                      ;Push DWORD [LOCAL_008C]
:0040B586  FB3D                            NeStr                      ;
:0040B588  32040070FF74FF                  FFreeStr                   ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg
:0040B58F  1A78FF                          FFree1Ad                   ;Push [LOCAL_0088]; Call [[[LOCAL_0088]]+8]; [[LOCAL_0088]]=0
:0040B592  1C5B00                          BranchF                    ;If Pop=0 then ESI=0040B5BF
:0040B595  27F0FE                          LitVar                     ;PushVar LOCAL_0110
:0040B598  2710FF                          LitVar                     ;PushVar LOCAL_00F0
:0040B59B  2730FF                          LitVar                     ;PushVar LOCAL_00D0
:0040B59E  F500000000                      LitI4                      ;Push 00000000
******Possible String Ref To->"×i²l ²tÕiÈg"
                               |
:0040B5A3  3A60FF0700                      LitVarStr                  ;PushVarString ptr_00404B04
:0040B5A8  4E50FF                          FStVarCopyObj              ;[LOCAL_00B0]=vbaVarDup(Pop)
:0040B5AB  0450FF                          FLdRfVar                   ;Push LOCAL_00B0
**********Reference To->msvbvm60.rtcMsgBox
                               |
:0040B5AE  0A08001400                      ImpAdCallFPR4              ;Call ptr_00401092; check stack 0014; Push EAX
:0040B5B3  36080050FF30FF10                FFreeVar                   ;Free 0008/2 variants
:0040B5BE  13                              ExitProcHresult            ;
:0040B5BF  2740FF                          LitVar                     ;PushVar LOCAL_00C0

显然0040B592  1C5B00                          BranchF                    ;If Pop=0 then ESI=0040B5BF 这一句是爆破的语句,由于我对PCode 指令系统不熟悉,还请高人指点怎样修改机器码
2008-4-27 12:36
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
10
这句不是爆破点,这个函数根本不是关键函数,注册验证不在这里。不信你可以试试,1c改1d,则BranchF 变为BranchT

这个跳转,如果不跳,则弹出错误提示,如果跳了,则函数返回,然后进入主界面,但是马上会弹出“想玩破解,没门”之类的提示,然后关闭。

再找别的关键点吧。比如读文件。
2008-4-27 12:40
0
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
11
你是要爆破还是找到算法?
并能不能多介绍点p-code 与机器指令  对应码

不错,结果果真如你所料
[
上传的附件:
  • 1.jpg (193.31kb,330次下载)
2008-4-27 12:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感叹下。这软件还带挑衅的??太恶劣了!
2008-4-27 13:00
0
雪    币: 175
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
第一次见这样子的程序,这个程序不带壳,VB编写的
2008-4-27 14:01
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
壳 是我脱了 的 修复了  应该没有什么问题吧  修复过的
2008-4-27 14:35
0
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
15
这个真令我抓狂的软件终于破解了
上传的附件:
2008-4-27 14:36
0
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
16
补充以下 ,首先 得 感谢 书呆彭 的 帮助

其实说来 没一点技术含量,

首先:我 使用 OD 打开,发现根本找不到API 的切入点,我一脸茫然
然后才知道是vb程序,我之前没有反汇编过VB的 p-code 程序,幸好 高人帮助,我就下了
VBdebugger 与 VBexplorer

然后打开比较后,还是用vbexplorer静态汇编好,

破解如下:

1。[Command1.Click]
**********Reference To-> sub_0040BF78
                               |
:0040B564  0B03000000                      ImpAdCallI2                ;Call ptr_004020E0; check stack 0000; Push EAX
:0040B569  2370FF                          FStStrNoPop                ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=[stack]
:0040B56C  0474FF                          FLdRfVar                   ;Push LOCAL_008C
:0040B56F  050400                          ImpAdLdRf                  ;Push ptr
:0040B572  240500                          NewIfNullPr                ;[Pop] [SR]
:0040B575  0F0003                          VCallAd                    ;Return the control index 02
:0040B578  1978FF                          FStAdFunc                  ;
:0040B57B  0878FF                          FLdPr                      ;[SR]=[LOCAL_0088]
***********Reference To:[propget]TextBox.Text
                              |
:0040B57E  0DA0000600                      VCallHresult               ;Call ptr_00404914
:0040B583  6C74FF                          ILdRf                      ;Push DWORD [LOCAL_008C]
:0040B586  FB3D                            NeStr                      ;
:0040B588  32040070FF74FF                  FFreeStr                   ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg
:0040B58F  1A78FF                          FFree1Ad                   ;Push [LOCAL_0088]; Call [[[LOCAL_0088]]+8]; [[LOCAL_0088]]=0
:0040B592  1C5B00                          BranchF                    ;If Pop=0 then ESI=0040B5BF
:0040B595  27F0FE                          LitVar                     ;PushVar LOCAL_0110
:0040B598  2710FF                          LitVar                     ;PushVar LOCAL_00F0
:0040B59B  2730FF                          LitVar                     ;PushVar LOCAL_00D0
:0040B59E  F500000000                      LitI4                      ;Push 00000000
******Possible String Ref To->"×i2l? 2t?ièg"
                               |
:0040B5A3  3A60FF0700                      LitVarStr                  ;PushVarString ptr_00404B04
:0040B5A8  4E50FF                          FStVarCopyObj              ;[LOCAL_00B0]=vbaVarDup(Pop)
:0040B5AB  0450FF                          FLdRfVar                   ;Push LOCAL_00B0
**********Reference To->msvbvm60.rtcMsgBox

修改 爆破语句 0040B592  1C5B00                          BranchF            
  改为 1D5B00

2。
文件 存在  自较检

在 Form2 的时间timer1 控件中

[Timer1.Timer]
******Possible String Ref To->"×ܹ²"
                               |
:0040BC28  1B0F00                          LitStr                     ;Push ptr_004041E0
:0040BC2B  0460FF                          FLdRfVar                   ;Push LOCAL_00A0
:0040BC2E  21                              FLdPrThis                  ;[SR]=[stack2]
:0040BC2F  0F7C03                          VCallAd                    ;Return the control index 21
:0040BC32  1978FF                          FStAdFunc                  ;
:0040BC35  0878FF                          FLdPr                      ;[SR]=[LOCAL_0088]
:0040BC38  6168FF07000000                  LateIdLdVar                ;
:0040BC3F  FDF30300                        CastAdVar                  ;vbaCastObj
:0040BC43  1964FF                          FStAdFunc                  ;
:0040BC46  0864FF                          FLdPr                      ;[SR]=[LOCAL_009C]
:0040BC49  0D1C000300                      VCallHresult               ;Call ptr_00404178
:0040BC4E  6C60FF                          ILdRf                      ;Push DWORD [LOCAL_00A0]
:0040BC51  FBFE                            CStrI4                     ;vbaStrI4
:0040BC53  235CFF                          FStStrNoPop                ;SysFreeString [LOCAL_00A4]; [LOCAL_00A4]=[stack]
:0040BC56  2A                              ConcatStr                  ;vbaStrCat
:0040BC57  2358FF                          FStStrNoPop                ;SysFreeString [LOCAL_00A8]; [LOCAL_00A8]=[stack]
******Possible String Ref To->"Ì "
                               |
:0040BC5A  1B1000                          LitStr                     ;Push ptr_004041EC
:0040BC5D  2A                              ConcatStr                  ;vbaStrCat
:0040BC5E  2354FF                          FStStrNoPop                ;SysFreeString [LOCAL_00AC]; [LOCAL_00AC]=[stack]
:0040BC61  21                              FLdPrThis                  ;[SR]=[stack2]
:0040BC62  0F1403                          VCallAd                    ;Return the control index 07
:0040BC65  1950FF                          FStAdFunc                  ;
:0040BC68  0850FF                          FLdPr                      ;[SR]=[LOCAL_00B0]
***********Reference To:[propput]Label.Caption
                              |
:0040BC6B  0D54001100                      VCallHresult               ;Call ptr_004041F0
:0040BC70  3206005CFF58FF54                FFreeStr                   ;Do SysFreeString [arg_n]; [arg_n]=0 0006/2 times ~ arg
:0040BC79  29060078FF64FF50                FFreeAd                    ;
:0040BC82  3568FF                          FFree1Var                  ;Free LOCAL_0098
**********Reference To-> sub_0040BF78
                               |
:0040BC85  0B38000000                      ImpAdCallI2                ;Call ptr_004020E0; check stack 0000; Push EAX
:0040BC8A  2358FF                          FStStrNoPop                ;SysFreeString [LOCAL_00A8]; [LOCAL_00A8]=[stack]
:0040BC8D  045CFF                          FLdRfVar                   ;Push LOCAL_00A4
:0040BC90  053200                          ImpAdLdRf                  ;Push ptr
:0040BC93  243300                          NewIfNullPr                ;[Pop] [SR]
:0040BC96  0F0003                          VCallAd                    ;Return the control index 02
:0040BC99  1978FF                          FStAdFunc                  ;
:0040BC9C  0878FF                          FLdPr                      ;[SR]=[LOCAL_0088]
***********Reference To:[propget]TextBox.Text
                              |
:0040BC9F  0DA0003900                      VCallHresult               ;Call ptr_00404914
:0040BCA4  6C5CFF                          ILdRf                      ;Push DWORD [LOCAL_00A4]
:0040BCA7  FB3D                            NeStr                      ;
:0040BCA9  32040058FF5CFF                  FFreeStr                   ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg
:0040BCB0  1A78FF                          FFree1Ad                   ;Push [LOCAL_0088]; Call [[[LOCAL_0088]]+8]; [[LOCAL_0088]]=0
:0040BCB3  1CB900                          BranchF                    ;If Pop=0 then ESI=0040BCE1
:0040BCB6  27E0FE                          LitVar                     ;PushVar LOCAL_0120
:0040BCB9  2700FF                          LitVar                     ;PushVar LOCAL_0100
:0040BCBC  2720FF                          LitVar                     ;PushVar LOCAL_00E0
:0040BCBF  F500000000                      LitI4                      ;Push 00000000
******Possible String Ref To->"Ï Í Æ ½        £PÃsà Ì0´0£0µ0È
¶*³*Ð*¹o±s³bÐe"
                               |
:0040BCC4  3A40FF3A00                      LitVarStr                  ;PushVarString ptr_00404928
:0040BCC9  4E68FF                          FStVarCopyObj              ;[LOCAL_0098]=vbaVarDup(Pop)
:0040BCCC  0468FF                          FLdRfVar                   ;Push LOCAL_0098
**********Reference To->msvbvm60.rtcMsgBox

在:0040BCB3  1CB900                          BranchF            
处 爆破
为1DB900

我不太想研究他的算法了,比较累了,希望高人继续完成,如有不对之处,欢迎指点

终于了却了楼主的心愿,心情挺舒畅的 。。。
2008-4-27 14:45
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
可以贴出你的破解思路么

学习下

谢谢
2008-4-27 14:54
0
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
18
在上面我已经解释得很清楚了呀...
2008-4-27 15:03
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
速度 真快 一直在线了啊  

你用的是什么工具?

是 说呆彭 说的 WKTVBDE  么
2008-4-27 15:09
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我们发帖同时了   呵呵

当时没看到  的
2008-4-27 15:11
0
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
21
是呀,是用的vbexplorer 工具

呵呵
2008-4-27 15:12
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
0040B57E  0DA0000600          VCallHresult         ;Call ptr_00404914

00404914  是算法的入口么?
2008-4-27 15:14
0
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
23
不是,是获取控件text值的函数调用
2008-4-27 15:16
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
哦  感谢了  呵呵  我下来 好好看看
可以加你么

我给你发了邮件
2008-4-27 15:30
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
这个软件他对 功能没有做限制
只是注册不对  则Frame.Visible=false了

那么我我改成TRUE  是不是也可以达到目的呢?
请问aoanzhishu
2008-4-27 15:51
0
游客
登录 | 注册 方可回帖
返回
//