首页
社区
课程
招聘
一类VB程序的破解思路
发表于: 2006-7-13 21:53 8163

一类VB程序的破解思路

2006-7-13 21:53
8163

【文章标题】: 一类VB程序的破解思路
【文章作者】: badboys
【作者邮箱】: rmb6962819@163.com
【作者QQ号】: 36545246
【软件名称】: lose通用工具
【软件大小】: 25k
【下载地址】: 自己搜索下载
【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
【保护方式】: 功能限制
【编写语言】: VB
【使用工具】: pe0.95,all versions aspack unpacker汉化版by[1].cxlrb,GetVBRes0.90,VBParser1.2(VB pcode反编译程序),hiew6.86等
【操作平台】: win2000
【软件介绍】: 一款赚德国lose的工具(不要问我lose是什么!)
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
       关于VB语言的这类破解,看雪上有许多的文章,说明如何破解。不过都只是简单的讲一下而已,没有具体的例子,本人虽是菜鸟一个,不揣冒昧,写了这样一个例子,或许能为与我差不多的菜鸟提供一个思路。
       前些日子得到这款软件,一看有这样的限制,便想试试身手,一来提高自己的手艺,另外也给自己增加一款赚钱工具。(现在看来用途不大了)。
       说干就干。先看看有没有加壳。用peid0.95 一看,ASPack 2.12 -> Alexey Solodovnikov的壳,用peid自带的plugin就可以脱,我用all versions aspack unpacker汉化版by[1].cxlrb 来脱,一下子就脱光了(比我脱衣服快多了^-^),而且脱壳后的文件只有34k,比peid脱的80k要小多了。脱壳后再用peid察看,vb语言的。
       按照以前在龙族混时学到的东西,用wasdam打开一看,傻眼了,没有字符串,跳转也是莫名其妙:有的是跳到自身,有的是跳到语句中间。不知道该如何下手了。幸亏这是跳到了看雪论坛(是我,不是程序),潜水学习了几天,学到了不少东西,感觉到自己以前在龙族是白混了(不要拍砖头啊,龙族是有不少好东西的)。看了不少前辈的文章后,重新开始!
       原来vb的程序,特别是用p-code编的软件,它的格式与那些汇编语言的格式是根本不同的。(我没有学过VB,还是到看雪后才知道vb还有p-code和native的差别)它的字符串形式也不同,所以用wasdm等是看不到字符串的。这是可以用vbexplore等软件来可以反汇编。用vbexplore还可以很方便的删除一些不需要的按钮之类的资源。用VBParser1.2(VB pcode反编译程序)将软件反汇编(它称之为VB P-CODE解析)(不知道为什么,每次我解析vb程序,软件就出错,退出,使得我好久以后,偶然看到它目录下的那个ParseVB.txt文件为最新文件,奇怪之下,打开这个文件才发现解析后的文件就是这个txt).打开ParseVB.txt文件,可以看到一些字符串,可是需要的关键字符串(也就是超过8000lose时提示你的那句话)却没有,不仅如此,其他还有一些中文的语句也找不到。
       怎么办呢?再向前辈们(或许应该是后辈们)学习,哦,原来如此。
       用getvbres看看。哦,找到了,“本工具为试用版,仅当帐户LOSE数量少于8000时适用。正版请联系QQxxxxxxxx或http://www.xxxxxx.com”.“看到它,就别放过它”!用getvbres将它改为英文或者拼音后保存,我是讲它改为“80008000”(哎,你不是说英文或拼音吗?),再用VBParser1.2解析后,打开ParserVB.txt,搜索刚才修改后的字符(怎么搜索?我不知道):80008000,嗨,找到了(一共有5个,只列出了其中一个):
       00408DD7: 1A 88 FD           FFree1Ad                Push [local_278]; Call [[[local_278]]+8]; [[local_278]]=0
  00408DDA: 08 08 00           FLdPr                   [SR]=[stack_08]
  00408DDD: 8A 9C 02           MemLdStr                Push#4 [[SR]+029C]
  00408DE0: 0A 20 00 04 00     ImpAdCallFPR4           Call Ptr_004010B4; check stack 0004 (no return value)
  00408DE5: ED                 CR8R8                  
  00408DE6: F3 40 1F           LitI2:                  
  00408DE9: EB                 CR8I2                  
  00408DEA: E1                 GeR8                                                                                                      into DC
  00408DEB: 1D C9 01           BranchT                 If Pop<>0 then ESI=ProcPC+01C9
  00408DEE: 27 F8 FC           LitVar_Missing          PushVarError 80020004 (missing)                                                   VT_ERROR signifies an optional argument that is missing
  00408DF1: 27 38 FD           LitVar_Missing          PushVarError 80020004 (missing)                                                   VT_ERROR signifies an optional argument that is missing
  00408DF4: 27 48 FD           LitVar_Missing          PushVarError 80020004 (missing)                                                   VT_ERROR signifies an optional argument that is missing
  00408DF7: F5 00 00 00 00     LitI4:                  Push 00000000
  
  *********** Referent String: "80008000" ***********
                                |
  00408DFC: 3A 8C FD 21 00     LitVarStr               PushVarString Ptr_00405120
  
  00408E01: 4E 74 FD           FStVarCopyObj           [local_28C]=vbaVarDup(Pop)
  00408E04: 04 74 FD           FLdRfVar                Push local_28C
  00408E07: 0A 13 00 14 00     ImpAdCallFPR4           Call Ptr_004010A8; check stack 0014 (no return value)
  00408E0C: 36 08 00 74 FD 48  FFreeVar                Free 0008 variants : 74 FD 48 FD 38 FD F8 FC
            FD 38 FD F8 FC   
  00408E17: FC C8 04           End                     
  00408E1A: 84 FD 21           IStI2                  
  00408E1D: 0F 20 03           VCallAd                 
  00408E20: 19 88 FD           FStAdFunc               
  00408E23: 08 88 FD           FLdPr                   [SR]=[local_278]
  00408E26: 0D A0 00 01 00     VCallHresult            
  00408E2B: 6C 84 FD           ILdRf                   Push#4 [local_27C]
  00408E2E: 1B 22 00           LitStr:                 Push Ptr_004051A4
  00408E31: 2A                 ConcatStr               vbaStrCat
  00408E32: 23 70 FD           FStStrNoPop             SysFreeString [local_290]; [local_290]=[stack]
  00408E35: 1B 23 00           LitStr:                 Push Ptr_004051B0
  00408E38: 2A                 ConcatStr               vbaStrCat
  00408E39: 23 68 FD           FStStrNoPop             SysFreeString [local_298]; [local_298]=[stack]
  00408E3C: 21                 FLdPrThis               [SR]=[stack2]
  00408E3D: 0F 20 03           VCallAd                 
  00408E40: 19 6C FD           FStAdFunc               
  00408E43: 08 6C FD           FLdPr                   [SR]=[local_294]
  
  这一段程序是什么意思?我不懂,不过我看到:
  00408DEB: 1D C9 01           BranchT                 If Pop<>0 then ESI=ProcPC+01C9
  
  这不是要跳吗?(其实我也不知道它是要跳,我只知道branch是分支、支部、树枝的意思,觉得它应该就是je,至于后面它要跳到哪里,我还是不明白。不过依据以前的经验,应该是一个关键跳)
  将它修改成branchF 应该可以吧?branchF的机器码是多少?我不知道。不过按照一种语言的习惯,应该是连在一起的,不是1c就是1e.用hiew6.86,找到1D C9 01 27 F8 FC改成1c C9 01 27 F8 FC吧。
  修改后还不行。
  再在txt文件里搜索,哦,原来有5处80008000,这就是说,要判断5处?。统统修改成1c!
  再试,哈,可以了!
  
  注1:这样修改其实还是有缺陷的,那就是与试用版相反,在lose少于8000时会有“本工具为试用版,仅当帐户LOSE数量少于8000时适用。”应该是其中某一个跳转的问题,可能某个跳转不需要修改。但是因为我的账户被k了,所以也就懒得再去找是哪一处了。
  
  
  
--------------------------------------------------------------------------------
【经验总结】
  1、想破解,多向前辈们学习.
  2、这一类的软件,通用的做法是:先脱壳,再用getvbres将注册或验证的提示改为拼音、英语、数字等,然后用VBParser
  解析,再对软件进行静态调试。
  3、同一公司或作者出品的软件,编写方法、保护措施等很有可能是相似的,可以用同样的方法来破解。(记得以前刚开始
  学破解,一个网络验证的软件,就是对照它的上一个版本的破解版来找相同的地方破解的,幸亏这个软件不大)
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年07月13日 21:48:12


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (9)
雪    币: 239
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
2
学习。我对PCODE没分析过,下次遇到,可以借鉴借鉴。
2006-7-13 22:07
0
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
虽然文章很简单,但思路对新手还是有些启发的。所以设个精华鼓励一下badboys,希望以后看到你更精彩的文章。
2006-7-13 22:12
0
雪    币: 203
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
最初由 kanxue 发布
虽然文章很简单,但思路对新手还是有些启发的。所以设个精华鼓励一下badboys,希望以后看到你更精彩的文章。


    谢谢。我还是第一次发破解的文章,居然精华文章就1篇了。呵呵。 真是莫大的鼓舞啊。
    第一次,文章不怎么好。
2006-7-14 19:48
0
雪    币: 232
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
羡慕ing `
2006-7-14 22:53
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
喜欢思路性的文章

我要猎枪,不要大米
2006-7-14 23:53
0
雪    币: 97697
活跃值: (200834)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
7
sustain.
2006-7-15 00:01
0
雪    币: 159
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
嘿嘿,真的启发不小!
2006-7-23 12:48
0
雪    币: 175
活跃值: (2531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
VB的破解确实让人头疼。
2006-7-23 20:23
0
雪    币: 269
活跃值: (51)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
方法是不错,学习了.
2006-7-24 06:29
0
游客
登录 | 注册 方可回帖
返回
//