Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
240 lines (183 sloc) 7.09 KB
Android_TaintDroid
#####################
#########
Abkürzungen
AOSP = Android Open Source Project
1. Get Android (android-2.1_r2.1p)
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.1_r2.1p
$ repo sync
$ source build/envsetup.sh
$ lunch full-eng
######################
Orginal Kurzanleitung
######################
##Step1
########
% mkdir -p ~/tdroid/tdroid-2.1_r2.1p
% cd ~/tdroid/tdroid-2.1_r2.1p
% repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.1_r2.1p
% repo sync
... wait
#OK
% . ./build/envsetup.sh
% lunch 1
% make -j4
... wait
% emulator
... ensure the build works
##Step2
get local_manifest.xml and place it in ~/tdroid/tdroid-2.1_r2.1p/.repo
% cd ~/tdroid/tdroid-2.1_r2.1p
% repo sync
% cd dalvik
% git branch --track taintdroid-2.1_r2.1p github/taintdroid-2.1_r2.1p
% git checkout taintdroid-2.1_r2.1p
% git pull # (just to be safe)
% cd ..
% cd frameworks/base
% git branch --track taintdroid-2.1_r2.1p github/taintdroid-2.1_r2.1p
% git checkout taintdroid-2.1_r2.1p
% git pull # (just to be safe)
##Step 2.1: Enable ext2 SDcard support
###########
FUNKTIONIERT NICHT -> Deswegen per Hand
##% cd system/core
##% git apply -v #<diff-file>
##git apply -v ../../../download_TaintDroid/SD_Card.diff
-> vold/volmgr.c
-> vold/volmgr_ext3.c
##Step 3: Obtain a kernel with YAFFS2 XATTR support
###########
##Step 3a (easier option): Get a prebuilt kernel
###########
% cd ~
% wget http://www.appanalysis.org/files/nexusone-xattr-kernel-2.6.29.zip
##Step 3b (harder option): Build a kernel with YAFFS2 XATTR support
###########
If you are building a kernel for an emulator, use "kernel/common.git".
% cd ~
% wget http://www.appanalysis.org/files/yaffs_xattr.patch
...
% cd ~/tdroid/tdroid-2.1_r2.1p
% git clone git://android.git.kernel.org/kernel/common.git
% cd common
% git branch --track android-gldfish-2.6.29 origin/archive/android-gldfish-2.6.29
% git checkout android-gldfish-2.6.29
% git pull # (just to be safe)
% patch -p1 < ../../download_TaintDroid/yaffs_xattr.patch
...
% cd ~/tdroid/tdroid-2.1_r2.1p
% . ./build/envsetup.sh
% lunch 1 # (lunch 1 is fine for now)
...
% cd common
% export ARCH=arm
% export SUBARCH=arm
% export CROSS_COMPILE=arm-eabi-
##Step 3b2 -> get config File von emulator (DOCH NICHT!!)
% make goldfish_defconfig
% make oldconfig
% make menuconfig
# ... verify YAFFS and EXT2 with XATTR and SECURITY support
(Mit / kann man suchen!!!!)
EXT2: File systems -> Second extended fs support
->Ext2 extended attributes
->Ext2 Security Labels
YAFFS: File systems -> Miscellaneous filesystems
->YAFFS extemded attributes
->YAFFS Security Lebels
% make -j4
% cp arch/arm/boot/zImage ../../download_TaintDroid/
drivers/net/wireless/bcm4329/bcm4329.ko -> braucht man für Emulator nicht
##Step 4: Setup the vendor build scripts
###########
-> Wird übersprungen, weil wir das für den Emulator nicht brauchen
##Step 5: Build TaintDroid
##########
% cd ~/tdroid/tdroid-2.1_r2.1p
% edit/create 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 addition output for tracking JNI usage (not recommended)
#TAINT_JNI_LOG := true
% . ./build/envsetup.sh
% lunch 1 # da wir für emulator compilieren
% make clean
% make -j4
##Step 6: Flash the device
##########
Von Quelle: [2]
Next step is to start the emulator with the compiled kernel and TaintDroid system image.
% emulator -kernel ../download_TaintDroid/zImage -image out/target/product/generic/system.img &
//HL: Warum habe ich hier -system stehen und nicht -image wie in den Anleitungen (2011-06-07)
While booting up, issue:
% adb shell setprop dalvik.vm.execution-mode int:portable
When emulator has booted up:
% wget http://www.appanalysis.org/files/TaintDroidNotify.apk
% adb install ../download_TaintDroid/TaintDroidNotify.apk
....
##Step 7-9
##Step 8: Format the SDcoard as ext2
- SDCard ueber mksdcard [3] erstellen und dann den Emulator mit -sdcard <file> starten
- zu finden:
./sdk/emulator/mksdcard
./out/host/linux-x86/bin/mksdcard
./out/host/linux-x86/obj/EXECUTABLES/mksdcard_intermediates/mksdcard
- SDCard erzeugen
hanno@odin:~/Uni/Master-Arbeit.big/workspace_taintDroid.source2.1_r2.1p/out/host/linux-x86/bin$ ./mksdcard -l myTdCardFAT 32M myTdCardFATFile.img
##SD-Card per Hand Mounten:
sudo mount -o loop ~/loop_image.img /media/loop_mount
###########
# Problems:
###########
#P1: wrong "emulator"
Test with
$which emulator
where the emulator is that you call. It is possible, that you call the emulator from a normal sdk.
The correct Path should be:
/home/hanno/Uni/Master-Arbeit.big/workspace_taintDroid.source2.1_r2.1p/out/host/linux-x86/bin:
If not, you have to manipulate your PATH-Variable. My Problem is, that the PATH to the sdk-tools is in front of the PATH for the android Building, that is a Problem.
#S1: local Solution:
echo PATH="/home/hanno/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/hanno/Uni/Master-Arbeit.big/workspace_taintDroid.source2.1_r2.1p/out/host/linux-x86/bin:/home/hanno/Uni/Master-Arbeit.big/workspace_taintDroid.source2.1_r2.1p/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:/home/hanno/Uni/Master-Arbeit.big/workspace_taintDroid.source2.1_r2.1p/development/emulator/qtools:/home/hanno/Uni/Master-Arbeit.big/workspace_taintDroid.source2.1_r2.1p/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:/home/hanno/Uni/Master-Arbeit.big/workspace_taintDroid.source2.1_r2.1p/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin"
#############
#P2: no keys in emulator
#S2: direkt adress the correct emulator
./out/host/linux-x86/bin/emulator -kernel ../download_TaintDroid/zImage -image out/target/pruct/generic/system.img -sdcard myTdCardFATFile.img
#############
#P3: SD-Card Ext2 bzw 3 formatieren
$ mksdcard -l mySdCardFAT 32M mySdCardFATFile.img
$ cp mySdCardFATFile.img myTdCardEXTFile.img
$ sudo mke2fs myTdCardEXTFile.img
mke2fs 1.41.12 (17-May-2010)
myTdCardEXTFile.img ist kein spezielles Block-Gerät.
Trotzdem fortsetzen? (j,n) j
Dateisystem-Label=
OS-Typ: Linux
Blockgröße=1024 (log=0)
Fragmentgröße=1024 (log=0)
Stride=0 Blöcke, Stripebreite=0 Blöcke
8192 Inodes, 32768 Blöcke
1638 Blöcke (5.00%) reserviert für den Superuser
Erster Datenblock=1
Maximale Dateisystem-Blöcke=33554432
4 Blockgruppen
8192 Blöcke pro Gruppe, 8192 Fragmente pro Gruppe
2048 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken:
8193, 24577
Schreibe Inode-Tabellen: erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt
Das Dateisystem wird automatisch nach jeweils 28 Einhäng-Vorgängen bzw.
alle 180 Tage überprüft, je nachdem, was zuerst eintritt. Dies kann durch
tune2fs -c oder -i geändert werden.
#####################
Quellen:
[1] http://appanalysis.org/download.html
[2] https://gist.github.com/887998 (Anleitung für TaintDroid auf Emulator)
[3] http://developer.android.com/guide/developing/tools/mksdcard.html