Android动态污点分析工具TaintDroid部署指南 - FloraF

  TaintDroid是一款著名的Android动态污点分析工具,不过研发团队并没有将TaintDroid更新到Android 4.4及以后版本,仅能在Dakvik上使用,实在可惜。


〇、准备工作:

TaintDroid论文:https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Enck.pdf

TaintDroid 官网:http://www.appanalysis.org/

TaintDroid源码:https://github.com/TaintDroid

TaintDroid安装介绍: http://www.appanalysis.org/download.html

 

一、下载Android源码

    参考资料:http://www.cnblogs.com/bluestorm/p/4419135.html

1. 安装jdk

Android 4.3及以下版本可能只有JavaSE 6及以下的jdk才能运行起来。因此从java官网上下载历史版本。http://www.oracle.com/technetwork/java/javase/archive-139210.html

下载并解压jdk后,通过java –version命令确认一下安装的这一版本的java是否已经是默认java环境,如果不是,输入以下命令:

$ sudo update-alternatives –install /usr/bin/java java /bin/java 1000
$ sudo update-alternatives –install /usr/bin/javac javac /bin/javac 1000
$ sudo update-alternatives –install /usr/bin/javah javah /bin/javah 1000
$ sudo update-alternatives –install /usr/bin/javap javap /bin/javap 1000
$ sudo update-alternatives –install /usr/bin/jar jar /bin/jar 1000

1000为优先级,优先级最高的为默认使用的jdk,这个数值可以根据机器的实际情况设置。

在/etc/profile文件末尾添加:

export JAVA_HOME=
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

2. 安装一些必须的软件

$ sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa- dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev ccache
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
$ source ~/.bashrc

3. 下载并初始化repo

$ mkdir ~/Android
$ mkdir ~/Android/bin
$ mkdir ~/Android/aosp

# 下载repo,使用清华镜像站
$ git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/
$ cp git-repo/repo ~/Android/bin/
$ gedit ~/Android/bin/repo
# 修改REPO_URL为:
REPO_URL = 'git://aosp.tuna.tsinghua.edu.cn/android/git-repo'

$ cd ~/Android/aosp
# 初始化repo, 注意将末尾的android-4.3_r1替换为所需要的版本号
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-4.3_r1

# 在初始化时,会提示需要进行email验证,应使用如下命令:
$ git config --global user.email "[email protected]"
$ git config --global user.name "Your Name"

4. 下载源码

$ repo sync


5. 编译源码

虽然不是必要的,但最好编译一下,以在没有对源码进行任何修改的情况下,确认环境配置正确,即时修复问题。

$ . build/envsetup.sh
$ lunch 1    # 这里根据需求设置,如果使用模拟器,可以使用1
$ make –j4   # -j后的数字根据机器的CPU核数配置,CPU核数的一或两倍
$ emulator   # 启动模拟器,确认环境及编译结果没有任何问题


二、下载TaintDroid代码

TaintDroid的源码并非一个完整的系统,而是只收录了与Android源码有区别的部分。因此实际上,只要让TaintDroid中做出修改的目录一一替换掉Android源码中的对应目录即可。

下载http://appanalysis.org/files/taintdroid_4.3/local_manifest.xml 并且把它放到Android/.repo/local_manifests/目录下,或者直接将下面的代码复制到Android/.repo/local_manifests/local_manifest.xml中。


  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  


然后,下载TaintDroid源码并替换掉Android源码的相应目录。

$ cd ~/Android
$ repo sync
$ repo forall dalvik libcore frameworks/base frameworks/native frameworks/opt/telephony system/vold system/core device/samsung/manta device/samsung/tuna \
       packages/apps/TaintDroidNotify -c 'git checkout -b taintdroid-4.3_r1 --track github/taintdroid-4.3_r1 && git pull'

三、部分设备需要下载额外文件

如果使用的是真机,如Nexus 4等等,还需下载额外的文件以安装驱动。详情请看http://www.appanalysis.org/download.html 的Step 3.

模拟器不需要下载额外文件。


四、编译TaintDroid

首先,需要在TaintDroid根目录下新建一个buildspec.mk文件,写入一些编译TaintDroid所需要的参数。


$ cd ~/Android
$ gedit buildspec.mk  # 添加如下代码
# Enable core taint tracking logic (always add this)
WITH_TAINT_TRACKING := true

# Enable taint tracking for ODEX files (always add this)
WITH_TAINT_ODEX := true

# Enable taint tracking in the "fast" (aka ASM) interpreter (recommended)
WITH_TAINT_FAST := true

# Enable additional output for tracking JNI usage (not recommended)
#TAINT_JNI_LOG := true

# Enable byte-granularity tracking for IPC parcels
WITH_TAINT_BYTE_PARCEL := true

然后,打开Android/build/target/product/core.mk文件并且把TaintDroidNotify添加到PRODUCT_PACKAGES中。


PRODUCT_PACKAGES += \
                    BasicDreams \
                    ...
                    voip-common \
                    TaintDroidNotify

现在,可以开始编译TaintDroid了。

$ . build/envsetup.sh
$ lunch   # 选择自己需要的设备
$ make clean
$ make –j4

五、刷机

如果仅在模拟器运行,不需要刷机。如果在真机上运行,需要进行刷机。具体的刷机流程请根据手机型号自行搜索。常见的刷机方式是:

长按电源键和音效调低建,直到进入bootloader模式。用USB连接至电脑。

# 解锁机器
$ fastboot oem unlock  # 可以看到机器上的locked变成了unlocked

$ cd out/target/product/
$ fastboot flash boot boot.img
$ fastboot flash system system.img
$ fastboot flash userdata userdata.img

按音量键调节机器模式直reboot, 按开机键确认,机器重启,TaintDroid系统刷机完成。


你可能感兴趣的:(Android污点分析)