小甲鱼 OllyDbg 视频教程:https://www.bilibili.com/video/av6889190?p=19

程序下载地址:https://pan.baidu.com/s/1u6SWgx83VWDwitNzxT2OXg    提取码:if41

PEiD 查壳工具:https://pan.baidu.com/s/1iNS4UlBvmXCxaj5a-AFupw    提取码:79z5

前言

inline patch “内嵌补丁” 指在程序文件中把补丁代码写入文件里面达到 PJ 的目的。

例:
原程序:  mov eax, dword ptr [ebp+8]    3个字节
想改为:  mov eax, 4                    5个字节
若如此修改,会产生溢出,覆盖了下面的指令

所以要采用内嵌补丁的方式:

1. 找程序的空白区间,写入自己需要的指令(mov eax, 4),以及会被覆盖的指令
2.将原来的指令(mov eax, dword ptr [ebp+8])改为 jmp XXXXXX(补丁的地址)(这个操作也会覆盖后面的内容)
3.在补丁最后加上 jmp XXXXXXX(原程序后面的内容的地址),跳出补丁,返回主程序

开始

首先用 PEiD 查看,可以看到是 VC6.0 写的程序:

然后用 OD 载入程序,按 F9 运行,程序运行,然后随便输入注册:

发现程序界面没什么反应,现在输入注册码,不要点击 OK。打开 OD ,按下 Ctrl + n ,输入 killtimer,查找 KillTimer

,右键 -》 在每个参考上设置断点

为什么要在 KillTimer 上设置断点呢?通过观察发现了,KillTimer 实现了类似C语言的 switch case 的效果

点击 cmp eax, 3 ,在数据窗口可以看到 是从哪个位置跳转过过来的,然后右键 转到 上级调用地址,按这种方法直到回溯到程序的开头

回溯到 程序头,即switch case ,然后加上断点

在向上看程序,函数的开头加个断点:

重新载入程序,让程序在函数开头的位置断下来,按 F8 单步调试,观察 eax 的值的变化:

解释:

所以就需要用到 内嵌补丁 来进行修补。什么是内嵌补丁,就是在程序中没用的内存空间写入补丁。因为程序在内存中都是需要内存对齐的,所以有些没用的空间都是用 0 来填充进行对齐,可以在这些地方写入补丁(这里写入地址为 5E47D0):

快速定位技巧:设置书签

记住位置或者设置书签,复制被覆盖的汇编代码:

原来位置的修改:

跳转到要写入内嵌补丁的位置,开始写入补丁:

粘贴被覆盖的代码,然后再跳转到原来的位置:

保存修改,然后运行程序,发现程序一直死循环。说明程序还有问题,冲洗载入程序,单步调试,当程序运行到 cmp eax,4 时,更改 ZF 标志位,让程序跳转实现,然后继续调试,发现当程序 执行 cmd eax,0B 时,程序正常。所以修改补丁位置 mov eax,4 位 mov eax, 0B

保存程序,然后运行程序,发现程序正常。

说明:当程序 mov eax,4 时,验证成功,但是验证成功后还的 mov eax,0B 跳出循环,所以当 mov eax,4 时,虽然验证成功,但是没有跳出循环,所以一直跳出窗口。

小甲鱼 OllyDbg 教程系列 (十一) : inline patch ( 内嵌补丁 )相关推荐

  1. 小甲鱼 OllyDbg 教程系列 (三) :PJ 软件功能限制

    小甲鱼OllyDbg教程:https://www.bilibili.com/video/av6889190?p=8 https://www.freebuf.com/articles/system/87 ...

  2. 小甲鱼 OllyDbg 教程系列 (八) :fjproducer 逆向 之 困境

    小甲鱼 OllyDBG 教程:https://www.bilibili.com/video/av30969642?p=15 程序下载地址: https://pan.baidu.com/s/1xTBrv ...

  3. 小甲鱼 OllyDbg 教程系列 (十二) : inline patch ( 内嵌补丁 ) 之 调用堆栈查找法

    小甲鱼 OD 教程:https://www.bilibili.com/video/av6889190?p=20 堆栈调用方法 程序运行后,直接断点到 004DC0D1 这个 位置,按 F8一直没反应, ...

  4. 小甲鱼 OllyDbg 教程系列 (九) :Delphi 程序逆向特点

    小甲鱼 OllyDBG 使用教程:https://www.bilibili.com/video/av30969642?p=16 OD 实验(十二) - 对一个 Delphi 程序的逆向:https:/ ...

  5. 小甲鱼 OllyDbg 教程系列 (十七) : 反调试

    小甲鱼 OD 教程:https://www.bilibili.com/video/av6889190?p=27 ReverseMe.A.B.C.D 下载地址:https://pan.baidu.com ...

  6. 小甲鱼 OllyDbg 教程系列 (十六) : 简单病毒的逆向分析

    小甲鱼 OD 教程( 多态 和 变形 分析 ):         https://www.bilibili.com/video/av6889190?p=25         https://www.b ...

  7. 小甲鱼 OllyDbg 教程系列 (十五) : 逆向注册机简单算法

    小甲鱼 OD 教程: https://www.bilibili.com/video/av6889190?p=24 KeygenMe 下载地址:https://pan.baidu.com/s/1gXAs ...

  8. 小甲鱼 OllyDbg 教程系列 (十四) : 模态对话框 和 非模态对话框 之 URlegal 和 movgear

    小甲鱼 OD 使用教程:https://www.bilibili.com/video/av6889190?p=22 exeScope 下载:https://pan.baidu.com/s/1dSWap ...

  9. 小甲鱼 OllyDbg 教程系列 (十三) : 把代码和变量注入程序 以及 硬件断点

    小甲鱼 OllyDbg 视频教程:https://www.bilibili.com/video/av6889190?p=21 程序下载地址:https://pan.baidu.com/s/1A4-BD ...

最新文章

  1. Nature子刊:整合宏基因组、代谢组和表型分析的的计算框架
  2. python3-Python3.7.0官方版
  3. Pycharm设置pylint real-time scan实时扫描代码规范
  4. js加版本号 webpack_webpack脚手架增加版本号
  5. 设计模式理解:装饰模式Decorator
  6. 抗炎饮食与混合坚果粉
  7. apache ignite_Kubernetes集群上的Apache Ignite和Spring第3部分:测试应用程序
  8. android 基础应用程序,android应用程序基本实现(基础篇).ppt
  9. WPF MVVM模式
  10. shell自动化处理_相关知识整理(整理中)20210329
  11. WCF简单教程(2) 聊聊binding
  12. 二维图像(数组)的fftshift
  13. Android Studio报错Error:java.lang.RuntimeException: Crunching Cruncher xx.png failed, see logs
  14. vue 中click.stop的用法
  15. 【AAAI2022】FDIWN - Feature Distillation Interaction Weighting Network for Lightweight Image SR
  16. 你不得不知的网络编程三剑客
  17. ThinkPad E450 拆机换电池
  18. 文献阅读:利用斯托克斯参量验证光波的偏振态
  19. matlab ekf算法讲解,EKF_AHRS(matlab实现)
  20. 初次模拟小鲨鱼记账本1.0

热门文章

  1. Facebook、阿里等大佬现身说法,NLP是否被高估了?
  2. 美团点评联盟广告场景化定向排序机制
  3. 最新出炉-阿里 2020届算法工程师-自然语言处理(实习生)以及补充:快递最短路径
  4. 【HTML/CSS】display相关属性
  5. Java面试知识点:Object类、Math类、BigDecimal类、自动装箱、拆箱
  6. 知识图谱最新权威综述论文解读:知识图谱补全部分
  7. Redis压缩列表原理与应用分析
  8. mybatis 打印SQL
  9. Shell awk文本处理,shell脚本编写
  10. Delphi中动态调用DLL的方法