学破解论坛-软件逆向分析工程师的摇篮-懂进攻知防守!

 ★找回密码★
 ★立即注册★

QQ登录

只需一步,快速开始

查看: 7271|回复: 198

[原创逆向图文] 补丁打不上的原因?你需要进来看!

  [复制链接] |关注本帖

  离线 

签到天数: 14

该用户今日未签到

马上注册,深入学习!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本教程由热情洋溢的木木不哭赞助播出(“哎呀我摔倒了要漂亮姐姐亲亲才能起来”)

以下观点纯属个人赞同,或许不专业性,但是通俗易懂,不喜点x

补丁的分类
1.Exe型内存补丁
2.Dll型内存补丁

一般大家接触的就这两种,其他的不列举,像什么驱动读写就我个人而言我认为不够全面,x64位系统很多驱动加载不了,或者加载起来就蓝屏,,这个不提,主讲以上两种

Exe型内存补丁:通过API函数WriteProcessMemory,将指定数据写入到指定内存地址
优势:兼容性高,不易出错,使用要求低
劣势:对时机要求高,且必须要有写入权限

Dll型内存补丁:原理同上述Exe型内存补丁
优势:稳定,对时机要求较低
劣势:不能独立运行,需在目标进程中运行

程序的运行过程:将硬盘中的Exe数据映射到内存中,并分配一块内存区域,这个过程可比作是从桌子上拿起某样东西到手上

API:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节

以上内容了解就好,只是说个原理,不懂的话也可以跳过,不影响下面我要说的内容
我们先来写一个简单的程序,,从而简单分析你的补丁为何打不进去
1.jpg
首先这是一个简单的Exe程序,内容是当这个按钮被按下的以后,程序会判断这个按钮是否可以可视,如果可视的话就 弹一个Success的信息框

那么假设我们要逆向分析这个程序,理论上有两种思路可选
1.在判断是否可视的地方,强制判断为真
2.强制将按钮可视

那么到此处,我们再延伸一些概念:壳
壳,有两个作用,一是保护程序,二是压缩程序,这里不提压缩,只讲保护
保护程序,事实上就是将程序放入一个保险箱,那么当程序在硬盘当中,其实就是这个程序放在保险箱里面,密不透风不可修改
当程序运行的时候,保险箱要打开门,将里面的东西取出来放到内存,所以当你打开门看到程序的时候那个点叫做OEP

然后我们回到刚刚那个程序,当这个按钮不被点击的时候这段代码是没有被执行的,所以在没有被执行之前,你对他任何的修改,当代码被执行时,都会按照你改的流程走
但是,如果我们改变一下这个源码,将他放到这个地方
2.jpg
这样的话,这个程序在这个窗口创建完毕的时候,就会进行判断,那么当你看到窗体的时候,事实上这段代码已经执行完毕,并且只会执行这一次的时候,你的补丁修改就无效了
也就是说当你在OD运行起来,这个程序窗口已经出来,这段代码也已经执行完毕,并且这个判断只执行这一次的时候,你再对他进行内存补丁,也就没有意义了
所以,我们用内存补丁一个非常非常非常重要的一点就是:时机

最后我们将内存补丁打不上,分为以下几种原因:
1.在程序内存中,无权限修改内存

2.时机,时机,时机,重要的事情说三遍

3.动态内存地址

以上三种是最主要的原因,出现问题最多的就是第二个,时机,所以我们重点讲下时机,其他的稍微提一些解决办法

解决无权限修改内存:

每个人都有属于自己的小秘密,程序亦是如此,那么系统分配给程序的内存,有公开的也就是可读可写,有私密的不可读不可写
所以我们有两个解决办法:
1.让程序认为自己的秘密可以被分享
2.拿到钥匙打开程序私密的地方

首先第一点的解决办法:
我们先来看程序的区段
3.jpg
在这里,一般程序的重点代码都放在了Text段
所以他的标志一般为可读可执行,但是其他段就不一定了,有可能只读不可写不可执行,所以我们需要修改
需要的工具:Load PE
4.jpg
直接将文件拖进来,如果你拖进来不显示这个框,而是提示重建PE头,那么请这样设置
5.jpg
首先点击选项,其次点打开PE编辑器,最后点确定就可以了

当我们拖进来以后,我们依图操作,首先点击区段
6.jpg

其次点击编辑区段,此时应知道你需要修改的内存地址所在的区段
7.jpg

然后给我们点这个标志的小按钮
8.jpg

最后我们勾选好可写入可执行,然后一路点确定保存就可以了
9.jpg

然后我们该怎么找内存地址在哪个区段呢?比如说00401000到底在哪个段呢?
我们把软件拖进OD,然后点M
a.jpg
找到你的程序名所在的区段,比如我的程序名是test.exe,那么我们就找test
我们这样看,如果你的内存地址≥00401000,但是<0047F000,那么就是在Text段
如果是≥0047F000但是<00493000,那么就是在rdata段,以此类推

比如我们要修改的00401000,这个地址≥00401000,但是<0047F000,所以他是在Text段,我们要修改的区段就是这个

这样我们就完成了让程序认为此秘密可以被分享,,但是请注意:VMP此类加密壳不可修改区段的可读可写性,否则会报错导致程序运行失败

接着第二点解决办法的操作方法:
在OD里面,我们可以用此办法
同样点M,找到内存地址所在区段
b.jpg
但是这样的话只适合单次修改,如果程序被重新载入又要重新设置一次,而且不能被保存,那么我们的补丁应该怎么写呢?
这时候如果你们不懂API,我们就借助超级模块,个人非常非常不推荐精易这个bug模块,修改不了,,至少5.33是有bug的,前几天就是因为这个我耽误了半个多小时,,
c.jpg
超级模块的话,我个人找到一个微风的模块,反正8.0已经开源了,大家自己去编译一下也可以,,或者用成品8.0也行
这里用法的话就照上面填,把地址改成你需要修改的地址,因为OD里面的地址是16进制的,而E语言是10进制的,所以直接将16进制转换到10进制
属性的话填64,这个好像是可读可写可执行,具体大家可以自己去查阅,反正改64就对了,然后这里的长度我看了一下
他说默认如果为空参数的话,是32位长度,但是我看源码好像填的是5,所以这里的长度,大概最好改一下,改成比你修改的数据的长度大1就可以了
d.jpg
大家可以看一下源码
e.jpg
这里填的是5,但是他的说明填的是32位长度,我也不知道是我错了还是这里填错了,反正大家填大一点也无所谓,,,除非你跟我一样有强迫症,,
他这里的长度其实是字节,如果是长度填5那就是5个字节,这里如何确定你的数据的长度呢?这里给大家写个源码,确定一下(没有啥技术含量)
f.jpg
大家如果不画信息框就用上面那句代码,
调试输出 (到整数 (取文本长度 (删全部空 (“这里填你的补丁数据”)) ÷ 2))
如:
调试输出 (到整数 (取文本长度 (删全部空 (“30 31 32 33”)) ÷ 2))
然后会自动得出你的长度,这样的话你就照着填或者填大一个字节,比如上句代码得出来的结果是4,那么你就填5即可
------------------------
接着我们来说原因3,动态地址的补丁方法,其实说实在的这个动态地址的补丁就两种解决办法
1.将动态地址变为静态地址
2.使用内存搜索特征码确定特征码所在的地址,再进行补丁

事实上解决办法1算比较简单,等会我做个例子大家就明白了,但是解决办法2,非常需要考验时机,就是我文章开头说的时机,这个特别难把握,大家视情况解决吧

解决办法1:
2.jpg
我这个小例子很简单,源码就是判断编辑框1.内容是否等于123,相等弹出Success信息框,否则无任何动作
那么这里大家看到我下断的地方,以及寄存器EAX
这里是将EAX的值赋值给EBP-4,但是这个EBP的值我们知道是非固定的,是经过运算的,所以我们一般不去修改这个值
一般修改的是EAX的值,把1234改成123对不对?而这个1234所在的0386A410这个内存地址,不属于4大区段中的任何一个段,所以他属于程序自己申请的一块内存
这块内存可以随时释放随时申请,所以当这块内存被别的程序使用时,系统会分配另一块内存给程序使用,所以导致这个内存地址是不变的,大概就是这么一个意思

对,没错,我说的就是补码,补码其实不一定可以在程序区段中存放,也可以自己申请一块内存补码,,这样的话就达到了我们固定动态地址的目的,补码大家很熟悉我就不说了

解决办法2
说真的这个方法不怎么样,但是在某些时候却是最好用的,,像我写的这个例子的话,如果你想用内存搜索1234并替换成123,就比较难了,时机不好把握,所以这里只是稍微提一下
3.jpg

写法的话就这样写,,但是这样大范围内存搜索的话,程序很容易死,所以这里只是提这种方法,并不是特别推荐
------------------------
接下来,我重点要说的时机,终于来了,在讲时机之前,大家必须要了解,我强烈要求去学习的API Hook技术

游客,以下内容已经设置隐藏,如果您要查看本帖隐藏内容请回复本主题(记得评分谢谢楼主呦,评分不扣你的分)


评分

参与人数 65威望 +1 HB +129 THX +38 收起 理由
xiaowu + 1 [快捷评语] - 分享精神,是最值得尊敬的!
a601799010 + 1 + 1 [快捷评语] - 2017,让我们17学破解!
Cyrus_xxx + 3 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
syzh802618 + 1 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
1010463070 + 1 [快捷评语] - 2017,让我们17学破解!
Aesop + 1 [快捷评语] - 2017,让我们17学破解!
erdonjone + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!
快乐的猫七 + 1 先收藏,有地方看不太懂,先学知识,慢慢理解
云烟尽处 + 1 [快捷评语] - 2017,让我们17学破解!
763742228 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
weiwencao + 2 + 1 最近没时间看,先收藏了
ljt123456 + 1 [快捷评语] - 悬赏杀手主题,额外增加10HB,感谢热心解答!
风的男子 + 1 [快捷评语] - 2017,让我们17学破解!
xuemangtang + 1 分享精神,是最值得尊敬的!
清风之恋 + 1 分享精神,是最值得尊敬的!
zgd741 + 1 吃水不忘打井人,给个评分懂感恩!
lxwen + 1 + 1 吃水不忘打井人,给个评分懂感恩!
DiskGenius + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
roman + 1 评分=感恩!简单却充满爱!感谢您的作品!
爱阴湿毯 + 3 + 1 兄弟我来顶你了 可是太长了。。。。
Kingdream + 1 分享精神,是最值得尊敬的!
ysouyno + 1 评分=感恩!简单却充满爱!感谢您的作品!
kangda666 + 1 + 1 吃水不忘打井人,给个评分懂感恩!
key37 + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
守护神艾丽莎 + 1 吃水不忘打井人,给个评分懂感恩!
flea033 + 1 分享精神,是最值得尊敬的!
爱好者 + 1 + 1 分享精神,是最值得尊敬的!
hyeh612 + 1 + 1 分享精神,是最值得尊敬的!
。。。。 + 2 + 1 分享精神,是最值得尊敬的!
asd + 2 + 1 【违规行为】请查阅http://www.xuepojie.com/thread-116-1-1.html
13318033871 + 1 分享精神,是最值得尊敬的!
xiaoxing + 1 + 1 分享精神,是最值得尊敬的!
苍白无力。 + 3 + 1 吃水不忘打井人,给个评分懂感恩!
土间埋 + 1 分享精神,是最值得尊敬的!
大手温暖 + 1 分享精神,是最值得尊敬的!
官理猿 + 3 + 1 分享精神,是最值得尊敬的!
oubaizhi + 2 + 1 分享精神,是最值得尊敬的!
709432292 + 1 + 1 分享精神,是最值得尊敬的!
逗苍天 + 1 + 1 吃水不忘打井人,给个评分懂感恩!
gameace + 1 分享精神,是最值得尊敬的!
815078379 + 1 吃水不忘打井人,给个评分懂感恩!
乃敢与君绝 + 1 + 1 很好的文章,支持下
爱我你怕了吗 + 3 + 1 吃水不忘打井人,给个评分懂感恩!
时七 + 1 分享精神,是最值得尊敬的!
zx22123 + 1 赞,能分享就好
okCM命令 + 1 + 1 吃水不忘打井人,给个评分懂感恩!
彼岸 + 3 + 1 分享精神,是最值得尊敬的!
夕阳武士 + 1 + 1 分享精神,是最值得尊敬的!
tony2526 + 1 + 1 分享精神,是最值得尊敬的!
lx211823654 + 1 分享精神,是最值得尊敬的!

还有更多人参与评分,点击查看全部!

学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!

  离线 

签到天数: 27

该用户今日未签到

谢谢,学习了
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
回复

使用道具 举报

  离线 

该用户从未签到

分析的有道理。虽然我还是懵懂。
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
回复

使用道具 举报

  离线 

签到天数: 177

该用户今日未签到

很高大上的教程,学习了,谢谢~
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
回复

使用道具 举报

  离线 

该用户从未签到

发表于 2016-8-14 22:34 本信息由手机发布 | 显示全部楼层 |取消关注该作者的回复
谢谢楼主分享教程 谢谢
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
回复

使用道具 举报

  离线 

签到天数: 1

该用户今日未签到

分析的有道理。虽然我还是懵懂。
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
回复

使用道具 举报

  离线 

签到天数: 60

该用户今日未签到

原来如此,学习了!
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
回复

使用道具 举报

  离线 

该用户从未签到

牛人啊
希望弄个视频版的出来
专门系统讲解补丁的教程太少了
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
回复

使用道具 举报

  离线 

签到天数: 14

该用户今日未签到

继续看下一步
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
回复

使用道具 举报

  离线 

签到天数: 22

该用户今日未签到

新人学习下
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明

本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识,所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者其他任何非法用途!否则,一切后果请用户自负!


站长微信号:SharkHeng|联系Email|鲨鱼逆向|手机版|小黑屋|FAQ|Vip破解教程|学破解论坛 ( 京公网安备 11011502002737号 | 京ICP备14042738号 ) 

GMT+8, 2017-11-20 01:43

快速回复 返回顶部 返回列表