X86逆向3:通过修改关键CALL破解
软件逆向第一课中我们通过爆破的方式直接破解了程序的登录限制,但这一种方式很不合理,因为你只是破解了登录这一处的验证,如果程序内部还有其他的验证那么你需要再次爆破第二个验证,显然这种方式是很烦人的,如果有1000处这样的验证环节那么就需要爆破1000次跳转。
那有没有一种方式可以只破解一次就达到破解整个程序的目的呢? 有,关键CALL,我们猜测一下程序作者的思路,作者不可能将每一处需要验证的环节都写一遍,显然这样是很麻烦的,那有没有解决办法呢? 当然有,那就是单独写一个验证函数,注册和验证共用一个函数进行验证,这样的话就节约了很大的开发时间。
------------------------------------------------------------
本章难度:★☆☆☆☆☆☆☆☆☆
本章课件:CM_03.zip
------------------------------------------------------------
以下小程序,当用户输入假的注册码后,底部会提示试用版本,而关于页面点击验证后,会提示还未注册,我们这里当然可以分别爆破每一处的关键跳转,但是这里我们不这样做,这两个验证页面是共用一个验证CALL的,所以我们找到关键CALL,修改关键CALL的返回值,就能达到完全破解的目的。

1.OD载入程序,然后直接【F9】运行程序,搜索字符串,搜索关键字【试用版本】,直接点过去。

2.发现有跳转进来了,我们直接往上找找到关键跳转,

3.发现了关键CALL和关键跳,直接在这两个位置下断点。

4.运行后发现跳转实现了,我们暂时修改以下Z标志位,让其不跳转,然后直接【F9】运行。

5.你会发现显示注册成功,但是如果你点开关于页面,点击验证按钮的话,会出现没有激活的情况,这就是因为我们只破解了一处跳转,并没有完全破解程序,好了直接重新载入程序,我们重新搞。

6.直接取消【je 004012E1】处的【F2】断点,直接在【CALL 00401142】处下一个断点,一般情况下关键跳转的上面前2个CALl就是关键CALL。

7.重新加载程序,并运行,我们输入假的注册码,然后点击注册按钮,这里直接按下【F7】进入这个CALL。

8.进入到这个CALL后,看下方【本地调用来自xxxx】,就是说有两处调用了这个CALL来完成验证的。

9.直接单步【F8】,到达程序返回发现EAX寄存器变成了0,说明验证失败了。

10.我们直接重新载入程序,运行程序,输入假注册码点击注册,OD断下了,直接【F7】进入CALL内部。直接写入汇编代码。

11.直接保存程序。


12.打开破解版本看一下,完美破解了,我们并没有修改关键跳转,而是修改了关键CALL,从而实现的破解。

写教程不容易,转载请加出处,您添加出处,是我创作的动力!
X86逆向3:通过修改关键CALL破解的更多相关文章
- X86逆向9:通过关键常量破解
本章将讲解一下关于关键全局变量的一些内容,关键的全局变量对于软件的破解非常的有用,找到了关键全局变量并改写它同样可以完成完美爆破一个程序,这里我将使用CM小例子来讲解搜索关键变量的一些技巧,最后我们来 ...
- X86逆向7:特殊窗体的破解思路
本章我们来看两个案例,这两个案例同样使用爆破的方式破解,但是与其他的程序不同,这个程序没有弹窗,提示成功或失败使用的是图片或是一个类似图片的窗体,本章将学习两个新的API函数的使用技巧. ------ ...
- JAVA逆向&反混淆-追查Burpsuite的破解原理(转)
0x00 摘要: 本系列文章通过对BurpLoader的几个版本的逆向分析,分析Burpsuite的破解原理,分析Burpsuite认证体系存在的安全漏洞. 0x01 JD-GUI的用途与缺陷: JD ...
- 利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)
原文 利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习) Mono.Cecil是一个强大的MSIL的注入工具,利用它可以实现动态创建程序集,也可以实现拦截器横向切入动态方法,甚至还 ...
- MindManager2018试用期过后 修改过期时间 破解使用
MindManager2018试用期过后 修改过期时间 破解使用 2019年06月13日 15:58:11 一生中所爱 阅读数 1991更多 分类专栏: 工具软件使用 1.找到路径:C:\User ...
- X86逆向1:软件破解入门课【课件下载】
从本节课开始,我将带领小白入门学习软件破解的相关内容,大佬绕过,以后将会定期更新从最基本的破解知识点开始学习,由简单到复杂循序渐进,难度会逐步提高. 为了防止版权方面的争议,我将自行编写一些破解案例来 ...
- 逆向工程之修改关键CALL返回值_破解视频转换专家
1)注册软件随便输入注册名注册码 2)进入软件根目录,发送到PEID查壳 3)发现无壳 4)发送到OD 4.1)右键菜单选择智能搜索 4.2)找到关键信息点注册 4.3)找到关键信息点双击进入汇编,向 ...
- X86逆向5:破解程序的自效验
在软件的破解过程中,经常会遇到程序的自效验问题,什么是自效验?当文件大小发生变化,或者MD5特征变化的时候就会触发自效验暗装,有些暗装是直接退出,而有些则是格盘蓝屏等,所以在调试这样的程序的时候尽量在 ...
- Android逆向之旅---静态方式分析破解视频编辑应用「Vue」水印问题
一.故事背景 现在很多人都喜欢玩文艺,特别是我身边的UI们,拍照一分钟修图半小时.就是为了能够在朋友圈显得逼格高,不过的确是挺好看的,修图的软件太多了就不多说了,而且一般都没有水印啥的.相比较短视频有 ...
随机推荐
- ADB命令指令控制Android系统的WIFI连接开启/关闭状态
Android系统的usb调试已开启,连接电脑(有ADB环境) 1.在cmd中,进入shell指令模式 adb shell 2.进入ROOT指令模式 su 3. 打开WIFI指令 svc wifi e ...
- win10下检查nvidia显卡支持的cuda版本
1.首先将[C:\Program Files\NVIDIA Corporation\NVSMI]添加至系统环境变量[path]中: 2.在powershell中使用命令[nvidia-smi],即可看 ...
- 【深入nodejs开发】一、将node项目结合nginx部署到Centos7服务器
一.安装nginx服务器环境 1.使用ssh工具连接服务器 2.安装宝塔面板,方便服务器管理 yum install -y wget && wget -O install.sh htt ...
- jQuery常用AJAX-API
目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取得服务端当前时间 简单形式:jQuery对象.load(url) 返回结果自动添加到jQuery对象代表的标签中间 如果是Servlet的话,采 ...
- 基于Python使用scrapy-redis框架实现分布式爬虫
1.首先介绍一下:scrapy-redis框架 scrapy-redis:一个三方的基于redis的分布式爬虫框架,配合scrapy使用,让爬虫具有了分布式爬取的功能.github地址: https: ...
- Ubuntu16.04格式化U盘
root@ubuntu:~# fdisk -l root@ubuntu:~# fdisk /dev/sdb 格式化U盘: root@ubuntu:~# fdisk -l sudo mkfs.ntfs ...
- python系列之 - (select、poll、epoll)
select函数操作集合的时候有个要求,要么集合本身是描述符,要么他提供一个fileno()接口,返回一个描述符. I/O多路复用是在单线程模式下实现多线程的效果,实现一个多I/O并发的效果.看一个简 ...
- javascrip参考资料
阮一峰: http://javascript.ruanyifeng.com/ 廖雪峰: https://www.liaoxuefeng.com/ Mozila: https://developer.m ...
- 编译安装了的nginx 添加http_ssl_module模块
1.看下编译安装nginx的时候,都编译安装的哪些模块. [root@zabbix ~]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1. ...
- java数据结构之WeakHashMap
一.JAVA中的四种引用类型 1.强引用(StrongReference):强引用是最为普遍的一种引用,如果对象被强引用,那么垃圾回收器无论如何都不会回收它,当内存不足时会抛出OutOfMemoryE ...