IDA的基础和远程调试
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.dll 与 ida32.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.so 与 libida32.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 端的程序远程调试
- 首先到 Windows 端 IDA 路径的 dbgsrv目录下:
找到 linux_server 和 linux_server64 两个文件
linux_server 是连接 32 位程序的,linux_server64 连接 64 位程序
将这两个文件拷到 Linux 虚拟机中
- 给这两个文件增加执行权限,然后运行(需要调试多少位的程序就运行哪一个)
记住端口号:23946
保持运行,不要关
- 先在 Windows 端 IDA 中 快捷键 F2下好断点
然后选择调试器
然后按 快捷键 F9 运行程序
会弹出一个输入框:
这里的 Hostname 是你的 Linux 虚拟机的 ip 地址
可以在 Linux 虚拟机终端输入 ifconfig 获取 ip 地址,我这里是 192.168.171.128
将其他参数填完整:
注意:这里所有的参数都是填 Linux 的
Application 和 Input file 填:调试程序在 Linux 的绝对路径Directory 填:调试程序所在目录的绝对路径
- 如果弹出 "Input file is missing: xxx"的报错
IDA 会询问是否向 Linux 端拷贝这个调试程序
点 "OK" 就行,然后选择 Windows 本地的调试程序,IDA 会自动拷贝过去(一般是路径输错了,但是 IDA 拷贝过去也可以调试)
- 成功连接的界面如下:
同时,可以看到 Linux 端执行的程序:
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(?) 开辟未初始化的空间
- str2 db 68h dup(?)是指开辟一个 68h 长度的空间,且不进行初始化




















