x64dbg破解一个简单的Demo教程
源码分析
首先需要破解的程序源码
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
#include <stdint.h>
#include <stdlib.h>void main()
{while (true){std::cout << "请输入密码:" << std::endl;std::string inputString;std::cin >> inputString;if (strcmp(inputString.c_str(),"qwe") == 0){std::cout << "密码正确" << std::endl;}else{std::cout << "密码错误" << std::endl;}}
}
源码很简单 循环输入,如果输入qwe则输出密码正确,其他则输出密码错误
打开x64dbg 打开exe程序,单击右键,搜索->所有模块->字符串
找到密码错误行
点击右键 在反汇编中转到
可以转到EC11DD部分
可以看到00007FF61FEC11CC 行有一句代码 jne dump.7FF61FEC11DD 说明是进入了错误判断,跳转到错误逻辑代码,可以在00007FF61FEC11CC 出F2打断点进行调试流程
一些代码流程说明
00007FF61FEC11BE mov rax,rbp [rax清0]
这里rax寄存器主要做比较字符串个数计数,比如密码是qwe所以比较的计数是4 qwe(3)加上一个\0 = 4
所以在00007FF61FEC11CE cmp rax,4 处有一个比较rax个数的判断
每一次循环比较strcmp时
00007FF61FEC11C5 inc rax [rax 计数增加1]
每一个字符比较
00007FF61FEC11C8 cmp cl,byte ptr ds:[rsi+rax-1] | 字符串和密码qwe做比较,一个字节一个字节的比较
00007FF61FEC11CC jne dump.7FF61FEC11DD 如果某一个字符比较失败,则字节跳转到失败地址7FF61FEC11DD
00007FF61FEC11CE cmp rax,4 比较成功的字符个数 小于4(qwe加\0) 在跳转到7FF61FEC11C1开始比较下一个字符,如果成功只进入成功处理00007FF61FEC11D4出
另外我们可以看到我们是一个while死循环
所以在00007FF61FEC1201 cmp rdi,10 编译器做的死循环 RDI是16 永远不是10,然后跳转到7FF61FEC1160开头的地方
00007FF61FEC1205 jb dump.7FF61FEC1160 这样就开始了一次循环
如何破解
上面代码简单的分析了如果一个字符比较失败
00007FF61FEC11CC jne dump.7FF61FEC11DD 会跳转到失败错误处理,我们在这里修改跳转的地址就可以了
修改地址为EC11D4让他跳转到正确的地址
然后生成新的exe文件
然后运行新的exe 可以发现无论输入什么输出密码正确了
x64dbg破解一个简单的Demo教程相关推荐
- java 基础api实现上传,上传文件到7牛云存储的java api一个简单的demo实现
最近在做一个项目,需要用到云存储,项目用的是七牛云.现在将项目过程中关于调用七牛云平台的java api来上传本地文件到七牛云空间的一个简单的demo展示给大家,希望对同样再用七牛云的童鞋们有所帮助. ...
- android 观察者模式的简单demo,一个简单的demo彻底搞懂观察者模式
介绍 观察者模式也被称为发布-订阅(Publish/Subscribe)模式,它属于行为型模式的一种.观察者模式定义了一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听.当这个主题对象状态变 ...
- 一个简单的Julia教程
原文链接:点击打开链接 摘要: 当前版本 v0.5 因为在知乎上写的量子计算札记会涉及到使用Julia语言的数值模拟,同时随着中国的Julian越来越多,而之前几个在JuliaCN活跃的老司机最近一直 ...
- (译)如何使用GameCenter制作一个简单的多人游戏教程:第一部分
免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...
- Django----做一个简单网页的教程(适合初学者)
这篇文字适合刚学习Django的同学,如果比较熟的就不用看了. 以下都是讲在windows上的部署情况: 准备: 1.python3.6 2.pycharm profession(专业版) 3.安装D ...
- 基于蒙特卡罗树搜索的智能行程规划系统设计(二)一个简单的DEMO
@基于蒙特卡罗树搜索的智能行程规划系统设计 基于蒙特卡罗树搜索的智能行程规划系统设计DEMO0.1 github链接.https://github.com/blue-sky-sea/MCTS-TRAV ...
- 学习LSM(Linux security module)之二:编写并运行一个简单的demo
转自:cnblog 各种折腾,经过了一个蛋疼的周末,终于在Ubuntu14.04上运行了一个基于LSM的简单demo程序. 一:程序编写 先简单的看一下这个demo: //demo_lsm.c #in ...
- Vue.js学习-搭建一个简单的demo
原创申明:本文为博主原创,转载请注明出处! 这里主要记录vue.js+webpack在一个简单实例中的使用过程 说明:本次搭建基于Win 7平台 Node.js 安装 官网提供了支持多种平台的的LTS ...
- 一个简单的小教程:Envi中使用光谱指数提取目标地物面积——以NDWI提取水体为例
本次实验使用Landsat8的海南省海口市影像(包括陆地和周边海域),因从GEE下载,相关预处理步骤已解决.此处为海口市的部分影像. 一.NDWI指数信息介绍 NDWI(Normalized Diff ...
最新文章
- c语言中求一个数的因数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
- 不要小看小小的 emoji 表情
- Leap Motion+第六感或引发人机交互革命
- 2021-02-07 接口测试工具-Postman使用详解
- auto-sklearn案例解析一
- zoj 1078 palindrom numbers
- mysql数据库应用模式与特点_MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述...
- Dart基础-运算符
- STM32F030 电压监测实现
- bos 文件上传-调研
- NOIP2014提高组 飞扬的小鸟
- 计算机相关知识——阻塞和非阻塞,同步和异步等相关概念
- 关于Maxon上位机EPOS Studio的配置
- 向日葵 服务器连接失败怎么办
- P1014 [NOIP1999 普及组] Cantor 表
- 6月楼市或迎降价潮 房企策略有调整
- 百度地图定位API,精度提高
- 将字符数组中存放的数字字符转换为数
- java的 内省机制_Java 内省机制
- Firefox 使用、设置和常见问题的解决方法