软件逆向之IDA Pro
IDA Pro作为一款强大的逆向分析工具,对于软件开发和安全领域的专业人士来说是必不可少的。
1. 什么是逆向分析
逆向分析是指通过分析已有的软件或程序,推测出其内部运行机制、算法和逻辑等信息。通过逆向分析,您可以了解软件的运行逻辑,发现潜在的漏洞并进行修复,提升软件的安全性。
2. 为什么选择IDA Pro
IDA Pro是业界公认的最强大的逆向分析工具之一。它具有丰富的功能和灵活的使用方式,适用于各种软件和程序的逆向分析工作。无论您是软件开发人员、安全专家还是研究人员,IDA Pro都能满足您的需求。
3. IDA Pro的主要功能
IDA Pro提供了一系列强大的功能,帮助您进行逆向分析工作:
反汇编和调试:IDA Pro可以将二进制文件反汇编为可读的汇编代码,并提供强大的调试功能,帮助您理解程序的执行过程。
静态分析:通过IDA Pro的静态分析功能,您可以查看程序的结构、函数、变量等信息,深入理解程序的内部逻辑。
动态分析:IDA Pro还支持动态分析,您可以通过动态调试和插件来跟踪程序的运行过程,发现和修复潜在的问题。
插件支持:IDA Pro具有丰富的插件生态系统,您可以根据自己的需求选择并安装各种插件,扩展和定制IDA Pro的功能。
4. 如何使用IDA Pro进行逆向分析
使用IDA Pro进行逆向分析需要一定的技术和经验,下面是一些基本的步骤和技巧:
导入二进制文件:在IDA Pro中,您可以通过导入二进制文件的方式开始逆向分析。IDA Pro支持各种二进制文件格式,包括可执行文件、动态链接库等。
进行反汇编:一旦导入二进制文件,IDA Pro会将其反汇编为可读的汇编代码。您可以通过浏览代码、查看函数和跳转指令等方式理解程序的结构和逻辑。
符号命名和注释:在IDA Pro中,您可以对函数、变量等进行符号命名和注释,帮助理解和管理代码。合理的符号命名可以提高代码的可读性。
动态调试:如果您需要进一步了解程序的执行过程,可以使用IDA Pro的动态调试功能。通过设置断点、跟踪变量和内存,您可以逐步跟踪程序运行的过程。
插件使用:IDA Pro的插件功能是其强大之处之一。根据您的需求,选择合适的插件可以提升您的逆向分析效率和准确性。
[下载]
[使用]
快捷键:
#1. 转成字符串: 方便使用字符串Ctrl+f进行搜索
Shift + F12 #2. 汇编代码转C代码(需要双击进去这个函数, 然后使用F5, 反编译成伪代码)
F5
#3. 空格
在代码与视图中进行快速切换, 代码中可以方便看到对应的地址
1) 这种就是函数的具体调用, 后面sub_xxxx就是对这个函数的引用调用
sub_1810CFE60 proc near ; CODE XREF: sub_1810E7B40+1F8↓p
示例:
1.微信中防撤回消息
1)根据使用ida pro打开WeChatWin.dll文件
2)猜测可能使用到的词汇revoke, 使用Shift+F12切换字符串展示, crtl+f5进行字符串搜索
3)hook关键函数:使用frida
import sys import frida def main(wx_process):
# 链接本地设备
session = frida.attach(wx_process)
# 创建需要执行的js脚本
script = session.create_script("""
// 获取WechatWin.dll映射的根地址
const baseAddr = Module.findBaseAddress('WechatWin.dll');
console.log('WechatWin.dll baseAddr: ' + baseAddr);
// 撤回消息的函数地址
// const revokeMsgFuncAddr = resolveAddress('0x1810CFE60');
const revokeMsgFuncAddr = resolveAddress('0x1810E7D2A');
console.log('revokeMsgFuncAddr: ' + revokeMsgFuncAddr); // 注入
Interceptor.attach(revokeMsgFuncAddr, {
// 一旦进入地址的回调函数
onEnter(args) {
// 0x4
console.log('rdi: ' + this.context.rdi);
// 修改地址的值
this.context.rdi = 0x0;
console.log('ttttt');
}
}); // 从虚拟地址转化到实际内存地址
function resolveAddress(addr) {
// 这里将加载的文件最上面的地址拿到
const idaBase = ptr('0x180000000');
const offset = ptr(addr).sub(idaBase);
const result = baseAddr.add(offset);
return result;
} """)
# 加载并持续读取内容
script.load()
print("Process attached successfully.")
sys.stdin.read() # 基址: 0x7ff837cc0000 if __name__ == '__main__':
wx_process = 'WeChat.exe'
main(wx_process)
4)找到对应的撤回的call函数进行调用修改,即可
参考:
- https://www.bilibili.com/video/BV1di421U7qD/?share_source=copy_web&vd_source=c593b03003bbf8ce00280ed8379a79a4
- http://www.yxfzedu.com/article/10778
软件逆向之IDA Pro的更多相关文章
- 使用IDA Pro逆向C++程序
使用IDA Pro逆向C++程序 附:中科院李_硕博 : IDA用来做二进制分析还是很强大的 .lib程序是不是很容易分析出源码? 这个得看编译选项是怎么设置的 如果没混淆 没太过优化 大体能恢复源码 ...
- IDA Pro - 使用IDA Pro逆向C++程序
原文地址:Reversing C++ programs with IDA pro and Hex-rays 简介 在假期期间,我花了很多时间学习和逆向用C++写的程序.这是我第一次学习C++逆向,并且 ...
- 使用IDA pro逆向ARM M系核心的Bin固件
使用IDA pro逆向ARM M系核心的Bin固件 物联网和智能设备这两年还是比较火的,我们的手中或多或少都有了几个智能设备,比如手环,智能手表,或者门锁什么之类的东西,但是同学们在做逆向的时候, ...
- 路由器逆向分析------在Linux上安装IDA Pro
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69665905 01.在Linux系统上安装Linux版本的IDA Pro Linu ...
- IDA Pro - 如何得到比较清楚的逆向伪代码
原文地址:Question about disassembler 简介 这篇文章介绍了如何在不使用插件的IDA Hex-Rays如何得到比较清晰的伪代码.IDA Hex-Rays功能很强大,只要你提供 ...
- IDA,IDA PRO 产品介绍
IDA理念这是我们在开发产品时竭尽全力遵循的理念--在此过程中,我们相信我们将开发出能够为您带来所需的可靠性.便利性和易用性的软件.没有什么能打败人脑因为我们知道一秒钟的洞察力仍然胜过百年的处理时间, ...
- android调试系列--使用ida pro调试原生程序
1.工具介绍 IDA pro: 反汇编神器,可静态分析和动态调试. 模拟机或者真机:运行要调试的程序. 样本:自己编写NDK demo程序进行调试 2.前期准备 2.1 准备样本程序(假设已经配置好 ...
- IDA Pro使用技巧
DA Pro基本简介 IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口(output Window). IDA图形视图会有执行流,Yes箭头默认为绿色,No箭头 ...
- IDA Pro使用(静态分析+动态调试)
链接:http://skysider.com/?p=458 IDA Pro使用(静态分析+动态调试) 1.静态分析 IDA FLIRT Signature Database —— 用于识别静态编译的可 ...
- ida pro 使用
交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA.是目前最棒的一个静态反编译软件,为众多0day世界的成员 ...
随机推荐
- 【YashanDB数据库】YAS-02032 column type is incompatible with referenced column type
[标题]错误码处理 [问题分类]外键约束创建报错 [关键字]YAS-02032 [问题描述]设置外键约束报错,数据元数据不正确. [问题原因分析]外键字段类型不支持,比如varchar2(64) ,指 ...
- 4Templates Bootstrap Navbars and Links
链接 传递参数
- go中能比较和不能比较的数据类型
在 Go 语言中,比较操作符(== 和 !=)可以用于许多数据类型,但也有一些数据类型不支持直接比较.下面详细解释哪些数据类型可以比较,哪些不能比较,以及相关的规则和原因. 可以比较的数据类型 布尔型 ...
- .Net 理解异步的学习
// 异步 - 在方法中使用 // 异步约等于线程 async await 一起使用 // 异步只有三种返回值 // 1. Task // 2. Task<T> // 3. void 几乎 ...
- yarn : 无法加载文件 C:\Users\zhulo\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?Li nkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + yarn serve
powershell的执行策略问题: 解决办法: 管理员身份打开powershell 输入 set-ExecutionPolicy RemoteSigned 然后选择 a or Y :
- KubeSphere 社区双周报 | KubeKey 支持 Web UI | 2023.10.13-10.26
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- JDK1.7中关于AutoCloseable接口的使用
1.查看API文档,找到AutoCloseable相关定义 public interface AutoCloseable 该接口是从JDK1.7开始引入,并且该接口中只有一个方法close() 1 v ...
- Machine Learning Week_1 Model and Cost Function 5-8
目录 2.5 Video: Cost Function Intuition-1 unfamiliar words 2.6 Reading: Cost Function Intuition-1 unfa ...
- python机器学习(第一章 Python机器学习基础)
第一章 Python机器学习基础 基础: Python官网:https://www.python.org/doc/: 历史版本下载与维护信息:https://www.python.org/downlo ...
- 【241027-论文阅读】DGraph: A Large-Scale Financial Dataset for Graph Anomaly Detection
DGraph: A Large-Scale Financial Dataset for Graph Anomaly Detection DGragh是一个用于图异常检测(gragh anomaly d ...