首页
社区
课程
招聘
[翻译]如何让 IDA Pro 使用我们提供的 Python 版本以及如何在 Chroot 的环境中运行 IDA Pro
2017-3-26 06:31 12403

[翻译]如何让 IDA Pro 使用我们提供的 Python 版本以及如何在 Chroot 的环境中运行 IDA Pro

2017-3-26 06:31
12403

如何让 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直播授课

收藏
点赞1
打赏
分享
最新回复 (5)
雪    币: 18869
活跃值: (60323)
能力值: (RANK:125 )
在线值:
发帖
回帖
粉丝
Editor 2017-3-26 09:34
2
0

辛苦了,排版好看

雪    币: 307
活跃值: (297)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Sunsee 2017-3-26 15:33
3
0
很用心,支持!
雪    币: 346
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
OnlyForU 2017-3-27 13:02
4
0
windows上该如何做?
雪    币: 349
活跃值: (125)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
linso 1 2017-3-29 10:31
5
0
OnlyForU windows上该如何做?
windows上安装vm然后装Linux不就好了…
雪    币: 78
活跃值: (115)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
采臣·宁 1 2017-4-6 10:34
6
0
我一般是直接替换IDA目录下的libpython.so文件,然后做一个本地PYTHON符号链接  到PLUGIN  PYTHON  LIB目录。
游客
登录 | 注册 方可回帖
返回