如何让 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之前,重命名〜/ .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/
[培训]内核驱动高级班,冲击BAT一流互联网大厂工
作,每周日13:00-18:00直播授课