본문 바로가기

Programming

Android rootkit developing environment


LGUnitedMobileDriver_S4981MAN38AP22_ML_WHQL_Ver_3.8.1.zip


안드로이드 rootkit 개발환경 구축과정 요약


// 여기는 윈도우즈에 구축

0. 루팅된 안드로이드폰 준비.

1. 폰에 해당하는 디바이스 드라이버 설치(LGUnitedMobileDriver_S4981MAN38AP22_ML_WHQL_Ver_3.8.1.exe)

2. ADB 설치를 위해 안드로이드 SDK 설치.

3. 폰에서 ADB 접속이 되도록 USB 디버깅을 활성화시켜놓아야함.


// 여기부터는 리눅스에 구축

1. 안드로이드 NDK 툴체인 다운로드 http://developer.android.com/tools/sdk/ndk/index.html

2. 해당 폰에 대한 커널소스 다운로드 https://wws.lg.com/global/support/opensource/opensourceList?types=NAME&search=lu6500

3. 폰에대한 커널소스 컴파일(다운로드한 소스상의 README 참조)

4. 폰의 커널소스디렉토리에서 make prepare && make modules_prepare 

5. 4에서 CROSS_COMPILE 환경변수가 NDK ARM 크로스컴파일러의 경로를 가리켜야함

(export ARCH=arm && export TARGET_PRODUCT=bssq && export TARGET_MODEL=lu6500)

(export CROSS_COMPILE=/var/www/android/ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-)

make lu6500_android_defconfig


// 이제 루트킷 개발할 툴체인이 모두 준비됨

1. Makefile 작성(-fno-pic 옵션을 줘야함)


root@declspec-desktop:/var/www/android/rootkit# cat Makefile 

obj-m += AndroidKeyLogger.o

CROSS_COMPILE = /var/www/android/ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-

EXTRA_CFLAGS=-fno-pic

KERNEL_DIR ?= /var/www/android/kernel


all:

make EXTRA_CFLAGS=-fno-pic -C $(KERNEL_DIR) M=$(PWD) modules 

rm -rf *.c~

rm -rf *.mod*

rm -rf *.o

clean:

make -C $(KERNEL_DIR) M=$(PWD) clean


(이때 TAB 구분 잘해줘야함.)


2. 환경변수 세팅

export ARCH=arm && export TARGET_PRODUCT=bssq && export TARGET_MODEL=lu6500 && CROSS_COMPILE=/var/www/android/ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-


3. 이제부터 AndroidKeyLogger.c 소스코드 준비해놓고 make 하면됨!





* 참고로 일반 바이너리 arm 크로스컴파일을 위해서는 크로스컴파일러를 쓸때

include 경로와 lib 경로를 잡아주고, 그 외에도 crt~~.o 오브젝트 파일을 링커가 찾을수 있게 해줘야함.

아래처럼 설정했음


// object 파일들은 걍 현재경로에 복사해놓고

root@declspec-desktop:/var/www/android/app# ls

a    compile.sh  crtbeginS.o  crtbegin_dynamic.o  crtbegin_static.o  crtendS.o         crtend_so.o

a.c  crtbegin.o  crtbeginT.o  crtbegin_so.o       crtend.o           crtend_android.o


// include, lib 경로들 잘 찾아줘야함. 

root@declspec-desktop:/var/www/android/app# cat compile.sh 

/var/www/android/ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc-4.4.3 -I/var/www/android/ndk/android-ndk-r8e/platforms/android-3/arch-arm/usr/include -L/var/www/android/ndk/android-ndk-r8e/platforms/android-8/arch-arm/usr/lib -static -o a a.c



'Programming' 카테고리의 다른 글

netcat proxy  (1) 2013.04.24
Android Rootkit  (0) 2013.04.24
fork and exec.c  (0) 2013.03.19
sniffer.c  (0) 2013.03.19
proxy.c  (0) 2013.03.19