Linux中配置ida
安装ida以及如何在Windows下配置idapython路径
在《揭秘家用路由器0day漏洞挖掘技术》一书中了解到可以直接在Linux中爽用ida联合gdb动调,心血来潮装了个kali虚拟机尝试
之前打pwn的时候一直都只是用wsl2,选用kali的原因之一是kali集成了很多web渗透工具,在学习iot过程中利用路由器漏洞或许可以直接用,省去不少和环境斗智斗勇的时间。在vmware中安装kali虚拟机的过程按下不表。
我使用的是ida pro 8.3绿色版,在正式开始之前可以先把压缩包解压了,在windows中提前使用绿化工具绿化好。
在安装好vmtools之后直接将ida8.3文件夹拖入虚拟机桌面,改一个没空格的名字放入用户目录下

一般情况下不能直接在Linux中执行.exe文件,但是已经有一款成熟的模拟器软件,wine
1 | sudo apt-get install wine |
此时直接通过wine运行ida64.exe是可以成功的,第一次使用wine可能会花一点点时间自动更新配置。虽然会爆一堆错,但不必理会(

可以在用户目录下写一个脚本,不必每次打开ida都敲代码
1 |
|
打开ida后能够正常进行静态分析,但是下方的输出窗口会报错:
1 | WARNING: Python 3 is not configured (Python3TargetDLL value is not set). |
他会提示我们找不到python3。理应说我们安装的绿色版ida8.3内置了python3.11,如果在windows中遇到了这个问题可以直接手动运行idapyswitch.exe来选择python路径:
你可以直接运行idapyswitch.exe,通过引导设置:(wsl环境下)
1 | ./idapyswitch.exe |

也可以通过主动设置路径(当前一种方式无法定位到绿色版自带的python时)
1 | idapyswitch.exe --force-path [/path/to/python3.dll] |

值得注意的是最好是用绿色版自带的python3.11,如果你使用的不是绿色版,我也推荐你在电脑上下载一个python3.11及之前的python版本用于配置idapython。之后的版本,如3.12会出现在加载插件时无法找到特定库的问题。
以上是windows下,包括ida插件导入失败、设置python路径问题下的解决方案。
但是,划重点:在Linux中配置python不能这么做。
在Linux中配置ida不要尝试直接通过wine idapyswitch.exe设置python路径。
在Linux中配置ida不要尝试直接通过wine idapyswitch.exe设置python路径。
在Linux中配置ida不要尝试直接通过wine idapyswitch.exe设置python路径。
如果你不想听我赘述这么做会踩的坑,请直接看通过wine注册表设置idapython路径
首先,当你尝试执行这条命令,他会提示:
1 | $ wine ida/Setup/idapyswitch.exe |
首先,没有已安装的python被检测到,因为windows下检查的环境变量与Linux下不同;
其次,他要你安装wine32。
一定不要装,装了之后你会发现连通过wine打开ida64.exe都不行了,每次你尝试这样执行他都会dump出一个600多兆的文件
然后,此时如果你尝试通过–force-patch 设置python路径,你会发现也打不开ida64.exe了,同样也会dump出一个贼大的文件
那怎么解决?
Linux下通过wine注册表设置idapython路径
首先,你至少先通过wine成功打开ida64.exe一次,ida才会被计入wine 的注册表。
其次,在python文件夹下找到python3.dll文件,记录下该文件的文件地址

执行wine regedit打开wine的注册表编辑器,进入Software/Hex-Rays/IDA/

在右侧的操作框中新建一个Python3TargetDLL键值,然后双击设置值数据为之前记录的python3.dll地址(wine中会把Linux根目录映射成windows下的Z盘,此处也要填写windows路径格式

确定->关闭注册表,此时再次打开ida应该就没有报错了

参考
IDA Pro 8.3 绿色版(2024.2.26更新) - 吾爱破解 - 52pojie.cn
64位Linux下安装IDA pro&IDA pro的使用 - 闲不住的小李 - 博客园
网络环境配置
执行:
1 | sysctl -w net.ipv4.ip_forward=1 |
开启ipv4数据包转发功能,把 Linux 系统当作路由器使用,让连接到该系统的不同网络之间能够进行通信
修改/etc/network/interfaces
首先安装一下网桥工具
1 | sudo apt-get install bridge-utils |
此时ifconfig应该也会出现网桥br0的接口
然后编辑网络配置文件
1 | sudo vim /etc/network/interfaces |
1 | auto lo |
在修改之前用ifconfig看一下自己的以太网接口时eth0还是ens33;如果是ens33,把上面所有eth0全部改成ens33
重启网络配置
1 | sudo /etc/init.d/networking restart |
安装qemu
1 | sudo apt-get install qemu-user-static |
打开网络接口启动脚本/etc/qemu-ifup并写入:
1 | !/bin/sh |
赋予权限
1 | sudo chmod a+x /etc/qemu-ifup |
创建qemu使用桥的配置文件
1 | sudo mkdir /etc/qemu |
写入
1 | allow br0 |
安装binwalk
1 | sudo apt install binwalk |
安装sasquatch
1 | sudo apt-get install build-essential liblzma-dev liblzo2-dev zlib1g-dev |
最后执行./build.sh之前可能要挂一下虚拟机的代理,不然请求不到。
这应该是最优解了,踩了不少坑