TaintDroid部署过程详解
来源:互联网 发布:淘宝的孕妇装 编辑:程序博客网 时间:2024/06/06 14:22
近期因为课题的需求,需要使用动态污点分析工具TaintDRoid,但是在网上找的教程中发现使用清华镜像时repo的下载模块总是出现问题,经过查找之后发现清华镜像已经关闭了git服务,因此决定重新写一遍部署过程,让后续的读者少走弯路,话不多说,开始部署吧!
注意:配置之前确认一下你的存储空间大小,保证硬盘空间在100G以上,本人因为配置过程中出现空间不足的情况就吃了很多亏!
1、下载Android源码
1.1jdk下载
因为TaintDroid仅支持jdk6及以下的版本,因为在配置前使用“java -version”查看下jdk版本,如果在6以上就需要重新配置一下jdk的版本
jdk6下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html
根据系统是32位还是64位下载相应的版本,本人使用的是ubuntu14.04TLs 64位,下载的jdk为图中标注版本
1.2 jdk安装
下载后,安装命令如下:
$ sudo mkdir -p /usr/local/java$ cd /usr/local/java$ sudo cp /home/download/Downloads/jdk-6u45-linux-x64.bin ./$ sudo chmod +x jdk-6u45-linux-x64.bin$ sudo ./jdk-6u45-linux-x64.bin
配置JAVA_HOME和PATH环境变量:
$ sudo gedit /etc/profile
找空白位置添加如下代码:
JAVA_HOME=/usr/local/java/jdk1.6.0_45 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin export JAVA_HOME export PATH
配置JDK和JRE的位置:
$ sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_45/bin/java 1 $ sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_45/bin/javac 1 $ sudo update-alternatives --install /usr/bin/javaws javaws /usr/local/java/jdk1.6.0_45/bin/javaws 1
配置Oracle为系统默认JDK/JRE:
$ sudo update-alternatives --set java /usr/local/java/jdk1.6.0_45/bin/java $ sudo update-alternatives --set javac /usr/local/java/jdk1.6.0_45/bin/javac $ sudo update-alternatives --set javaws /usr/local/java/jdk1.6.0_45/bin/javaws
$. /etc/profile
查看java版本:
$ java -version
若java版本不是所设置的版本,则需要重新下载jdk6并设置jdk6版本的优先级高于其他版本的优先级:
重新配置JAVA_HOME和PATH环境变量:
$ sudo gedit /etc/profile
更改JAVA_HOME及PATH:
JAVA_HOME=<jdk_root>/jdk1.6.0_45 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
更改优先级命令如下:
$ sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_45/bin/java 1000 $ sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_45/bin/javac 1000 $ sudo update-alternatives --install /usr/bin/javaws javaws /usr/local/java/jdk1.6.0_45/bin/javaws 1000
1.3安装必要的资源包
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip libswitch-perl
1.4安装repo
建立放置源码的文件夹$ mkdir /home/<username>/Android $ mkdir /home/<username>/Android/repo $ mkdir /home/<username>/Android/aosp
获取repo:
$cd /home/<username>/Android/repo$curl https://storage-googleapis.proxy.ustclug.org/git-repo-downloads/repo > repo$chmod a+x repo$cd ..$cd aosp
下载repo工具及初始化repo:
$sudo apt-get install phablet-tools$git config --global user.name "Your Name" $git config --global user.email "you@example.com"$repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.3_r1
同步源码树:
(此过程要等待很长时间,我电脑平均3MiB的下载速度,大概需要2个小时,可以把电脑扔一边去玩耍了)
$repo sync
1.5编译源码
此过程可以忽略,但为了确保当前环境没有问题,最好还是编译一下比较保险,命令如下:$cd /aosp/build$./envsetup.sh$lunch#根据具体要求选择参数, 模拟器为1$sudo make -j4
$emulator #确保编译没问题可能出现的问题:
1.如果./envsetup.sh 命令无法执行,是因为此文件的权限未设置,可以使用chmod +x envsetup.sh修改权限,然后再运行该文件
2.编译的时候可能会出现lunch未安装的错误,原因是"./envsetup.sh"未执行成功,可以使用“source build/envsetup.sh”,然后再使用lunch命令就可以了
(又是很长时间,等待ing)
2、下载TaintDroid源码
直接将下面的代码复制到Android/.repo/local_manifests/local_manifest.xml中:
<manifest> <remote name="github" fetch="git://github.com"/> <remove-project name="platform/dalvik"/> <project path="dalvik" remote="github" name="TaintDroid/android_platform_dalvik" revision="taintdroid-4.3_r1"/> <remove-project name="platform/libcore"/> <project path="libcore" remote="github" name="TaintDroid/android_platform_libcore" revision="taintdroid-4.3_r1"/> <remove-project name="platform/frameworks/base"/> <project path="frameworks/base" remote="github" name="TaintDroid/android_platform_frameworks_base" revision="taintdroid-4.3_r1"/> <remove-project name="platform/frameworks/native"/> <project path="frameworks/native" remote="github" name="TaintDroid/android_platform_frameworks_native" revision="taintdroid-4.3_r1"/> <remove-project name="platform/frameworks/opt/telephony"/> <project path="frameworks/opt/telephony" remote="github" name="TaintDroid/android_platform_frameworks_opt_telephony" revision="taintdroid-4.3_r1"/> <remove-project name="platform/system/vold"/> <project path="system/vold" remote="github" name="TaintDroid/android_platform_system_vold" revision="taintdroid-4.3_r1"/> <remove-project name="platform/system/core"/> <project path="system/core" remote="github" name="TaintDroid/android_platform_system_core" revision="taintdroid-4.3_r1"/> <remove-project name="device/samsung/manta"/> <project path="device/samsung/manta" remote="github" name="TaintDroid/device_samsung_manta" revision="taintdroid-4.3_r1"/> <remove-project name="device/samsung/tuna"/> <project path="device/samsung/tuna" remote="github" name="TaintDroid/android_device_samsung_tuna" revision="taintdroid-4.3_r1"/> <project path="packages/apps/TaintDroidNotify" remote="github" name="TaintDroid/android_platform_packages_apps_TaintDroidNotify" revision="taintdroid-4.3_r1"/></manifest>
注意:因为本人使用模拟器运行环境,因此没有涉及真机部分,若读者需要真机测试请参照http://www.appanalysis.org/download.html中的step3.
$cd aosp$repo sync --force-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'(注:"repo foral ...." 这条命令凭运气执行吧,经常会显示连接超时,看你所在环境连接github的情况了,我这环境时好时坏,也是够了,必须所有的taintdroid-4.3_r1都显示“already up-to-date”才可以;最后没办法又配置的代理,详细方法见http://www.freebuf.com/sectool/123931.html)
3、编译TaintDroid
在TaintDroid根目录下新建一个buildspec.mk文件,写入编译TaintDroid所需要的参数,命令如下:$ cd ~/Android/aosp $ sudo 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/aosp/build/target/product/core.mk文件并且把TaintDroidNotify添加到PRODUCT_PACKAGES中(注意添加到第一个出现的PRODUCT_PACKAGES中,对比以下代码添加):
$RODUCT_PACKAGES += \ BasicDreams \ ... voip-common \ TaintDroidNotify下面就可以开始编译Taintdroid了:
$ . build/envsetup.sh $ lunch 1 # 选择自己对应的设备 $ make clean $ sudo make -j4
4、Taintdroid应用于Emulator
其实这一步很简单,在~/Android/aosp/out/target/product/generic中找到system.img镜像文件,将其复制出来,并用此镜像文件替换掉sdk中的镜像文件,sdk镜像文件路径大概是sdk/system-images/android-18/armeabi-v7a/,替换掉此路径下的system.img文件,启动AVD后就可以使用Taintdroid了!注意:api一定要调用18的,因为我们编译生成的system.image的接口是18的。
0 0
- TaintDroid部署过程详解
- Android动态污点分析工具TaintDroid部署指南 - FloraF
- storm集群部署和配置过程详解
- linux下Redis服务器部署过程详解
- storm集群部署和配置过程详解
- storm集群部署和配置过程详解
- TaintDroid介绍
- 通过腾讯shuffle部署对shuffle过程进行详解
- 通过腾讯shuffle部署对shuffle过程进行详解
- taintdroid初有进展
- taintdroid-4.3_r1下载
- 操作系统部署测试过程
- 部署clr存储过程
- 短信猫部署过程
- Hadoop安装部署过程
- HBASE安装部署过程
- pNFS系统部署过程
- HBase安装部署过程
- git学习(2) 远程连接github
- jms中消息接收的实现原理
- 私人整理mysql笔记
- ES6/ES2015核心内容
- linux 手动源码安装lnmp(亲测)
- TaintDroid部署过程详解
- VS编译器中加入QT库
- 【DVB】【法国】法国NRJ进行超高清/HDR数字地面电视测试
- poj Pots(BFS)(路径记录)(模拟)
- 眼图——概念与测量(摘记)
- hbuider 集成自己的插件后不能用chrome调试的解决方案
- 初写Cocos2dX Box demo
- py2exe安装及使用; 复制cmd中的内容小记
- 从cef-chromium源码中寻找网页链接点击事件