x64汇编语言与逆向工程实战指南(一)

news2024/12/28 18:35:27

逆向程序demo网址:https://crackmes.one/,下载的压缩包密码均为.cracksme.one或cracksme.de
实例一:基本 网络钓鱼密码程序 破解

目录

  • 1. DIE确定程序基本信息
    • 1.1 DIE程序与下载
    • 1.2 分析demo的架构
  • 2. x64dbg调试获取密码
    • 2.1 功能初探
    • 2.2 调试分析
    • 2.3 使用获得的密码重新运行程序
  • 3. patch程序绕过密码

1. DIE确定程序基本信息

1.1 DIE程序与下载

  • DIE(Detect It Easy)是一个流行的逆向分析工具,主要用于检测和分析可执行文件的格式和结构。下载链接

  • 它的功能包括:

  1. 文件识别:DIE 可以识别和分析各种可执行文件的格式,如 PE(Portable Executable)、ELF(Executable and Linkable Format)、Mach-O 等。它帮助用户快速了解文件的结构和特性。

  2. 签名和特征识别:该工具内置了大量的文件签名和特征,可以识别文件的特定特征和可能的加壳保护。通过这些特征,用户可以判断文件是否经过加壳处理或是否包含某种特定的编译器标志。

  3. 可视化分析:DIE 提供了直观的用户界面,展示文件的头部信息、节信息、导入表、导出表等。用户可以通过图形界面快速浏览和理解文件的结构。

  4. 插件支持:DIE 支持插件扩展,用户可以根据需要添加自定义的插件来增强其功能。这种扩展性使得 DIE 可以适应不同的分析需求。

  5. 脚本支持:DIE 还支持通过脚本进行自动化分析,用户可以编写脚本来批量处理文件,提取所需的信息。

1.2 分析demo的架构

下载DIE完成之后将目标程序放入即可得到如下图信息,目标文件是windows下的amd64架构可执行程序。
因此在进行动态调试时候选择 X64dbg进行调试分析。
在这里插入图片描述

2. x64dbg调试获取密码

2.1 功能初探

  • 首先我们运行下载的demo,程序实现了简单的密码验证功能。随便输入一个密码后得到输出的报错信息
    在这里插入图片描述
  • 接着程序会在停止一段时间后自动退出,并且给出的信息也提示需要反汇编查看main函数的功能。

2.2 调试分析

将demo程序放入x64dbg进行调试分析,锁定程序密码判断位置的方法有两个。

  • 思路一:定位输出字符串后向前找到跳转的判断指令

  • 在上面测试程序功能的时候,当输入错误的密码,得到报错信息。由于该字符串直接出现在用户交互界面,因此可以确定属于用户功能模块,可以利用x64dbg的搜索字符串功能查得具体地址。
    在这里插入图片描述在这里插入图片描述

  • 接着双击即可进入该字符串所在汇编指令区域,通过汇编指令地址左侧的虚箭头即可看到跳转源地址。同时发现该地址上面有一个 cmp eax,4D2指令和一个”%d“标识符 。
    通过分析和试验不难看出是使用了 %d 来接收输入的密码。

  • 由于密码正确性判断一定是在用户输入之后的,在 cmp 指令处下一个断点,可以方便观察输入数据与rax内容的关系。
    在这里插入图片描述

  • 因此,将 16进制 0x4D2 转换为10进制即可得到正确的密码【1234】。

  • 思路二:查看函数的流程图定位跳转点

    • 在搜索得到输出 wrong… 等字符串后可以直接定位到程序主模块函数,此时可以直接查看结构图表锁定跳转点。
  • 如下图,选中区域为函数起末汇编代码,点击首行汇编代码push rbp右键查看流程图
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

2.3 使用获得的密码重新运行程序

在这里插入图片描述

3. patch程序绕过密码

jne ==> je

  • 在上面程序跳转点将 cmp 指令比较之后 jne 改成 je 即可极大提高成功概率
    【只要输入的数据与最初设定不同即可绕过】。
    修改后如下图:
    在这里插入图片描述
  • 接着可以直接对程序进行修改应用补丁,导出修改后的.exe程序

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 最后执行刚刚patch后的程序,发现在原程序的基础上已经成功修改

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2051081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++基础——合集

1.C关键字(C98) C总计63个关键字,C语言32个关键字 2.命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的…

虚拟机可以玩Steam游戏吗?虚拟机怎么玩Steam Windows游戏 PD19虚拟机玩Steam

你有没有在苹果电脑上玩游戏的需求呢?很多人认为只有“双系统”才能实现Mac电脑运行Windows操作系统,其实不然,近些年来,虚拟机技术在不断发展,越来越多的苹果用户开始使用虚拟机在苹果设备上玩游戏。Steam是一个非常受…

【运维高级内容--KEEPALIVED高可用集群】

目录 1.简介 2.实现master/slave的 Keepalived 单主架构 3.vip通行 (ping通: 4.启用日志功能 5.实现独立子配置文件 6.非抢占式模式 7.抢占延迟模式 8.单播配置 9.keepalived状态切换的通知脚本 10.双主结构:两个虚拟路由(多主模式&…

精武杯的部分复现

标红的为答案 计算机手机部分 1、请综合分析计算机和⼿机检材,计算机最近⼀次登录的账户名是?admin 2.请综合分析计算机和⼿机检材,计算机最近⼀次插⼊的USB存储设备串号是?S3JKNX0JA05097Y 3.请综合分析计算机和⼿机检材,谢弘…

Xilinx FPGA:vivado关于以太网的零碎知识点

一、OSI七层模型 为了实现网络通信的标准化,普及网络应用,国际标准化组织(ISO)将整个以太网通信结构制定了OSI模型,即开放式系统互联。 OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、…

web前端之html弹窗面板的popover新属性

MENU 前言效果图htmlstyle 前言 1、代码段的功能是在网页上实现一个弹出框。当用户点击"Open Popup"按钮时,会显示一个中央定位的弹出框,弹出框里有"This is a popup"文本,以及两个按钮(“Close"和"confirm”)…

XXX【3】模板方法

一.GOF-23 模式分类 从目的来看: 创建型模式:解决对象创建的工作。结构型模式:解决需求变化为对象结构带来的冲击。行为型模式:解决多个类交互之间责任的划分问题。 从范围来看: 类模式处理类与子类的静态关系&…

timing derate失效,cppr为0原因分析

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 timing derate失效,crpr结果为0,可能是错误的timing derate设置引起的,以下图为例: setup violation path的cppr为0,…

汇编语言指令 jmp: jmp word ptr、jmp dword ptr、jmp 寄存器

1. 转移地址在内存中的jmp指令有2种形式 1.1 jmp word ptr 内存单元地址 jmp word ptr 内存单元地址是段内转移指令,也就是说该指令只修改IP值,其功能是控制CPU下一条执行的指令是一个字(2个字节)内存中存放的偏移地址所指向的指…

集合的知识点

一、集合的简介 1.1 什么是集合 集合(Collection),也是一个数据容器,类似于数组,但是和数组是不一样的。集合是一个可变的容器,可以随时向集合集合中添加元素,也可以随时从集合中删除元素。另外,集合还提…

在线图片编辑网站推荐(图片压缩)

🔥发现神器!「可乐改图」——一站式在线图片编辑平台,让工作更高效!🚀 大家好!今天我要给大家安利一个我最近发现的宝藏工具——「可乐改图」,一个集多功能于一身的在线图片编辑平台&#xff0…

前端(Vue)动态换肤的通用解决方案及原理分析(2)

文章目录 动态换肤的主题解决方案总结处理 第三方( element-plus )主题变更原理与步骤分析**实现原理**实现步骤处理 element-plus 主题变更补充 > 步骤 2:获取当前 element-plus 的默认样式表,并且把需要进行替换的色值打上标记补充>步骤 3&#…

Android 手机恢复出厂设置后,还能恢复其中数据吗?

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份、网络及终端数据安全等解决方案与服务。 同时,鸿萌是众多国际主流数据恢复软件的授权代理商,为专业用户提供正版的数据恢复软件。 对于 A…

网络版计算器(理解协议与序列化与反序列化)

一、理解协议 在网络层面,协议(Protocol)是一组规则、标准或约定,它们定义了在网络环境中,计算机、服务器、路由器、交换机等网络设备之间如何相互通信和交换信息。这些规则涵盖了数据格式、数据交换的顺序、速度、以及…

调研-音视频

音视频 基础概念主要内容音频基础概念音频量化过程音频压缩技术视频基础概念视频bug视频编码H264视频像素格式YUVRGB参考文献基础概念 ● 实时音视频应用环节 ○ 采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。 主要内容 音频 基础概念 三要素:音调(音频)、…

阿里云注册、认证、短信资质、签名、模板申请过程

一、帐号注册 输入“帐号密码注册”中的相关信息即可。 手机号是必须的,先确定好手机号。 正常的可以直接注册成功的。 二、实名认证 注册成功之后,就可以点击上述的“快速实名认证”。 这次选择的是“企业认证”。 有几种方式,如下&#x…

学习嵌入式第二十八天

有名管道 在C语言中,有名管道(Named Pipe)是一种特殊的文件类型,它允许进程间通信。有名管道与匿名管道(Anonymous Pipe)不同,它在文件系统中有一个路径名,因此可以被多个进程访问。…

项目实战-Linux部署-安装jdk以及shell脚本检查jdk

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期热门专栏回顾 专栏…

STM32之MPU6050实战

MPU6050 MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景 3轴加速度计(Accelerometer)&a…

Python从0到100(五十二):逻辑回归及鸢尾花数据集预测

逻辑回归是⼀种⽤于解决⼆分类问题的监督学习算法,其基本原理是使⽤ 逻辑函数(也称为Sigmoid函数) 来建模 因变量(输出)与⾃变量(输⼊)之间的概率关系。逻辑回归的⽬标是估计某个事件发⽣的概率…