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

 

 

小甲鱼 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 时,虽然验证成功,但是没有跳出循环,所以一直跳出窗口。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5 年提速 500 倍,英伟达 GPU 创纪录突破与技术有哪些?

作者:诗颖摘要:日前,英伟达 Developer Blog 上一篇博文详细陈述了英伟达 Volta Tensor Core GPU 在深度学习社群取得的巨大突破,以及种种突破背后的技术细节。2017 年 5 月,在 GTC 2017 上,英伟达 CEO 黄仁…

Guava入门~RateLimiter

约束每秒几个线程操作 RateLimiter limiter RateLimiter.create(4.0); 示例 阻塞方式 limiter.acquire(); executor.submit(runnable); 条件方式 if(limiter.tryAcquire()){doSomething(); }else{//Boo cant get indoSomethingElse(); } 完整示例 import com.google.c…

【译】Lesson 1: 一个三角形和一个方块

【声明】:本系列文章译自:http://learningwebgl.com/blog/?page_id1217, 感谢Giles Thomas;限于我的英文水平,本文翻译并不一定严格遵从原文,但也不会严重背离原文(如果有,请务必知…

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

小甲鱼OllyDbg教程:https://www.bilibili.com/video/av6889190?p8 https://www.freebuf.com/articles/system/87723.html 程序下载地址:https://pan.baidu.com/s/1OprawMSCXPZw1wuY5vxMmA 提取码: tp9e 无壳的实例 目标:去除软件功能限制…

特朗普即将主持AI会议 中美竞争成焦点

来源:华尔街见闻摘要:特朗普将用一整天在白宫主持他当选以来的第三次科技大会,这次的主题是人工智能(AI)。特朗普都将和硅谷巨头们探讨AI相关话题。其中,对AI技术的监管以及中美之间的AI竞争将会是会议的焦…

Guava入门~MapMaker

ConcurrentMap<String,Book> books new MapMaker().concurrencyLevel(2).softValues().makeMap(); concurrencyLevel()&#xff1a;设置允许并发修改map的线程数&#xff1b; softValues()&#xff1a;map的值用SoftReference封装&#xff0c;允许内存低时候垃圾回收&…

Fedora 10初体验

一、前奏 Fedora 10 - 熄灭吧 Fedora 是基于 Linux 的操作细碎&#xff0c;包罗了从容和开源软件最新的效果。Fedora 准许通通人从容操纵、修正和重新宣布。它由普及举世的贡献者协作开发&#xff0c;他们组成了 Fedora 项目社区。Fedora 项目对通通人都是开放的。 Fedora 项目…

DeepMind重大突破:AI进化出大脑级导航能力,像动物一样会“抄小路”

作者&#xff1a;刘伟摘要&#xff1a;DeepMind团队称&#xff0c;其最新研发出的一个人工智能程序具有类似哺乳动物一样的寻路能力。美国东部时间 5 月 9 日&#xff0c;一手打造 AlphaGo的DeepMind 团队又在世界顶级学术杂志《自然》上发表了一项重磅成果。在一篇题为 Vector…

Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具

From&#xff1a;https://github.com/jaywcjlove/awesome-mac/blob/master/README-zh.md. 目录 开发者工具测试工具命令行工具版本控制数据库设计和产品虚拟机通信数据恢复音频和视频书签阅读写作软件打包工具制作电子书下载工具网盘输入法浏览器翻译工具安全工具优雅的上网( …

Guava入门~Guava caches

Cache 接口 put(key,value)&#xff1a;往缓存中添加值&#xff1b; V value cache.get(key, Callable<? Extends V> value)&#xff1a;从缓存中获取值&#xff1b; // 等价 value cache.get(key); if(value null){value someService.retrieveValue();cache.put…

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

小甲鱼 OD 教程&#xff1a;https://www.bilibili.com/video/av6889190?p20 堆栈调用方法 程序运行后&#xff0c;直接断点到 004DC0D1 这个 位置&#xff0c;按 F8一直没反应&#xff0c;打开程序&#xff0c;可以看到 neg 窗口&#xff0c; 点击 exit &#xff0c;关闭 neg …

Solaris 11 安装图解(8)

豆豆网 技能应用频道 图 13 完成安装界面 完成安装之后&#xff0c;安装日记会保留在文件中。可在以下地位检查安装日记&#xff1a;■ /a/var/sadm/system/logs/install_log■ /a/var/sadm/system/logs/upgrade_log■ /a/var/sadm/system/logs/sysidtool.log三、 系统登录…

CPU是如何制造出来的

来源&#xff1a;EDN电子技术设计摘要&#xff1a;Intelx86架构已经经历了二十多个年头&#xff0c;而x86架构的CPU对我们大多数人的工作、生活影响颇为深远。CPU是现代计算机的核心部件&#xff0c;又称为“微处理器”。对于PC而言&#xff0c;CPU的规格与频率常常被用来作为衡…

怎样使用Eclipse来开发Android源码

怎样使用Eclipse来开发Android源码 用eclipse&#xff0b;ADT作为android开发工具&#xff0c;可以说是很方便的&#xff0c;在HelloActivity小程序里我们就感觉到eclipse功能的强大。那么&#xff0c;我们可以用 eclipse来开发android源码吗&#xff1f;如果我们直接把android…

解析:GE工业互联网平台Predix

来源&#xff1a;赛迪智库摘要&#xff1a;当前&#xff0c;工业互联网平台作为我国构建工业互联网生态的核心载体&#xff0c;成为推动制造业与互联网融合的重要抓手。早在2012年GE提出工业互联网的概念&#xff0c;随后推出Predix&#xff0c;要将GE在工业领域的技术设备硬件…

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

小甲鱼 OllyDbg 视频教程&#xff1a;https://www.bilibili.com/video/av6889190?p21 程序下载地址&#xff1a;https://pan.baidu.com/s/1A4-BDgbdUgy-cmI4IMMzYw 提取码&#xff1a;jsdv 开始&#xff0c;按照惯例&#xff0c;首先用 PEiD 打开&#xff0c;看下是什么语…

Guava入门~CacheBuilderSpec

示例 package bbejeck.guava.chapter6.cache;import bbejeck.guava.common.model.TradeAccount; import bbejeck.guava.common.service.BookServiceImpl; import bbejeck.guava.common.service.TradeAccountService; import com.google.common.base.Ticker; import com.google…

初识C#

Timer转载于:https://www.cnblogs.com/changweihua/archive/2011/03/07/1974171.html

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

小甲鱼 OD 使用教程&#xff1a;https://www.bilibili.com/video/av6889190?p22 exeScope 下载&#xff1a;https://pan.baidu.com/s/1dSWapltdQsX9ttl_lSoq_g 提取码&#xff1a;yz2p URlegal 下载&#xff1a;https://pan.baidu.com/s/1Ljbvsnk_1Ps0e-cp7a1F9A 提取码…

这两年的人工智能淘金热 真正赚钱的公司是这几家

编译&#xff1a;网易智能人工智能已经成为人们热捧的对象&#xff0c;正在我们中间掀起一股“淘金热”&#xff0c;但真正从中获得经济利益的人是谁呢&#xff1f;是那些争相成为淘金者的大多数创业公司吗&#xff1f;是那些广泛从事“掘金业务”的公司吗&#xff1f;还是那些…