2014-11-03 199 views
1

正如標題所暗示的那樣..我在成功編譯LiME(Linux內存提取器)並將其加載到Android模擬器或物理設備上的過程中掙扎不已。編譯我使用arm-linux-androideabi-4.6,我目前在x64 14.04 Ubuntu上。 另外:編譯Android Kernel +與LiME交叉編譯的問題

[email protected]:~$ uname -a 
Linux unknown-A15 3.13.0-39-generiC#66-Ubuntu SMP Tue Oct 28 13:30:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 

因此,爲了成功這個我按照從各個方面引導,網上沒有運氣..(這可能是由於DIFF NDK/SDK /紫光發行versios或者只是我的經驗不足的方向) 我已閱讀的導遊是那些(加上2名導遊,但SO不會允許我發佈更多的鏈接。如果需要,我可以把它們發佈評論以後):

  1. https://code.google.com/p/volatility/wiki/AndroidMemoryForensics
  2. http://sgros-students.blogspot.ca/2014/04/lime.html

我主要關注第1指南,但是在嘗試交叉編譯內核時遇到了我的第一個問題。

所以,首先(在已下載的金魚內核源代碼)我這個添加到/ etc/profile文件,使事情變得更簡單:

export CCOMPILER=~/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi- 
source /etc/profile 

然後我做的:

make clean 
make mrproper 
cp path/to/exported_from_emulator_config . 
mv config .config 
# Add the 3 lines needed "CONFIG_MODULES=y", "CONFIG_MODULES_UNLOAD=y", "CONFIG_MODULES_FORCE_UNLOAD=y" 
sudo vim .config 

現在..我必須實際製作內核。但是,在線指南上建議的所有內容都會失敗。我曾嘗試:

make ARCH=arm CROSS_COMPILE=arm-eCross-eabi- EXTRA_CFLAGS=-fno-pic modules_prepare 
make CROSS_COMPILE=arm-eCross-eabi- EXTRA_CFLAGS=-fno-pic modules_prepare 
make CROSS_COMPILE=arm-eCross-eabi- modules 

但顯然他們都失敗了正在二號導遊,我張貼在這裏提到的原因。所以......我在Makefile中修改了第二個指南中的那些人(只是爲了避免給出ARCH作爲make參數)。 所以我能夠以某種方式繞過所有未來的錯誤,並最終編譯如下:

make CROSS_COMPILE=$CCOMPILER 

注1:一個錯誤我一直得到的是這樣的:

/home/unknown/android-source/scripts/mksysmap: line 44: ~/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-nm: No such file or directory 
make: *** [vmlinux] Error 1 

因此,我相信沒有考慮到3模塊加載的內核選項。但這只是一個假設,因爲我從未構建過Linux內核。

注2:我必須注意到,我相信在編譯內核時,.confif正在被覆蓋。我看到這個輸出相當頻繁:

.config:120:warning: override: reassigning to symbol MODULES 

我還試圖運行make並提示它或menuconfig的時候編輯的配置。然而,沒有運氣。

幸運的是,我設法通過調用作出這樣的時候乾脆把確切的路徑到Android eabis繞過這個錯誤:

make CROSS_COMPILE=~/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi- 

最後我管理有一個編譯內核:

... 
SYSMAP .tmp_System.map 
OBJCOPY arch/arm/boot/Image 
Kernel: arch/arm/boot/Image is ready 
AS  arch/arm/boot/compressed/head.o 
GZIP arch/arm/boot/compressed/piggy.gz 
AS  arch/arm/boot/compressed/piggy.o 
CC  arch/arm/boot/compressed/misc.o 
LD  arch/arm/boot/compressed/vmlinux 
OBJCOPY arch/arm/boot/zImage 
Kernel: arch/arm/boot/zImage is ready 

所以現在我應該嘗試與LiME交叉編譯!我不得不說,我試着編譯它並玩Makefile,但每次我都得到相同的錯誤。我已經使用了由Android內核成功交叉編譯LiME的人們(在改變內核和編譯器路徑的同時)在線提供的每個Makefile,但沒有運氣。所以錯誤是:

使ARCH = arm CROSS_COMPILE =〜/ android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi- -C〜 /機器人源M = /家庭/未知/石灰取證/ SRC模塊 化妝[1]:進入目錄/home/unknown/android-source' Building modules, stage 2. MODPOST 1 modules WARNING: "vfs_write" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "filp_close" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "filp_open" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "sock_sendmsg" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "memset" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "sock_setsockopt" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "sock_create_kern" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "param_get_int" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "param_set_int" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "param_get_charp" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "param_set_charp" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "iomem_resource" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "sscanf" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "strcmp" [/home/unknown/lime-forensics/src/lime.ko] undefined! WARNING: "__memzero" [/home/unknown/lime-forensics/src/lime.ko] undefined! CC /home/unknown/lime-forensics/src/lime.mod.o /home/unknown/lime-forensics/src/lime.mod.c:8:1: error: variable '__this_module' has initializer but incomplete type /home/unknown/lime-forensics/src/lime.mod.c:9:2: error: unknown field 'name' specified in initializer /home/unknown/lime-forensics/src/lime.mod.c:9:2: warning: excess elements in struct initializer [enabled by default] /home/unknown/lime-forensics/src/lime.mod.c:9:2: warning: (near initialization for '__this_module') [enabled by default] /home/unknown/lime-forensics/src/lime.mod.c:10:2: error: unknown field 'init' specified in initializer /home/unknown/lime-forensics/src/lime.mod.c:10:2: warning: excess elements in struct initializer [enabled by default] /home/unknown/lime-forensics/src/lime.mod.c:10:2: warning: (near initialization for '__this_module') [enabled by default] /home/unknown/lime-forensics/src/lime.mod.c:14:2: error: unknown field 'arch' specified in initializer /home/unknown/lime-forensics/src/lime.mod.c:14:10: error: 'MODULE_ARCH_INIT' undeclared here (not in a function) /home/unknown/lime-forensics/src/lime.mod.c:14:2: warning: excess elements in struct initializer [enabled by default] /home/unknown/lime-forensics/src/lime.mod.c:14:2: warning: (near initialization for '__this_module') [enabled by default] make[2]: *** [/home/unknown/lime-forensics/src/lime.mod.o] Error 1 make[1]: *** [modules] Error 2 make[1]: Leaving directory /家/未知/機器人源」 化妝:*** [默認]錯誤2

在搜索了一些關於這些錯誤的信息之後,我得出了內核無效的結論或者與LiME交叉編譯的結論。這讓我覺得.config正如我之前所說的那樣不會被make所考慮。

我真的不明白這個過程的低級別的東西,所以它可能是任何東西。我真的很感謝任何人會花時間閱讀我的帖子..我知道它的巨大:/

任何建議,意見非常歡迎!如果我需要更多信息,或者需要修復某些內容,請告訴我。

謝謝大家:)

P.S.對不起,使用愚蠢的標籤,但SO不會允許我使用不存在的標籤,這將是更合適的,如「linux內存提取器」等。

回答

2

好吧我在LiME的開發者Joe幫助我之後想出了它。

首先,爲了避免你的內核的.config覆蓋,當你做你應該做的:

make ARCH=arm CROSS_COMPILE=path/to/toolchains/bin goldfish_defconfig 
# then run menuconfig and enable all kernel module loading options and save with ESC 
make ARCH=arm CROSS_COMPILE=path/to/toolchains/bin menuconfig 
# then simply compile 
make ARCH=arm CROSS_COMPILE=path/to/toolchains/bin 

最後,如果你有,你可以補充一點:

EXTRA_CFLAGS=-fno-pic 

當試圖交叉編譯LiME!

希望這可以幫助別人!

P.S:我使用了android ndk-r8中的eabis。

+0

你是什麼意思「EXTRA_CFLAGS = -fno-pic」? ---你的工具鏈路徑是什麼? – 2015-09-15 08:23:49