当前位置: 首页 > news >正文

使用x64dbg破解密钥exe程序

1.背景

软件案例是自己编写的一个简单案例,主要学习逆向思路和过程,虽然很简单,但是我破解了一天!!!
在这里插入图片描述
这是破解成功的样子。哈哈很多外挂软件都是卡密的,大差不差,无非加了些壳子。

2.思路

windows软件都是面向消息机制的,当我们输入错误密钥后,他会弹框提示,密钥错误。我们可以根据这个弹框的消息API去打断点,我这边弹框断点是断的MessageBoxA / MessageBoxW(ANSI/Unicode 版本)这2个,然后可以端到MessageBoxW函数,断住后就可以向上回溯,找到密钥判断的逻辑了,一般都是CMP或者TEST后面跟着JMP等J型指令的 这块基本都是判断逻辑。是重点分析的对象。

3.逆向过程

1.这个是我的错误提示
在这里插入图片描述
根据错误提示去搜索 密钥错误的关键字,没搜到相关字符串,就直接用弹框API的方式去逆向回溯。

1.2 添加API断点命令
在这里插入图片描述
在界面左下角输入:bp MessageBoxW 然后回车 就打上了断点,可以切换到断点视图查看

1.3 打好断点后,我们随便输入一个密钥。触发断点
在这里插入图片描述
可以看到 断点断到的位置 就是弹框函数了。注意一定要写好注释,因为有的层级很深,不做好注释,很容易乱。

1.4我们切换到调用堆栈的视图
看看是谁调用了这个弹框API
在这里插入图片描述
可以看到也是一个用户函数调用了这个API ,我们双击下一条函数向上跟踪。
在这里插入图片描述
我后面写的有注释,可以看到是这个调用了。然后我们向上找,发现并没有相关的J型指令。那么我们可以直接断点到ret 返回的地方,然后看看判断逻辑是不是在更上层函数
在这里插入图片描述
1.5看到了相关的J型指令
在这里插入图片描述
进行相关的分析,发现这层也不是密钥判断逻辑,然后我们继续向上层函数返回然后分析,断点到ret 然后单步返回到上层函数。

在这里插入图片描述
返回上层后可以看到 这层也有很多J型指令,通过分析,也不是。继续返回ret 到上层函数。

在这里插入图片描述
到了这层可以看到,错误分支,是被JMP指令包含的,那就要重点分析了,通过断点调试发现,这块就是密钥比较逻辑,让程序正常跳过错误分支不就大功告成了吗,按照这个逻辑分析,可以发现走到JE的时候是会跳过JMP的,所以我们核心改下JE指令的标志位,让ZF等于0不跳过,就可以正常走到JMP呢。然后成功破解。

相关J型资料
在 x86/x64 汇编中,JE(Jump if Equal) 指令是否跳转取决于 CPU 状态标志寄存器(EFLAGS/RFLAGS) 中的 ZF(Zero Flag,零标志位):

  1. JE 的跳转条件
    JE 等同于 JZ(Jump if Zero),两者机器码相同,只是助记符不同。

跳转条件:
当 ZF = 1 时跳转(即前一条指令的结果为 0 或 比较相等时触发)。

JNE 看 ZF 标志位,ZF=0 时跳转。

调试时需检查前一条指令(如 CMP、TEST)是否使 ZF=0。

在 x64dbg 中直接观察 EFLAGS 寄存器即可快速判断。

这里不讲解相关指令用法,只说思路,不知道指令用法的查下就知道了。

http://www.xdnf.cn/news/1045099.html

相关文章:

  • React学习001-创建 React 应用
  • Spark简介脑图
  • 分割函数(Split Function)
  • 电阻篇---下拉电阻的取值
  • 【运维系列】【ubuntu22.04】Docker安装mysql 8.0.36 教程
  • Java安全管理器-(Security Manager)
  • 《江西南昌棒垒球》一级运动员 vs 二级运动员·棒球1号位
  • Python打卡训练营Day54
  • 【AI学习】【Ubuntu 22.04】【安装Ollama】两种方式
  • 【图片识别改名】如何批量识别大量图片的文字并重命名图片,基于WPF和京东OCR识别接口的实现方案
  • 电脑上的.ssh目录只做什么的
  • 微调技术:Prefix-tuning vs Prompt-tuning vs P-tuning
  • Java设计模式完整学习指南(23+4种模式)
  • 跨域问题之前后端解决办法
  • Photoshop矢量蒙版全教程
  • 我的JavaWeb软件开发作品学生信息管理系统项目/JavaWeb软件开发 课程考察标准
  • 【Bluedroid】蓝牙启动之核心模块(startProfiles )初始化与功能源码解析
  • 性能优化 - 案例篇:11种优化接口性能的通用方案
  • pion/webrtc v4.1.2版本深度解析与应用指南
  • 纺织行业SAP解决方案:无锡哲讯科技助力企业智能化升级
  • docker(学习笔记第一课) 使用nginx +https + wordpress
  • Flutter包管理与插件开发完全指南
  • springboot速通
  • 国产操作系统-银河麒麟本地化部署Ollama国产开源的AI大模型Qwen3
  • 【MFC】树控件的使用详解
  • Spring Framework 7.0发布
  • C++问题:纯虚函数和抽象类
  • C语言进阶:深度解剖数据在内存中的存储(浮点型在内存中的存储)
  • 某网站极验4滑块验证码逆向分析
  • vue2中setTimeout中调用methods方法问题