IDA 的下载安装

Windows 平台

IDA Pro 7.7

建议使用 吾爱破解论坛 提供的 IDA Pro版本,支持 x86、mips、arm 等多架构的反编译集成了许多插件

注意:以下文件均搜集自互联网,有能力请务必支持正版,这里仅供讨论学习使用,不可用于其他用途,一切个人行为均与本站无关

下载:IDA Pro 7.7.220118 (SP1) 全插件绿色版

该版本自带 python 3.8 环境,打开 IDA Pro 的安装路径,在根目录下有一个 IDA_InitTool.exe,双击运行,根据提示操作后即可激活自带的 python 3.8 环境,并正常使用 IDA Pro

在 IDA Pro 根目录下有一个 idapyswitch.exe,双击运行后,可以根据需要切换 IDA Pro 的 python 版本,只要在 IDA Pro 的 output 处不出现报错即可


IDA Pro 8.3

这是基于泄露版修改而来的,但是只支持 x86 架构的反汇编

注意:以下文件均搜集自互联网,有能力请务必支持正版,这里仅供讨论学习使用,不可用于其他用途,一切个人行为均与本站无关

下载:IDA Pro 8.3 绿色版(2024.2.26更新) - 吾爱破解 - 52pojie.cn,如果链接失效,可以前往爱盘下载:爱盘 - 最新的在线破解工具包

该版本自带 python 3.11 环境,打开 IDA 的安装路径,在根目录下有一个 IDA_Pro_8.3_绿化工具.exe,双击运行,根据提示操作后即可激活自带的 python 3.11 环境,并正常使用 IDA Pro(如果电脑的系统语言是英语,需要将程序名字的中文去掉后再运行,否则会报错

在 IDA Pro 根目录下有一个 idapyswitch.exe,双击运行后,可以根据需要切换 IDA Pro 的 python 版本,只要在 IDA Pro 的 output 处不出现报错即可

在 IDA Pro 8.3 版本中,IDA Pro 64 位既可以处理 64 位程序,也可以处理 32 位程序了,因此无需再自行判断程序位数


IDA Pro 9.0

这也是基于泄露版修改而来的,支持 x86、mips、arm 等多架构的反编译,但是没有插件集成

注意:以下文件均搜集自互联网,有能力请务必支持正版,这里仅供讨论学习使用,不可用于其他用途,一切个人行为均与本站无关

下载:IDA Pro 9.0 Beta官方泄露版(Win Linux Mac)含所有Decompiler和SDK,更新破解和链接 - 吾爱破解 - 52pojie.cn

以 9.0 RC1 为例,下载提供的 python 脚本(名字带有 keygen 字样),将 IDA Pro 安装目录下的 ida.dllida32.dll 移动到 python 脚本目录下,运行 python 脚本,生成修改后的两个 DLL 文件和 hexlic 文件,将修改后的 DLL 文件重命名后与 hexlic 文件一起覆盖到 IDA Pro 安装目录,即可正常使用 IDA Pro

该版本未自带 python 环境,请自行安装

在 IDA Pro 根目录下有一个 idapyswitch.exe,双击运行后,可以根据需要切换 IDA Pro 的 python 版本,只要在 IDA Pro 的 output 处不出现报错即可

解决 output 报错:

IDA Feeds plugin (C:/Program Files/IDA Professional 9.0/plugins/ida_feeds/ida_feeds.py) was not loaded due to a missing dependency: rpyc. IDA Feeds plugin (C:/Program Files/IDA Professional 9.0/plugins/ida_feeds/ida_feeds.py) terminated.

管理员权限打开 cmd,输入:(注意改为自己的安装路径,详情可查看 C:\Program Files\IDA Professional 9.0\idalib\README.txt

cd "C:/Program Files/IDA Professional 9.0/idalib/python"  
pip install .  
python "C:\Program Files\IDA Professional 9.0\idalib\python\py-activate-idalib.py" -d "C:\Program Files\IDA Professional 9.0"

在 IDA Pro 9.0 中,已经不再区分 IDA Pro 64 位和 IDA Pro 32 位了,统称为 ida.exe,既可以处理 64 位程序,也可以处理 32 位程序,无需再自行判断程序位数


Linux 平台

Wine 版 IDA Pro

在 Linux 中可以使用 wine 运行 Windows 中的程序,详见本站《Ubuntu22.04虚拟机环境搭建》一文的《安装 wine 最新版》部分

然后你就可以像在 Windows 中那样使用 IDA Pro 了,但实际并没有 Linux 原版好用


IDA Pro 7.5 demo

注意:以下文件均搜集自互联网,有能力请务必支持正版,这里仅供讨论学习使用,不可用于其他用途,一切个人行为均与本站无关

下载:安装 使用 ida pro linux_ida pro安装-CSDN博客

上面的链接自带 crack

如果你在其他地方下载的 IDA Pro 7.5 demo 版本没有 crack,可以参考此项目:StackOverflowExcept1on/ida75demo-linux at f4f741ce09932e31ff0dc86cae4eefe47f3c0835,其消除了 IDA Pro 7.5 demo 评估过期导致无法使用的问题

这个版本仍然存在许多限制,并且只能使用图形化界面,无法使用 idat 来执行命令行脚本


IDA Pro 9.0

注意:以下文件均搜集自互联网,有能力请务必支持正版,这里仅供讨论学习使用,不可用于其他用途,一切个人行为均与本站无关

下载:IDA Pro 9.0 Beta官方泄露版(Win Linux Mac)含所有Decompiler和SDK,更新破解和链接 - 吾爱破解 - 52pojie.cn

以 9.0 Beta 为例,下载提供的 python 脚本(名字带有 keygen 字样),将 IDA Pro 安装目录下的 libida.solibida32.so 移动到 python 脚本目录下,运行 python 脚本,生成修改后的两个 so 文件和 hexlic 文件,将修改后的 so 文件重命名后与 hexlic 文件一起覆盖到 IDA Pro 安装目录,即可正常使用 IDA Pro

该版本未自带 python 环境,请自行安装

在 IDA Pro 根目录下有一个 idapyswitch,运行后,可以根据需要切换 IDA Pro 的 python 版本,只要在 IDA Pro 的 output 处不出现报错即可


IDA 的常用快捷键

作用快捷键
查看字符串Shift + F12
反汇编F5
快速查看16进制数的ASCii码对应的字符r
在反汇编后的界面中写下注释
在反编译后伪代码的界面中写下注释/
查看、隐藏变量的类型\
对着某个函数、变量按该快捷键,查看它的交叉引用x
直接跳转到某个地址g
更改变量的名称n
拍摄IDA快照ctrl + shift + w
嵌入脚本shift + F2
文本搜索字符串alt + t
将数据转换为16 进制h
获取数组的数据shift + e
对数据db/dw/dd之间进行切换d
转化为函数p
将数据转化为代码c
将数据转化为字符串a
将代码转换为数据u

IDA 命名前缀的含义

IDA 会自动生成假名字,用于表示子函数、程序地址和数据,根据不同的类型和值,假名字有不同的前缀


前缀意义
sub_指令和子函数起点
locret_返回指令
loc_指令
off_数据,包含偏移量
seg_数据,包含段地址值
asc_数据,ASCII字符串
byte_数据,字节(或字节数组)
word_数据,16位数据(或字数组)
dword_数据,32位数据(或双字数组)
qword_数据,64位数据(或4字数组)
flt_浮点数据,32位(或浮点数组)
dbl_浮点数,64位(或双精度数组)
tbyte_浮点数,80位(或扩展精度浮点数)
stru_结构体(或结构体数组)
algn_对齐指示
unk_未处理字节

Windows IDA 远程调试 Linux

有时候程序是 Linux 平台的 elf 文件,可以使用 Windows 端的 IDA 对 Linux 端的程序远程调试

  1. 首先到 Windows 端 IDA 路径的 dbgsrv 目录下:

IDA远程调试1.png
找到 linux_serverlinux_server64 两个文件

linux_server 是连接 32 位程序的,linux_server64 连接 64 位程序

将这两个文件拷到 Linux 虚拟机中

  1. 给这两个文件增加执行权限,然后运行(需要调试多少位的程序就运行哪一个)

IDA远程调试2.png
记住端口号:23946

保持运行,不要关

  1. 先在 Windows 端 IDA 中 快捷键 F2 下好断点

IDA远程调试3.png
然后选择调试器

IDA远程调试4.png
然后按 快捷键 F9 运行程序

会弹出一个输入框:

IDA远程调试5.png
这里的 Hostname 是你的 Linux 虚拟机的 ip 地址

可以在 Linux 虚拟机终端输入 ifconfig 获取 ip 地址,我这里是 192.168.171.128

IDA远程调试6.png

将其他参数填完整:

IDA远程调试7.png

注意:这里所有的参数都是填 Linux 的

ApplicationInput file 填:调试程序在 Linux 的绝对路径
Directory 填:调试程序所在目录的绝对路径

  1. 如果弹出 "Input file is missing: xxx" 的报错

IDA 会询问是否向 Linux 端拷贝这个调试程序

"OK" 就行,然后选择 Windows 本地的调试程序,IDA 会自动拷贝过去(一般是路径输错了,但是 IDA 拷贝过去也可以调试)

  1. 成功连接的界面如下:

IDA远程调试8.png

同时,可以看到 Linux 端执行的程序:

IDA远程调试9.png


IDA 中的汇编基础

字符串末尾用 ‘0’ 表示结束

  • Format 的内容:”Welcome The System\nPlease Input Key:”
.rdata:00402100 57 65 6C 63 6F 6D 65 20 54 68+ Format db 'Welcome The System' , 0Ah ;     DATA XREF: _main+28↑o
.rdata:00402100 65 20 53 79 73 74 65 6D 0A 50+ db 'Please Input Key:' , 0
  • byte_402150 的内容:2a49f69c38395cde96d6de96d6f4e025484954d6195448def6e2dad67786e21d5adae6
    byte_402151 的内容:a49f69c38395cde96d6de96d6f4e025484954d6195448def6e2dad67786e21d5adae6
.rdata:00402150 ; char byte_402150[]
.rdata:00402150 32 byte_402150 db '2' ;      DATA XREF: sub_401090:loc_4010CC↑r
.rdata:00402151 ; char byte_402151[]
.rdata:00402151 61 byte_402151 db 'a' ;      DATA XREF: sub_401090:loc_4010E9↑r
.rdata:00402152 34 39 66 36 39 63 33 38 33 39+a49f69c38395cde db '49f69c38395cde96d6de96d6f4e025484954d6195448def6e2dad67786e21d5adae6' , 0

dup(?) 开辟未初始化的空间

CTF - Reverse_IDA——汇编知识1.png

  • str2 db 68h dup(?) 是指开辟一个 68h 长度的空间,且不进行初始化