马上注册,结交更多好友,享用更多功能,让你轻松玩转无忧吧。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
新手逆向课程之易语言按钮事件 VMP 强壳逆向打补丁教程
易语言基础与按钮事件剖析
易语言是一门采用中文作为程序代码的编程语言,对国内编程爱好者,尤其是没有编程基础的新手十分友好。它拥有丰富的支持库,涵盖网络编程、图形界面、数据库操作等众多功能,并且有良好的社区支持,便于新手学习和交流。
在易语言程序中,按钮事件是常见的交互方式,即用户点击按钮后,程序执行相应功能。以一个简单的 “隐藏桌面” 按钮为例,我们可借助 E - Debug 这款辅助调试易语言程序的 OD 插件(仅支持静态编译程序)来分析其事件。首先,用 E - Debug 打开程序,找到 “隐藏桌面” 按钮对应的代码区域。每个按钮在程序代码中都有特定的地址标识,就像每个人都有独一无二的身份证号。通过查找相关资料或在代码中逐步排查,能确定该按钮事件的段首地址。
假设我们找到了 “隐藏桌面” 按钮事件的段首地址为 401337 。接下来,将程序拖入 OD(OllyDbg,一款常用的调试工具),按下快捷键 ctrl + G,在弹出的对话框中粘贴地址 401337 ,回车后便能定位到该地址在 OD 中的位置。在此处双击,即可下一个断点。断点的作用类似在程序执行的道路上设置一个 “关卡”,当程序执行到该位置时,会暂停运行,方便我们观察和分析程序的运行状态。
常规按钮事件逆向分析
下好断点后,按 F8 键(在 OD 中,F8 键用于单步步过,即执行一行代码后暂停),程序会逐步执行。在执行过程中,我们要留意程序的跳转指令。通常,按钮事件的代码逻辑中会存在一些跳转,用于实现不同条件下的功能分支。比如,当按钮被点击且条件满足时,程序跳转到执行隐藏桌面功能的代码段;若条件不满足,则跳转到提示错误信息的代码段。
我们要寻找的是实现按钮功能的关键跳转。当找到一个大跳转(即跳过按钮窗口相关代码,直接进入功能实现部分的跳转)时,这个跳转就是我们关注的重点。正常情况下,该跳转是会被执行的,从而实现按钮功能。但在逆向分析中,我们可以通过修改程序的运行状态,来改变这个跳转的执行结果。例如,在 OD 的寄存器窗口中,找到与跳转相关的标志位(如 ZF 标志位),将其值改成 0 。标志位就像是程序运行的 “指示灯”,不同的值指示程序不同的执行路径。当我们把标志位改成 0 后,原本会执行的跳转就不会实现了。
此外,我们还可以通过 NOP 填充的方式来阻止跳转。在断点处右键,选择 “二进制” - “NOP 填充”。NOP 指令在汇编语言中表示 “空操作”,用 NOP 填充跳转指令,相当于让程序在执行到此处时什么都不做,直接跳过原本的跳转逻辑。填充完成后,我们可以右键点击 NOP 填充的这部分内容,选择 “二进制” - “二进制复制”,将这部分修改后的指令复制下来,以备后续制作补丁使用。
VMP 强壳介绍及影响
VMP 是一款功能强大的加密壳,它采用代码虚拟化技术,能有效保护程序不被恶意修改。很多软件开发者会使用 VMP 对程序进行加壳保护,这给逆向分析带来了很大挑战。当易语言程序被 VMP 强壳保护后,原本清晰的代码结构变得复杂,关键代码被虚拟化,难以直接分析和修改。
例如,我们之前能轻松找到的按钮事件代码,在加壳后可能被隐藏在复杂的加密层之下。而且,VMP 会对程序的内存数据进行校验,一旦检测到程序被调试或关键数据被修改,可能会采取反制措施,如终止程序运行或让程序出现异常行为。所以,在对 VMP 强壳保护的易语言程序进行逆向打补丁时,需要采用特殊的方法和技巧,绕过 VMP 的保护机制。
VMP 强壳逆向与补丁制作
定位关键代码
虽然 VMP 增加了逆向难度,但我们仍可以通过一些方法来定位关键代码。比如,利用 OD 的智能搜索功能,在程序中搜索与按钮功能相关的字符串,如 “已注册”(假设按钮功能与注册相关)。找到该字符串后,点击查看其在代码中的位置,进而找到关键 call(函数调用),在此处下断点。同时,记录下寄存器中存放真注册码的寄存器和关键 call 的地址,这些信息对后续分析和修改程序至关重要。
绕过内存校验与修改跳转
由于 VMP 会进行内存校验,我们不能直接像常规程序那样修改汇编指令。此时,可利用异常机制来绕过内存校验。例如,通过 HOOK API(应用程序编程接口)函数,等待被补丁的地址数据解码。以获取窗口输入文本常用的 API 函数 GetWindowTextA 为例,我们可以 HOOK 这个函数。因为在程序运行过程中,VMP 在对关键代码进行保护和解码时,必然会调用一些 API 函数,我们 HOOK 这些函数,就能在合适的时机对程序进行干预。
当程序执行到关键跳转的起始点时,下断点,然后运行程序(此时可随便输入账号密码,模拟正常操作)。如果跳转正常实现,说明程序处于未破解状态。我们可以通过修改标志位,如将 ZF 标志位设置为 1 (具体根据程序逻辑确定),使跳转不实现,再次运行程序,就可能实现登录或按钮功能。当然,不同的程序可能需要根据具体情况调整标志位的值和修改的方式。
制作补丁
经过上述步骤,我们已经找到了能让按钮功能正常实现的代码修改方式。接下来,就可以制作补丁了。这里我们使用 XH 补丁制作工具,将需要打补丁的程序拖进 XH 工具中。然后,写入之前记录的内存地址(即我们下断点并进行修改的位置)和修改指令(如 NOP 填充后的二进制指令),点击 “添加”,最后点击 “生成补丁”。生成的补丁文件就可以用于破解被 VMP 强壳保护的易语言程序的按钮功能。
在实际操作中,打开被保护的程序,此时按钮功能可能无法使用。接着,运行刚刚生成的补丁,程序会按照我们预先设置的修改方式,对关键代码进行修改,从而使按钮功能得以正常使用。
通过以上步骤,新手朋友们可以初步掌握易语言按钮事件在 VMP 强壳保护下的逆向打补丁方法。当然,逆向工程是一个复杂且不断学习的过程,不同的程序可能会遇到各种不同的问题和挑战,需要我们不断积累经验,深入研究相关技术,才能更好地应对。
无忧技术吧交流群“805881393”
例子下载:https://whct.lanzoue.com/ieuyE311tjih
|
无忧技术吧-免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.whct.net无关。
2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
4、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
5、无忧技术吧(www.whct.net)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。无忧技术吧不承担任何因为技术滥用所产生的连带责任。无忧技术吧内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或QQ与我们联系处理。
6、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:whctwlgzs@foxmail.com),本站将立即改正。
联系方式:
站长邮箱:whctwlgzs@foxmail.com
站长QQ:4040068