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 长度的空间,且不进行初始化