壳偷代码与OD脚本编写——UnPackMe_PELock1.06案例分析
需积分: 0 114 浏览量
更新于2023-12-31
收藏 590KB PDF 举报
本章将介绍被称为"stolen bytes"的概念以及与之相关的OD(OllyDbg)脚本编写方面的内容。我们将以UnPackMe_PELock1.06为例进行讲解,这款壳被广泛用作学习范例。在加载程序并停留在入口点处后,如果直接按下F9键运行,会发现该程序会弹出一个异常报错框。为了继续运行,我们可以按下shift+F9来忽略异常。然后,主程序对话框会弹出。在这个过程中,我们可以利用日志窗口中最后异常发生处的信息来定位OEP(原始入口点)。接下来,我们将介绍一种新的方法来定位最后一次异常发生处。我们将为Ring3异常分发函数KiUserExceptionDispatcher设置一个断点,因为所有的异常都会经过这个函数。在OD中找到这个函数后,我们对其进行分析。红色箭头标注的是NTDLL.DLL中KiUserExceptionDispatcher的起始地址。接下来是一个CALL指令,用于调用SEH链(结构异常处理链)中的异常处理函数。在执行完毕后,函数将返回,并根据返回结果决定下一步操作。
首先,让我们来解释一下什么是"stolen bytes"。在软件保护方面,壳(packer)被用来保护二进制文件免受逆向工程的威胁。"stolen bytes"是指通过某种手段恢复加密、压缩或混淆的代码,使其再次可执行。使用stolen bytes的目的是为了检测和绕过软件保护机制。
在我们的例子中,UnPackMe_PELock1.06是被PELock壳保护的。我们的目标是通过查找stolen bytes来解除对原始代码的保护,以便进行进一步的分析和修改。在OD中,我们可以定位到stolen bytes并还原其原始形态。在这个例子中,我们可以使用OD脚本来自动化这个过程。
为了定位stolen bytes,我们可以借助OD提供的多种调试和分析工具。在使用OD进行调试时,我们可以设置断点在程序执行过程中感兴趣的地方。对于软件保护壳,我们可以设置断点在stolen bytes的解密/解压缩/解混淆处。通过检查内存中的数据和寄存器的变化,我们可以追踪代码的执行路径。此外,我们还可以使用OD提供的动态数据窗口来查看内存中的数据变化。
一旦我们找到stolen bytes并恢复代码,我们就可以对其进行进一步分析和修改。例如,我们可以查找关键函数或验证某些假设。通过修改stolen bytes,我们可以绕过软件保护措施,改变程序的行为或提取隐藏的信息。
为了更好地理解stolen bytes的概念,我们可以参考一些经典的教程和示例。在这些教程中,UnPackMe_PELock1.06经常被用作范例,因为它展示了stolen bytes的常见用法和技术。通过学习这些教程,我们可以深入了解stolen bytes的原理和应用。
总之,在本章中,我们介绍了stolen bytes的概念,以及使用OD定位和恢复stolen bytes的方法。通过分析和修改stolen bytes,我们可以绕过软件保护措施,理解程序的内部运作,并进行进一步的分析和修改。对于研究和逆向工程人员来说,掌握stolen bytes的技术是非常重要的。希望本章的内容能够帮助读者更好地理解和应用stolen bytes的概念。
2022-08-03 上传
2021-04-29 上传
2022-08-03 上传
2021-08-04 上传
2021-06-02 上传
2022-08-03 上传
2021-05-15 上传
2021-04-04 上传
2011-09-24 上传
江水流春去
- 粉丝: 51
- 资源: 352
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析