X86逆向12:内存补丁的制作
本章我们将学习各种打补丁的方式,补丁在软件的破解过程中非常的重要,比如软件无法脱壳我们就只能通过打补丁的方式来破解程序,补丁原理就是当程序运行起来会被释放到内存并解码,然后补丁就通过地址或特征码定位到关键的位置,并替换关键的跳转。
------------------------------------------------------------
本章难度:★☆☆☆☆☆☆☆☆☆
课程课件:CM_12.zip
------------------------------------------------------------
通过特征码打补丁
1.首先OD附加,CM_12.vmp.exe 这个加过壳的程序,然后我们通过前期学过的内容找到关键跳转,并记录下它的特征码。

根据上方我们可以提取出【0F 84 56 00 00 00 BB 06】这一段代码为特征码使用,我们需要将此处的代码替换成【90 90 90 90 90 90】。
2.按下【Ctrl + B】然后搜索一下【0F 84 56 00 00 00 BB 06】看提取的特征码是否能够定位到关键位置。

3.使用易语言编写一个小程序,然后写入以下代码,即可完成特征码的替换了。

4.编译并生成可执行文件,我们运行程序让其完全加载,然后运行补丁程序,点击打补丁,如下程序会被完美破解。

给DLL文件打补丁
1.OD直接载入CM_12这个程序,该程序会调用check.dll 动态链接库来完成用户名密码的验证,所以我们需要给Dll打补丁。

2.按下【Alt + E】观察发现这个check.dll 基地址是【00F90000】,我们双击这个模块跳转到模块中去。

3.这个程序的破解非常的简单,我们需要将下图中的两个jnz 跳转取反就可以完成验证啦,这里我们记下他们两个的特征码。

4.我们需要将上图中的【0F852F000000/ 0F850F000000】这两处全部替换成【90 90 90 90 90 90】,其补丁程序核心代码如下。

5.运行源程序,并运行补丁,然后我们点击验证Dll ,程序被顺利的破解。

X86逆向12:内存补丁的制作的更多相关文章
- X64下MmIsAddressValid的逆向及内存寻址解析
标 题: [原创]X64下MmIsAddressValid的逆向及内存寻址解析 作 者: 普通朋友 时 间: 2015-10-21,20:03:52 链 接: http://bbs.pediy.com ...
- Navicat Premium 12破解补丁
Navicat Premium 12破解补丁是专门针对Navicat 12制作的一款破解工具,它可以帮助大家成功激活软件,激活后就可以免费使用软件所有功能了,小编亲测可用,有需要的可以下载试试. Na ...
- C# 简单内存补丁
写在开头:看了一些视频教程,感觉OD为什么别人学个破解那么容易,我就那么难了呢,可能是没有那么多时间吧. 解释:个人见解:所谓内存补丁,即:通过修改运行程序的内容,来达到某种目的的操作.修改使用Ope ...
- error : Could not load UI satellite dll 'TrackerUI.dll'. Make sure it exists in an LCID subdirectory of 'C:\Program Files (x86)\MSBuild\12.0\bin\'.
原因 VS2013 + QT环境部署好后, 又安装了VS2015\ 解决方案: 在另一台电脑里重装VS2013, 并将 C:\Program Files (x86)\MSBuild\12.0\B ...
- Linux-3.14.12内存管理笔记【伙伴管理算法(1)】
前面分析了memblock算法.内核页表的建立.内存管理框架的构建,这些都是x86处理的setup_arch()函数里面初始化的,因地制宜,具有明显处理器的特征.而start_kernel()接下来的 ...
- Linux-3.14.12内存管理笔记【构建内存管理框架(1)】
传统的计算机结构中,整个物理内存都是一条线上的,CPU访问整个内存空间所需要的时间都是相同的.这种内存结构被称之为UMA(Uniform Memory Architecture,一致存储结构).但是随 ...
- Linux-3.14.12内存管理笔记【建立内核页表(1)】
前面已经分析过了Intel的内存映射和linux的基本使用情况,已知head_32.S仅是建立临时页表,内核还是要建立内核页表,做到全面映射的.下面就基于RAM大于896MB,而小于4GB ,切CON ...
- X86逆向4:VMP壳内寻找注册码
本节课将讲解一下重启验证,重启验证在软件中也是非常的常见的,重启验证的原理很简单,用户在注册界面输入注册码以后程序会自动将输入的注册信息保存到配置文件中,这里可能保存到注册表,也可能使用INI文件来保 ...
- DLL补丁劫持制作
DLL: 由于输入表中只包含 DLL 名而没有它的路径名,因此加载程序必须在磁盘上搜索 DLL 文件.首先会尝试从当前程序所在的目录加载 DLL,如果没找到,则在Windows 系统目录中查找,最后是 ...
随机推荐
- CDN之简介
1. 什么是 CDN? 来自 <什么是 CDN?> CDN(内容交付网络)是一种高度分布式服务器平台,为交付 Web 应用程序.流媒体等内容专门优化.服务器网络分布于众多物理和网络位置,对 ...
- 第11组 团队Git现场编程实战
第11组 团队Git现场编程实战 组员职责分工: 前端部分: 陈郑铧:构架的搭建,前端模块开发 陈益:前端模块开发 李镇平:前端模块开发 后端部分: 沈国煜:后端模块开发 王泽鸿:后端模块开发 林铮威 ...
- ArcGIS中国工具3.0正式发布
ArcGIS中国工具3.0正式发布,新功能有 1. 支持面积分割(见4.6),见https://weibo.com/tv/v/HsM2ksYY3?fid=1034:4368578107884427 ...
- koa 项目打包(使用webpack打包koa2 框架app)
关键问题 一:所有node_modules里的模块都不进行打包 webpack的核心功能是将引用的各个模块打到一个文件里,并会将各种规范的模块进行统一的模块化处理(webpack规范). 然而node ...
- matplotlib:plt.rcParams设置画图的分辨率,大小等信息
主要作用是设置画的图的分辨率,大小等信息 plt.rcParams['figure.figsize'] = (8.0, 4.0) # 设置figure_size尺寸 plt.rcParams['ima ...
- 性能分析 | Linux 内存占用分析
这篇博客主要介绍 linux 环境下,查看内存占用的两种方式:使用 ps,top等命令:查看/proc/[pid]/下的文件.文章简要介绍了命令的使用方法与一些参数意义,同时对/proc/[pid]/ ...
- 2.jdk1.8+springboot中http1.1之tcp连接复用实现
接上篇:https://www.cnblogs.com/Hleaves/p/11284316.html 环境:jdk1.8 + springboot 2.1.1.RELEASE + feign-hys ...
- 将mysql数据库的数据导出做成excl表格通过邮件发送附件发给指定人
mysql数据库的数据导出成excl表 方法一: mysql -uroot -p123456 -e “select *.* from 表 into outfile ‘文件路径.xls’into out ...
- Canal——原理架构及应用场景
Canal简介 Canal是阿里开源的一款基于Mysql数据库binlog的增量订阅和消费组件,通过它可以订阅数据库的binlog日志,然后进行一些数据消费,如数据镜像.数据异构.数据索引.缓存更新等 ...
- mysql大量locked的一个案例
转自 http://cyxu2004.blog.163.com/blog/static/45768718201222133440986/