HI,欢迎您光临本站,秉承服务宗旨,销售只是起点,服务永无止境!
    • 短视频文案
      • 励志哲理
      • 名言美句
      • 情感语录
      • 回复热评
      • 解说文案
    • 短视频素材
      • 情感励志
      • 美食小吃
      • 体育运动
      • 生活人文
      • 妙招好物
      • 风景风光
      • 影音娱乐
      • 颜值时尚
      • 游戏动漫
      • 自然景观
    • 短视频课程
      • 同城课程
      • 带货课程
      • 投放课程
      • 玩法课程
    • 中视频素材
    • 短视频工具
    • 副业项目
资源分享吧
  • 首页
  • CMS模板host
    • DEDECMS模板965
    • 易优CMS318
    • WordPress模板146
    • Discuz模板101
    • 帝国CMS102
    • 苹果cms78
    • Pbootcms24
    • zblog模板2
  • 整站源码
    • 教育/交友/直播76
    • 商城/淘宝/网店26
    • 门户/论坛/信息27
    • 小说/新闻/博客76
    • 电影/视频/音乐22
    • 图片/素材/下载49
    • 支付/金融/货币356
    • 导航/目录/友链25
    • 会员/推广/任务57
    • 公众号/小程序/游戏133
  • 一元夺宝new
    E启学在线网校网站在线教育校园教学平台程序系统V1.0源码
    E启学在线网校网站在线教育校园教学平台程序系统V1.0源码
    Laravel开发MeEdu在线点播网站源码 知识付费应用系统源码
    Laravel开发MeEdu在线点播网站源码 知识付费应用系统源码
    一比一精仿电影挖片网苹果cmsv10模板
    一比一精仿电影挖片网苹果cmsv10模板
    织梦高仿dede58织梦模板下载站完整无错整站版源码 1.69GB打包
    织梦高仿dede58织梦模板下载站完整无错整站版源码 1.69GB打包
    蓝色清晰织梦资源网下载站源码
    蓝色清晰织梦资源网下载站源码
    全景通旗舰版最新源码 内核到krpano1.19pr8 支持任何高清图
    全景通旗舰版最新源码 内核到krpano1.19pr8 支持任何高清图
    thinkPHP音视频素材资源下载站整站源码 带会员系统+支付接口
    thinkPHP音视频素材资源下载站整站源码 带会员系统+支付接口
    仿集图网模板图片素材类模板织梦下载站源码带整站数据
    仿集图网模板图片素材类模板织梦下载站源码带整站数据
    织梦蓝色图纸展示类企业网站源码
    织梦蓝色图纸展示类企业网站源码
    Thinkphp5.0响应式进销存仓库管理系统源码
    Thinkphp5.0响应式进销存仓库管理系统源码
    prev
    next
  • 网页素材
    • 网页游戏148
    • 网页模板4723
    • 特效代码5467
  • 办公素材
    • PPT模板377
    • 简历模板0
  • 站长学院
    • DEDE教程352
    • wordpress教程416
    • SEO教程124
    • 其它文档教程13
  • 更多
    • 办公教程4
    • 群辉教程12
    • 电脑基础7124
    • GPS导航
    • 安卓系统15
      • Android资讯2
      • ROM0
      • 教程工具0
    • Win系统169
      • Windows XP3
      • Windows 77
      • Windows 80
      • Windows 1012
      • 服务器系统1129
      • Win主题12
      • Win教程26
      • Win资讯0
      • Win软件98
    • 站点标签
    • 更新日志
    • 其他10
登录/注册
  • 精品会员专享
  • 会员折扣下载
  • 每日海量更新
立即开通 开通会员抄底价
当前位置:资源分享吧 > 教你如何制作VB的P-Code调试器
也想出现在这里? 联系我们吧

教你如何制作VB的P-Code调试器

作者 : 小编 本文共2822个字,预计阅读时间需要8分钟 发布时间: 2021-06-3 共4.11K人阅读
也想出现在这里? 联系我们吧

P-Code简介

术语P-Code既不是一个新名词也不是Microsoft的发明,P-Code只是简单地被解释执行的伪指令。因此,我们并不需要通过什么复杂的专业词汇来描述它。P-Code可以被认为是一种普通的机器级代码(我们的微处理器不能解释它)。在运行P-Code之前,需要一个解释器处理它,转换P-Code为CPU可以理解的机器语言。这个过程看起来有点象JAVA, 为了执行JAVA语言写成的应用程序,我们需要一个进行解释和翻译的处理程序- 虚拟机“Virtual Machine”。这个负有想象力的术语实际意味着它是一个翻译的机制,将JAVA编写的程序转换成我们的CPU可以理解的操作码(指令)。

P-Code的优势是明显的。假如我们定义了一组特殊的专属性指令集,并且不公布它的详细定义规范说明,那么一般人很难理解我们生成的程序代码;另一个优势是减小了执行文件的尺寸:通过定义独特的单字节操作码,我们能够使得某些伪指令执行一系列的操作(相当于大量的机器码完成的工作)。Microsoft的 Visual Basic 包含的P-Code的确是如此:一个VB虚拟机翻译P-Code到我们本地的机器码。 虚拟机(以dll形式出现),在P-Code程序执行前被调用,用来解释相关VB的伪指令。有如你猜测的那样,那些DLL的名称是 :

MSVBVM50.DLL MSVBVM60.DLL

文件名称清晰的表明是Microsoft Visual Basic 虚拟机(Virtual Machine), 后跟不同的版本信息。两个版本的差异不大:版本6引入了一些新的指令,并采用了更直观的命名来标注某些版本5中的指令。换句话说,版本6只是改变了版本5中部分指令名称,而非其内在的功能。

虚拟机不仅解释Visual Basic 的P-Code文件,同时它也被用于执行编译过的机器码。这是因为VB 虚拟机(DLL文件)同时也包含所有VB程序要调用的API。 一个例子是rtcMsgBox, 这是个等价于标准Windows API MessageBox 的VB函数。P-Code代码被VB虚拟机解释执行,VB中所有的函数都是以这种间接的方式被提供的。

由于这个原因,当我们跟踪一个Windows API MessageBox被 P-Code程序时,产生了一个严重的问题:我们必须要跟踪P-Code伪指令。

SoftICE 无法跟踪P-Code伪指令, 它只能跟踪VB虚拟机的执行过程。更明确地说, SoftICE 只能理解CPU处理器的机器码,它不能理解任何伪指令。我们将尝试去跟踪P-Code(P-Code伪指令将被转换成可被我们的CPU理解和执行的机器码)。

起始表(Beginning of the Tale)

几乎所有的事情都是如此:好奇心引发了人们迎接一项新的挑战,我们的故事由此开始。

我记得曾在EFNet网站(论坛)与Green先生讨论有关VB P-Code的问题。他那时的工作正好涉及有关VB5编译的应用程序。他告诉我处理P-Code是非常的困难,所以我们有了制作一个VB P-Code的Debugger程序的想法。 实际上Black先生也认为这是个有意义的思路。考虑到这个项目,我说如果我们没有任何可用的有关资源,这可不容易实现。而后,我们查找了许多有关信息,但没有任何有意义的发现,空手而归。好奇心使得我更加努力去细心地发掘有用的信息资料。的确是不易呀…我曾和Snow先生探讨有关问题,他提供给我一个被Lazarus修改过的 MSVBVM50, 在其中,他描述了VB程序表现的所有可能的串比较。这促使我下决心制作一个VB Debugger。

我认为当MSVBVM50运行时注入代码是可能的。被注入的代码能够调用我的Debugger, 它在一个DLL中实现。 我决定告诉已加入这个项目的Snow先生, 由他负责制作代码注入器 (好像一个调用装入器Loader) ,我负责Debugger (DLL)编码,就是那个被装入的Debugger(DLL) 。 就在我们两个完成了一些工作后,我们进行了测试,令人振奋的是它真的可以工作!这个 Debugger项目已经迈出了它的第一步。

我们可以控制VB虚拟机(截获有关操作),并且在虚拟机与VB应用程序之间安置我们的Debugger。最大的问题已经得到解决,虽然在初始阶段,我们采用的解决方案(技术上如你所见)并不是最终我们采用的方法。在我们的大目标和指导思想始终如一的情况下,我们不断对它进行改进,一直到我们完全避免了对虚拟机本身的修改。

* 第一步

跟踪分析,控制虚拟机

为使我们的Debugger能够工作,有一个关键性必须解决的问题:发现P-Code代码的翻译转换是什么时候以及如何发生的。一旦我们认识到这一点,我们注入的代码将接管对被调试的VB应用程序的控制,并且发送有关数据到我们的Debugger。Debugger 依次处理操作码并返回到VB 虚拟机。 我本人以前在有关调试器Debugger编码方面的经验几乎为零。不过不久前我差不多完成了一个x86的反汇编器 , 因此我将那些知识用于我的VB Debugger 开发工作。我的构思是这样的:

对于反汇编/解释这部分代码包含以下基本原理:

– 一个指针(pointer)指向一个缓存区(buffer),它包含将被转换的数据。

– 一个控制程序,它从缓存区中读取操作指令(opcodes)并且重定向程序流,使其依据我们的意图,指向我们想要它执行的程序位置。

这个任务通常表现为两种形式: 1、一系列控制描述语句(对于每一个操作码);2、使用一个地址跳转表。 我放弃了第一种选择。因为P-Code中各不相同的操作码实在太多,这将需要一个巨大的条件控制结构(处理这样的工作将变成世界上最慢的事情)。 我猜VB虚拟机对P-Code的翻译转换过程采用的是地址跳转表方法去解释那些可能的操作代码。 这种做法同样出现在我设计的反汇编器中。 现在,我必须完成以下的工作:

– 定位缓存区中待解释的操作码,定位跳转地址表

我设计并且编译了一个小VB应用程序:

Private Sub Form_Load()

MsgBox "Hello this is P-Code!!!", VBInformation, "Example"

End Sub

我通过SoftICE的符号载入器(symbol loader)调入MSVBVM60.DLL (VB6虚拟机) ,设置BPX on _rtcMsgBox。 当SoftICE 中断时,我按 F12返回调用 _rtcMsgBox 的代码:

call eax  // 调用 rtcMsgBox

cmp edi,esp  // 我们在此

jnz 66105595  // 检查堆栈指针

xor eax,eax  // 准备寄存器 eax 去调用缓存区中的下一个操作码

mov al,[ESI]  // 在al中装入待执行的操作码, 上面的演示中,它是36h

inc ESI  // 增加指针偏移量(在 ESI 寄存器中)

jmp [eax*4 660FDA58]  // 跳转到解释伪指令操作码 36h 的处理程序

指令 操作 虚拟机
1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » 教你如何制作VB的P-Code调试器

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
织梦模板使用说明
你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html
小编

小编 VIP

分享到:
上一篇
木马保护生成
下一篇
教你SQLSERVER扩展存储过程XP_CMDSHELL的简单应用

发表评论 取消回复

要发表评论,您必须先登录。

最新文章
餐饮火锅加盟网站pbootcms模板源码
餐饮火锅加盟网站pbootcms模板源码
源码下载新闻资讯博客网站pbootcms模板
源码下载新闻资讯博客网站pbootcms模板
绿色人造草坪地坪施工网站源码pbootcms模板
绿色人造草坪地坪施工网站源码pbootcms模板
红色火锅加盟网站pbootcms模板源码
红色火锅加盟网站pbootcms模板源码
蓝色源码钢结构工程基建网站pbootcms模板
蓝色源码钢结构工程基建网站pbootcms模板
标签云
DEDECMS (483) dedecms教程 (326) eyoucms (270) html (364) html5 (1717) html模板 (733) Linux (1245) linux教程 (1245) wordpress教程 (380) 下载 (277) 代码 (816) 企业网站模板 (874) 企业网站模板下载 (874) 免费企业网站模板 (874) 入侵防御 (270) 公司网站模板 (874) 切换 (502) 动画 (594) 国内网站模板 (324) 图片 (582) 技术网络漏洞 (347) 插件 (447) 效果 (765) 源码 (381) 漏洞 (371) 漏洞分析 (347) 特效 (789) 电脑使用 (4064) 电脑操作 (4064) 短视频素材 (606) 笔记本电脑价格 (4037) 笔记本电脑品牌排行 (4037) 笔记本电脑知识 (4037) 笔记本电脑评测 (4037) 素材 (483) 织梦 (407) 织梦教程 (342) 网站模板 (436) 网站源码 (417) 网站漏洞检测 (347) 网络安全WEB漏洞 (347) 菜单 (299) 视频 (376) 这是 (345) 鼠标 (417)

限时优惠

【阿里云】云产品采购季,助力行业复工。新用户专享1折起,云服务器低至0.75折,更多产品可叠加专属代金券下单
立即查看

相关推荐

jQuery仿Windows系统文件夹目录操作代码
小编小编

jQuery仿Windows系统文件夹目录操作代码

  • 4.23K
  • 免费
  • 下载
淘宝明星直播没有“活水”
小编小编

淘宝明星直播没有“活水”

锐龙R7 5800X3D的3D V-Cache有什么用? 有以下功能。AMD3D V-Cache是适用于服务器和桌面应用程序的创新3D 堆叠封装技术。为7nm x86-64CPU 实现 Hybrid-Bonded64MB 堆叠缓存,这是一种不同的处理器...
  • 4.86K
  • 免费
  • 下载
JS仿QQ消息列表手机触屏滑动删除编辑操作代码
小编小编

JS仿QQ消息列表手机触屏滑动删除编辑操作代码

  • 2.05K
  • 免费
  • 下载
快手直播!周杰伦线上哥友会今晚8点开启:预约人数近3000万
小编小编

快手直播!周杰伦线上哥友会今晚8点开启:预约人数近3000万

锐龙R7 5800X3D的3D V-Cache有什么用? 有以下功能。AMD3D V-Cache是适用于服务器和桌面应用程序的创新3D 堆叠封装技术。为7nm x86-64CPU 实现 Hybrid-Bonded64MB 堆叠缓存,这是一种不同的处理器...
  • 5.1K
  • 免费
  • 下载
  • 3103本站运营(天)
  • 62868用户总数
  • 26548资源数(个)
  • 2近7天更新(个)
  • 82301资源大小(GB)
加入VIP获取全站资源

「资源分享吧」 ZYFX8.CN

国内极具人气的网络源码资源交流学习平台
下载源码文章,学软件教程,找灵感素材,尽在「资源分享吧」

按Ctrl+D收藏本站

找资源就上「 资源分享吧 」

WWW.ZYFX8.CN

资源分享吧

资源分享吧(www.zyfx8.cn)是一家专门做精品素材的网站,网站以网站源码、网站模板、网页特效为主要内容,以“共享创造价值”为理念,以“尊重原创”为准则。

本站导航
  • 热门标签
  • 网站专题
  • 站点地图
更多导航
  • 申请友链
  • 用户协议
  • 免责声明
快速搜索
    友情链接 自助申请友链
  • RiTheme主题
  • wordpress主题
  • 在线PS修图
  • 源码下载
  • 网站模板
  • 资源分享吧
Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 蜀ICP备14022927号-1
资源分享吧(www.zyfx8.cn)是一家专门做精品素材的网站,以“共享创造价值”为理念,以“尊重原创”为准则。
  • 会员特惠
  • 签到
  • 客服

    在线客服

    点我联系

    直接说出您的需求!
    切记!带上资源链接与问题!

    工作时间: 9:30-21:30

  • 更新
    日历
  • 全屏
  • 首页

  • 签到

  • 切换

  • 客服

资源分享吧
  • 登录
  • 注册
or
or
忘记密码?
资源分享吧
  • 首页
  • CMS模板host ►
    • DEDECMS模板965
    • 易优CMS318
    • WordPress模板146
    • Discuz模板101
    • 帝国CMS102
    • 苹果cms78
    • Pbootcms24
    • zblog模板2
  • 整站源码 ►
    • 教育/交友/直播76
    • 商城/淘宝/网店26
    • 门户/论坛/信息27
    • 小说/新闻/博客76
    • 电影/视频/音乐22
    • 图片/素材/下载49
    • 支付/金融/货币356
    • 导航/目录/友链25
    • 会员/推广/任务57
    • 公众号/小程序/游戏133
  • 一元夺宝new
    E启学在线网校网站在线教育校园教学平台程序系统V1.0源码
    E启学在线网校网站在线教育校园教学平台程序系统V1.0源码
    Laravel开发MeEdu在线点播网站源码 知识付费应用系统源码
    Laravel开发MeEdu在线点播网站源码 知识付费应用系统源码
    一比一精仿电影挖片网苹果cmsv10模板
    一比一精仿电影挖片网苹果cmsv10模板
    织梦高仿dede58织梦模板下载站完整无错整站版源码 1.69GB打包
    织梦高仿dede58织梦模板下载站完整无错整站版源码 1.69GB打包
    蓝色清晰织梦资源网下载站源码
    蓝色清晰织梦资源网下载站源码
    全景通旗舰版最新源码 内核到krpano1.19pr8 支持任何高清图
    全景通旗舰版最新源码 内核到krpano1.19pr8 支持任何高清图
    thinkPHP音视频素材资源下载站整站源码 带会员系统+支付接口
    thinkPHP音视频素材资源下载站整站源码 带会员系统+支付接口
    仿集图网模板图片素材类模板织梦下载站源码带整站数据
    仿集图网模板图片素材类模板织梦下载站源码带整站数据
    织梦蓝色图纸展示类企业网站源码
    织梦蓝色图纸展示类企业网站源码
    Thinkphp5.0响应式进销存仓库管理系统源码
    Thinkphp5.0响应式进销存仓库管理系统源码
    prev
    next
  • 网页素材 ►
    • 网页游戏148
    • 网页模板4723
    • 特效代码5467
  • 办公素材 ►
    • PPT模板377
    • 简历模板0
  • 站长学院 ►
    • DEDE教程352
    • wordpress教程416
    • SEO教程124
    • 其它文档教程13
  • 更多 ►
    • 办公教程4
    • 群辉教程12
    • 电脑基础7124
    • GPS导航
    • 安卓系统15 ►
      • Android资讯2
      • ROM0
      • 教程工具0
    • Win系统169 ►
      • Windows XP3
      • Windows 77
      • Windows 80
      • Windows 1012
      • 服务器系统1129
      • Win主题12
      • Win教程26
      • Win资讯0
      • Win软件98
    • 站点标签
    • 更新日志
    • 其他10
文章展示
交易所源码搭建教程java多语言部署
交易所源码搭建教程java多语言部署
餐饮火锅加盟网站pbootcms模板源码
餐饮火锅加盟网站pbootcms模板源码
源码下载新闻资讯博客网站pbootcms模板
源码下载新闻资讯博客网站pbootcms模板
绿色人造草坪地坪施工网站源码pbootcms模板
绿色人造草坪地坪施工网站源码pbootcms模板
红色火锅加盟网站pbootcms模板源码
红色火锅加盟网站pbootcms模板源码
蓝色源码钢结构工程基建网站pbootcms模板
蓝色源码钢结构工程基建网站pbootcms模板
开通VIP 享更多特权,建议使用QQ登录
账号登录/注册
QQ登录
微博登录
×

    回馈用户限时特惠

    「 资源分享吧 」国内极具人气的网络资源交流学习平台,海量资源每天更新,优质资源畅快下载

    终身SVIP原价 590元,国庆限时活动价仅需 “ 59元 ”,终身免费~~机不可失~~


    立即开通永久会员>>