没有合适的资源?快使用搜索试试~ 我知道了~
首页VB6反编译详解 VB6反编译详解 VB6反编译详解
VB6反编译详解 VB6反编译详解 VB6反编译详解
4星 · 超过85%的资源 需积分: 49 48 下载量 115 浏览量
更新于2023-03-03
评论 2
收藏 91KB DOC 举报
VB6反编译详解 VB6反编译详解 by Kenmark-Fenix ************************************************** 最新于2006-7-13更新! ************************************************** 写本文已经惦记了好几年了,由于一直没有完整的资料和充裕的时间,所以一直没有动手。 在这里一方面是写给大家看看,另一方面是招募更多有志于反编译VB6的同志们一起来研究学习! 我的E-MAIL:ken.mingyuan@hotmail.com ken.mingyuan@gmail.com 我的BLOG: blog.csdn.net/kenmark 我的QQ:188916915 十分期待着与大家一起学习! ——Kenmark VB6是一个半编译半解释的语言,编译后程序主要在运行库MSVBVM60.DLL下转悠,通过与MSVBVM60的互动来完成程序运行的过程。 1.引入(参考:《VB程序大揭密》我的博客上有转载http://blog.csdn.net/Kenmark/archive/2005/08/11/450985.aspx) 我们用W32DASM打开一个中型的VB程序来反汇编,我们发现程序中用到的MSGBOX÷FileCopy等理应对应API函数居然一个都没有出现在编译后程序的IMPORT TABLE里,一般VC和DEPHI都是直接出现在编译后程序的IMPORT TABLE里的,而我们的VB程序用到了如此之多的API函数居然只使用了一个DLL——MSVBVM60.DLL。
资源详情
资源评论
资源推荐
反编译详解
最新于 更新!
写本文已经惦记了好几年了,由于一直没有完整的资料和充裕的时间,所以一直没有动手。
在这里一方面是写给大家看看,另一方面是招募更多有志于反编译 的同志们一起来研究学习!
我的 !"#$%&# !%&#
我的 '(%#&)*$+
我的 ,,:--../
十分期待着与大家一起学习!
00
是一个半编译半解释的语言,编译后程序主要在运行库 12 下转悠,通过与
1 的互动来完成程序运行的过程。
引入(参考:《 程序大揭密》我的博客上有转载 "$$3++%#&)*$++&"4+/+
-++5/.-/)3)
我们用 621 打开一个中型的 程序来反汇编,我们发现程序中用到的 1('78%9#3 等
理应对应 : 函数居然一个都没有出现在编译后程序的 :';<< 里,一般 9 和 2:= 都是直接
出现在编译后程序的 :';<< 里的,而我们的 程序用到了如此之多的 : 函数居然只使用了
一个 20012。
然后用工具打开 12,一看,输出的函数还真不少,其中有用>>4 和 $& 开头的也有直接
就是函数名的,仔细一看,哇赛,可以说完全是一个 ?*#?): 的代理,应有尽有
$&;*#@:;*#@函数的对应 :;
$&*9":*函数的对应 :;
$&A$9"、$&;"$9":看出来了吧,这些是 A$、;"$ 函数的对应 :;
$&B339):B9)函数的对应 :;
$&%%%):%%语句的对应 :;
$&%9#3:%9#3语句的对应 :;
$&%$":'、% 函数的对应 :;
$&($<:;*#@< 中获取 < 的对应 :;
$&1"%%:1"%% 函数的的对应 :;
$&2:2语句的对应 :;
$&;#42:;2语句的对应 :;
$&2:2函数的对应 :;
$&13&:13&函数的对应 :;
原来,所有 的操作函数都是在调用 12 里面实现
前缀是 $& 的是一般的语句和函数
涉及字符串处理的都叫 4C例如:
>>4B# *:B# *的对应 :;
>>4%'3:'3语句的对应 :;
>>41$93:比较两个字符串:A1$D1$<"
>>4':'运算符的对应 :;
>>4;*:;*语句的对应 :;
>>4;*:)4:;*语句加上:)4参数的对应 :;
>>4($、4: $:($、: $ 语句的对应 :EE
我们还看到一个 2:2%% &$#9%%,这个就是我们调用其他 2 时需要向 1 申请的,…
………。
可以说 的程序是一个包裹在 1 阴影控制下的孩子,所有的操作都要直接向它请求,而
1 完全可以称得上是一个代理的机器。从程序开始,到运行中的所有操作,函数调用,错误报
告等等,都是由它一手包办的。
来吧,我们这里不是来介绍它是怎么构成的我们要搞掉它虚伪的外表,把我们的代码从 1 的封
建保护下救出来。
我的资料大量是参考一个开源的 程序解析程序(居然也是用 编写的),这个程序可以完全分析出
程序(没有加壳)的 :;'F9< 信息以及完全将 '; 变回来,对于代码呢,可以获得 1BG 的
汇编代码地址,但是不能返回到 代码,里面还内置了一个假的反汇编器,以后我会说的!
我提供了它的下载,大家去看看,不知道它的资料是哪里来的十分全面,就是用 写的比较繁!还有由
于界面控制太多,代码有点乱!
程序初始化
我们用 621 打开任何 程序,跳到 G<;H:'G< 之后看到的总是一个 :B1=一个地址,
然构调用 12 的 <" ;<
而在 9 程序里,我们至少要看到进程的创建什么的,其实这个 函数是一切的开端,由它开始来解析
整个编译后的程序,完成系统环境的初始化,然后找到真正的程序入口,跳转到程序的领空。
所以这个 :B1= 指令压入栈的是 7(姑且这么称呼)初始化结构的开始。我们存下这个地址(这个
是一个 要正确地转换成文件地 '1< 先要) 然后要对照块表,可以用工具完成,熟悉了
一下就能看出来),然后我们跳到那里。
看看是什么C哇赛,是 程序的招牌也!“/IJ是所有 程序初始化结构入口地址指向的 (9 字符,
找到这里,开始能够读取 初始化结构了(我们现在做的就是 <" ;< 要完成的)
我们开始了!
部分名词解读
;相对虚拟地址C一般需要使用 ;'K)$ 来将其转换成绝对的文件偏移变量前缀为 3 或是
虚拟地址C减去 (1 就是 ;变量前缀为 3 或是
#K)$相对结构的偏移变量前缀为 #
)=2;
从 : 文件的 G<;H:'G< 进入后第一个指令是压入一个指针来表示 =2; 的位置,这个指令为
3 )" 地址是经过基址 (>1 偏移后的地址,所以减去 (>1 后获得的就是
=2; 开始的 然后用 :% 类中的函数加以分析可以得到的是文件中 =2; 的偏移量。
这个指令在机器码中是这样表示的:-95
- 是 :B1= 的机器码,而后是内存存储方式的地址化成汇编语言就是:
3 )"5&所以减去基址后就是 9 然后进行 '1< 得到的是 & 的偏移,转向那段
数据就能得到 =2;。
这是 =2; 结构的 9 语言描述
$3*A)$ &$
L
&"1$ M5NO++四个字节的签名符号,和 :=2; 里的那个 )$ 是类似性质的东西,
文件都是P/IP
6';2;$ %*O++运行时创立的变量(类似编译的时间)
H<2M5NO++语言 2 文件的名字(如果是 的话就代表是空或者是默认的)
H<2M5NO++备份 2 语言文件的名字(如果是 的话就代表是空或者是默认的,
改变这个值堆 7 文件的运行没有作用)
6';2;$2O++运行是 2 文件的版本
26';22O++语言的 2
26';22O++备份语言的 2(只有当语言 2 存在时它才存在)
26';231 O++;(实际研究下来是 )) 过程的地址指针()(如果时
则代表这个 7 时从 '; 窗体文件开始运行的)
26';23:#QA#O++工程信息的地址指针,指向一个 :#Q&$A#>$ 结构()
26';2A2$'Q)O++R详细见P2内部组建的标志表P
26';2A2$'Q)O++R详细见P2内部组建的标志表P
26';2<"*%)O++线程的标志
++标记的定义(<"*%) 数值的含义)
++SSSS
++T值T名字T描述T
++SSSS
++TT3$$#*%T特别化的多线程使用一个分开的模型T
++TT;U &)T特别化需要进行认证V只对 '97WT
++T5TB$$**T特别化的没有 (B 图形界面的元素需要初始化T
++T-T1%<"**T特别化的静态区时单线程的T
++TT;$*T特别化的将文件保存在内存中V只对 B$$**WT
++SSSS
++如果是 / 就表示是一个既有多线程C内存常驻C并且没有 (B 元素要初始化
26';2<"*9# $O++线程个数
6';29# $O++窗体个数
6';23$%9#3#$9# $O++外部引用个数例如 6G1'9 组件的引用
26';2<" 9# $O++R大概是内存对齐相关的东西
26';23(B<%O++(B 元素表的地址指针(指向一个 (B<%>$ 结构(5四))
26';23$%9#3#$<%O++外部引用表的地址指针
++26';23:#Q23O++工程的描述的地址指针(这个其实没有)
26';239#;2$O++9' 注册数据的地址指针
26';2#:#QO++'K)$指向工程 7 名字的字符串
26';2#:#Q<$%O++'K)$指向工程标题的字符串
26';2#=%3%O++'K)$指向帮助文件的字符串
26';2#:#QGO++'K)$指向工程名的字符串
X=*>$O
++2内部组建的标志表
++SSSS
++T2T值T组建名称T
++SSSS
++T第一个标志T
++SSSS
++TTT:&$ #T
++TTT%T
++TT5T<$#T
++TT-TT
++T5TT9#* $$#T
++T/TT9"&#T
++TT5T'3$# $$#T
++TT-T9###T
++T-TT)$#T
++T.TT=1&#%%T
++TT5T1&#%%T
++TT-T<T
++T9TT:$T
++T2TT#T
++TT5T1&T
++TT-T9%3#*T
++TTT24T
++TTT2T
++TT5T%)$#T
++TT-T T
++T5TT2#T
++T/TT33T
++TT5T1"3T
++TT-TT
++T-TTT
++T.TTB) 33#$*T
++TT5TB) 33#$*T
++TT-TB) 33#$*T
++T9TTB) 33#$*T
++T2TTB) 33#$*T
++TT5TB) 33#$*T
++TT-TB) 33#$*T
++SSSS
++T第二个标志T
++SSSS
++TTTB) 33#$*T
++TTTB) 33#$*T
++TT5TB) 33#$*T
++TT-TB) 33#$*T
++T5TTB) 33#$*T
++T/TT2$, T
++TT5T'T
++TT-TB) 33#$*T
++T-TTB)9#$#%T
++T.TT:#3$:T
++TT5T2#& $T
++TT-TB) 33#$*T
++SSSS
++如果值是 V那个被叫做P静态二进制常量定义在大多数的地方PW就是意味着来初始化打印
机C窗体C屏幕C剪贴板C组建VW也有 24+2组建VW
++这是 工程的一个默认的设置因为这些组建都能从一个模块中获得 #* %V例如C他们是没有图像的
除了经常被创造窗体W
)工程信息
从 =2;Y:#Q&$A#V是一个 W(1 后在通过 ;'1< 得到的是工程信息的
偏移地址
这是 :;'F9<>G' 结构的 9 语言描述
&#)$%#7>:<=DO++最长的 :<= 长度
$3*A)$ &$
L
26';21$ O++结构的签名特性,和魔术字符类似
26';23'Q&$<%O++结构指向的组件列表的地址指针(很重要的!())
26';2G %%O++R没有用的东西
6';231$$'A9#*O++代码开始点C类似 :=2Y$:#$ 这里告诉了 代码实际的
开始点
26';2%O++标志
26';2<"*13&O++多线程的空间RRRRRRRRRRRRRRRRR
26';23&3$#"*%O++ 意外处理机器地址指针
26';23G$49#*O++本地机器码开始位置的地址指针
6';2#:#Q&$#&$#O++'K)$工程位置RRRRRRRRRRRRRRRRR
6';2%O++标志
6';2%O++标志
H<'%:$"GM7>:<=NO++原文件地址C一个字符串C长度最长为 7>:<=
H<G %%13&O++无用的东西C用来占位置RRRRRRRRRRRRRRRRRRRR
26';23$%<%O++引用表的指针地址
26';2$%9# $O++引用表大小V个数W
++)@#AVWD&
X:#Q&$A#>$O
这个东西基本包含了这个 :;'F9< 的信息,但是主要的意义还是提供了之后的结构的索引,最重要的是
它提供了传说中的 'F9<< 的入口地址,对于 7 里面有多少 ';C'2B 十分重要。
)1
从 =2;Y1 可以获得 1 代码的入口处C但是有些 程序是从 '; 开始运行的
所以当这个值为 时就代表此程序不是从 1 开始运行的而是从 '; 开始运行的
5)(B<%
从 =2;Y(B<% 可以获得 (B 元素表的地址指针C也就是指向 6G2'61 图形元素的表
这是 (B<% 结构的 9 语言描述
$3*A)$ &$
剩余20页未读,继续阅读
c1210439070
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5