Ubuntu下安装Ropper的坑

Ubuntu下安装Ropper遇到的问题

最近研究内核Pwn需要用到Ropper找gadgets,安装过程中遇到了一系列糟心的事情,可以说能踩的坑被我一个不落的都踩了,记录一下。
Ropper安装前需要安装一些其他的依赖,首先安装capstone。

#pip install capstone

ok这个没问题,但是一直提示pip版本过低,所以更新pip。

python -m pip install --upgrade pip

更新完毕检查一下版本,这个居然都报错惹。

# pip -V
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in 
    from pip import main
ImportError: cannot import name 'main'

ok看一下错误原因,打开/usr/bin/pip文件,按错误提示修改main。

#!/usr/bin/python
# GENERATED BY DEBIAN

import sys

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

ok保存了之后能正常运行了。按步骤再安装filebytes。

# pip install filebytes

这个安装过程出了许多问题,实在懒得一一去查看原因了,只记录下最终的解决办法。
filebytes这个包好像对python还是pip版本有限制,低版本是无法安装成功的,所以我又把python2.7升级到了python3.5,一系列恶心人的事情又开始了,略过不提。
后来是直接克隆的库进行安装。

# git clone https://github.com/sashs/filebytes.git
# cd filebytes
# sudo python setup.py install

ok虽然安装最后提示成功,但是显示的包名变成了UNKNOWN是什么狗,搜索了一下原因是setuptools没更新的原因。

# pip install setuptools --upgrade

ok这次终于安装成功了,版本也符合要求(ropper要求filebytes版本>=0.10.0)。接下来安装keystone-engine,但是因为我个人小手一抖敲成了pip install keystone,我又没取消于是一路安装各种库,然而中间失败了好几个,抱着侥幸的心理,安装了ropper发现不行,还是回过头老老实实装keystone
还是直接从源码来安装。

wget https://github.com/keystone-engine/keystone/archive/0.9.1.tar.gz
~ tar xzvf 0.9.1.tar.gz
~ cd keystone-0.9.1/
~ mkdir build
~ cd build
~ ../make-share.sh
~ sudo make install
~ sudo ldconfig
~ kstool

ok这个也安装成功了。最后安装pip install ropper看上去也没什么问题成功安装,但是使用ropper时会报错。

# ropper
Traceback (most recent call last):
  File "/usr/local/bin/ropper", line 11, in 
    load_entry_point('ropper==1.13.2', 'console_scripts', 'ropper')()
  ......
AttributeError: module 'keystone' has no attribute 'KS_ARCH_X86'

看提示是说keystone这个模块并没有该属性,最开始猜测是否是keystone没有安装完全,于是有用pip安装了一遍。

# pip install keystone-engine

但是提示我keystone-engine已安装,到/dist-packages下查看发现确实有这个包。于是在网上搜索了一下,发现一个可能的解释,说是因为同时安装了keystonekeystone-engine导致有冲突,需要删除keystone。于是尝试删除keystone。

pip uninstall keystone

ok提示我这个包根本没安装,想起来我是从源码安装的,和pip安装路径不一致,所以应该不是因为这个导致ropper运行报错。
想了想直接删除keystone-engine

# pip uninstall keystone-engine
Uninstalling keystone-engine-0.9.1.post3:
  Would remove:
    /usr/lib/python3/dist-packages/keystone
    /usr/local/lib/python3.5/dist-packages/keystone_engine-0.9.1.post3-py3.5.egg-info
Proceed (y/n)? y
  Successfully uninstalled keystone-engine-0.9.1.post3

删除后重新pip安装一遍keystone-engine,安装成功后再pip install ropper,安装成功后运行试试:

# ropper
(ropper)> 

再试试用ropper找gadgets:

# ropper -f vmlinux --nocolor > goldfish_ropper_gadgets
[INFO] Load gadgets for section: LOAD
[LOAD] loading... 100%
[INFO] Load gadgets for section: LOAD
[LOAD] loading... 100%
[INFO] Load gadgets for section: LOAD
[LOAD] loading... 100%
[INFO] Load gadgets for section: LOAD
[LOAD] loading... 100%
[INFO] Load gadgets for section: NOTE
[LOAD] loading... 100%
[INFO] Load gadgets for section: GNU_STACK
[LOAD] loading... 100%
[LOAD] removing double gadgets... 100%

ok fine可以找到了。

你可能感兴趣的:(Android)