[翻译]如何让 IDA Pro 使用我们提供的 Python 版本以及如何在 Chroot 的环境中运行 IDA Pro
如何让 IDA Pro 使用我们提供的 Python 版本以及如何在
Chroot 的环境中运行 IDA Pro
0x00 前言
在这篇文章中,我将解释一个简便的方法来使用我们自己的python,Qt 5.6,PyQt 5.6版本与IDA Pro,然后如何使用
32位 Linux Arch-chrooted 运行IDA Pro,以免污染我们的主机与pesky lib32-XX最后我将文件安装好和配置好一些有
用的IDA Pro插件。
0x01 介绍
为什么不使用已经可用的技术,如Arybo,使用rpyc将rpc调用到64位python或者idalink或者安装PIP包,并且在64位机
器上使用IDA?原因很简单 我不想用一堆烦人的点包,lib32-xx等来污染我的主机。我也想使用一些很酷的IDA Pro插
件,如 keypatch,ipyida和idaemu。
注意:这个整个过程是在Arch Linux 64bit操作系统上实现的。它可以轻松应用于Ubuntu或其他发行版。
0x03 上手
安装并配置chroot和schroot环境
Arch Linux 32位chroot
从ArchLinux Wiki获取了很多技巧。
安装几个实用程序和schroot
sudo pacman S arch install scripts schroot mkdir /opt/arch32
配置自定义pacman.conf
如果正在使用multilib,则需要从自定义的pacman.conf中删除它。
配置自定义pacman.conf而不支持multilib:复制默认值并删除:
[Multilib] Include = /etc/pacman.d/mirrorlist
创建Arch 32bit的chroot安装
注意:没有插件,有一些不需要正常安装IDA Pro的软件包。我发现在pacstrap而不是从chroot安装它们的速度更快。
linux32 pacstrap C path/to/pacman.conf di /opt/arch32 base base devel zlib libxext libxrender libsm libice glibc glib2 fontconfig freetype2 python2 keystone python2 python2 jupyter_client python2 ipykernel libxkbcommon x11 libxkbcommon cmocka gtk2 p7zip wget python2 pip git
配置我们新创建的用户/网络的chroot
sudo su cd /etc for i in passwd* shadow* group* sudoers resolv.conf localtime locale.gen vimrc inputrc profile.d/locale.sh; do cp p /etc/"$i" /opt/arch32/etc/; done
配置schroot
在/etc/schroot/schroot.conf中添加chroot的env
[Arch32] type=directory profile=arch32 description=Arch32 directory=/opt/arch32 users=youruser groups=users root groups=root personality=linux32 aliases=32,default
配置schroot使用ipython和jupyter正常运行
编辑/ etc / schroot / arch32 / mount并添加:
/run/user/1000 /run/user/1000 none rw,bind 0 0
schroot的配置完成。我们需要改变一些东西,以使IDA Pro与我们自己的python工作。
在chroot中配置X和IDA Pro
X Stuff
访问您的X为chroot
xhost +local:
(保留以后)查找当前X会话的显示ID
echo $DISPLAY
配置IDA pro使用我们自己的版本的python
输入chroot
sudo linux32 arch chroot /opt/arch32
更换终端以便正确自动完成
export TERM=xterm
可选 - 将一些字体添加到chroot以正确显示IDA Pro GUI:
如果你像我一样,你喜欢在X中更改你的字体,不要忘记将它安装在chroot中,以防止在IDA Pro中出现奇怪的字符。
pacman S adobe source code pro fonts xorg fonts type1 ttf dejavu artwiz fonts font bh ttf \ font bitstream speedo gsfonts sdl_ttf ttf bitstream vera \ ttf cheapskate ttf liberation \ ttf freefont ttf arphic uming ttf baekmuk
配置您的chroot以使用主机的Xserver
export DISPLAY=:0
其中0是您之前提到的显示器的ID。
下载,修补,编译和安装Qt、
下载Qt 5.6
wget https://download.qt.io/official_releases/qt/5.6/5.6.0/single/qt everywhere opensourcesrc 5.6.0.7z
提取,配置和构建它:
7z x qt everywhere opensource src 5.6.0.7z
下载并应用十六进制补丁:
cd qt everywhere opensource src 5.6.0 wget http://www.hexblog.com/wp content/uploads/2016/08/qt 5_6_0_full.zip 7z x qt 5_6_0_full.zip patch p1 < qt 5_6_0_full.patch
symlink python2到python来解决Qt make安装错误:
ln s /usr/bin/python2 /usr/bin/python
配置,编译和安装:
./configure nomake tests qtnamespace QT confirm license accessibility opensource force debug info developer build fontconfig qt freetype qt libpng glib qt xcb dbus qt sql sqlite gtkstyle make j9 make install
下载,编译安装QtSvg 5.6
从Qt 5.1开始,QtSvg已经转移到独立的包中。
下载包:
wget https://download.qt.io/official_releases/qt/5.6/5.6.0/submodules/qtsvg opensource src 5.6.0.7z 7z x qtsvg opensource src 5.6.0.7z cd qtsvg opensource src 5.6.0 Qmake,make和install Qtsvg 5.6: ../qt everywhere opensource src 5/qtbase/bin/qmake make j5make install
下载,编译和安装SIP
下载SIP 4.18
wget https://sourceforge.net/projects/pyqt/files/sip/sip 4.18/sip 4.18.tar.gz/download tar xvf sip 4.18.tar.gz cd sip 4.18
配置,编译和安装Sip 4.18:
python2 configure.py make -j9 make install
下载,修补,编译和安装PyQt 5.6
下载PyQt 5.6:
wget https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt 5.6/PyQt5_gpl 5.6.tar.gz/download tar xvf PyQt5_gpl 5.6.tar.gz cd PyQt5_gpl 5.6
下载我的PyQt补丁(借助Hex-Rays):
wget https://raw.githubusercontent.com/duksctf/duksctf.github.io/master/resources/2017/ida/pyqt.p atch patch p1 < pyqt.patch
配置,编译和安装PyQt 5.6:
python2 configure.py \ sip /root/build/qt/sip 4.18/sipgen/sip \ sip incdir /root/build/qt/sip 4.18/siplib \ confirm license \ enable QtCore \ enable QtGui \ enable QtWidgets \ enable QtSvg \ no designer plugin \ no qml plugin \ no tools \ verbose \ qmake /root/build/qt/qt56/qt everywhere opensource src 5.6.0/qtbase/bin/qmake make j9 make install
安装IDA Pro
运行IDA Pro安装程序。安装IDA时,请勿在安装程序要求安装捆绑版本的python时选择“否”。
配置IDA专业版以使用我们自己的python和Qt套件
cd /opt/ida 6.95
rm r libQt5*
cp
/root/build/qt/qt56/qt everywhere opensource src
5.6.0/qtbase/lib/libQt5{CLucene,Core,DBus,Gui,Help,Network,PrintSupport,Sql,Widgets,XcbQpa}.
so.5 .
cd python
rm r PyQt5
rm r sip files
cd lib
rm python27.zip
mv python2.7 python_old
ln s /usr/lib/python2.7 .
cp r "python_old/lib dynload/ida_*" /usr/lib/python2.7/lib dynload
rm r python_old退出chroot,非常重要
exit
警告 - 当使用linux32进行chrooting时,不要运行schroot,在分级之前始终将chroot退出。
警告 - 在首次启动IDA Pro之前,重命名0/ .idapro并删除所有插件。
使用schroot启动我们完全chroot的IDA(访问schroot.conf中用户的主机主目录)
schroot p /opt/ida 6.95/idaq
BONUS - 为IDA专业人员安装和配置有用的插件
我是IPython的粉丝,用来自动完成和快速编写python片段。我经常修补二进制文件,但是IDA Pro中的修补功能是不完
整的。我喜欢使用独角兽引擎来模拟奇怪的代码。
安装,配置和修补ipyida
当我在Windows下使用IDA Pro时,我最喜欢的插件之一是ida_ipython。不幸的是这个插件只是Windows。ESET的
Marc-Etienne开发了一个类似的插件,但这一次可以在Windows,Linux和Mac OSX上使用。
安装qtconsole
在chroot再次:
sudo linux32 arch chroot arch_32_chroot pip2 install qtconsole
用jupyter_support安装ipyida
不在chroot:
cd ~/.idapro cd plugins git clone https://github.com/eset/ipyida.git cd ipyida git checkout jupyter_support cd .. mv ipyida ipyida_temp
安装它
mv ipyida_temp/ipyida ~/.idapro/plugins mv ipyida_temp/ipyida_plugin_stub.py ~/.idapro/plugins/ipyida rm r ipyida_temp
使用汇编语言安装keypatch以修补二进制文件
wget https://raw.githubusercontent.com/keystone engine/keypatch/master/keypatch.py
注意 - 键盘需要梯形失真(安装在pacstrap中)。
使用idaemu脚本安装Unicorn-Engine来模拟事情
回到我们的chroot来安装和配置Unicorn-Engine
警告 - 如果IDA Pro在schroot中运行,请勿使用linux32进行chroot,首先退出IDA Pro。
sudo linux32 arch chroot arch_32_chroot cd /root mkdir build
能够以root身份运行makepkg的小技巧(通常不允许):
出于安全考虑,Makepkg无法作为root运行。这是一个能够以root身份打包的小技巧。
chgrp nobody /root/build chmod g+ws /root/build setfacl m u::rwx,g::rwx /root/build setfacl d set u::rwx,g::rwx,o:: /root/build
创建独角兽引擎包
git clone https://aur.archlinux.org/unicorn git.git cd unicorn git sudo u nobody makepkg
安装它
pacman U unicorn xxx.pkg.tar.xz pacman U python2 unicorn xxx.pkg.tar.xz
修复独角兽蛋档的奇怪问题
chown R youruser:youruser /usr/lib/python2.7
PS:我知道这很奇怪,但它是一个chroot,所以谁在乎…
退出chroot
exit
安装idaemu插件在IDA Pro中使用独角兽
wget https://raw.githubusercontent.com/36hours/idaemu/master/idaemu.py
BONUS2 - 将我们的着色主题添加到chroot IDA Pro
我喜欢为我的IDA Pro 使用辅音色主题。如果您已经在主机上应用了主题,只需将/opt/ida-xx/idacolor.cf复制到
chroot上的/ opt / ida-xx。
整理和简短的演示
它花了我很多的研究,例如试图编译QT / PyQt是一个很大的痛苦。我结束了,只是删除从ipyida插件的依赖。
这是ipyida插件的一个小视频:

本文github https://github.com/duksctf/duksctf.github.io/tree/master/resources/2017/ida
arybo插件 https://pythonhosted.org/arybo/integration.html
libTriton原理 https://triton.quarkslab.com/documentation/doxygen/py_ast_page.html
译自https://duksctf.github.io/Make-IDA-Pro-Great-Again/
