제목에서 알 수 있듯이, 나는 LiME (Linux Memory Extractor)를 성공적으로 컴파일하고 Android 에뮬레이터 또는 물리적 장치에로드하는 데 어려움을 겪고 있습니다. 컴파일하려면 arm-linux-androideabi-4.6을 사용하고 현재 x64 14.04 우분투를 사용 중입니다. 또한 :Android 커널을 컴파일하는 문제 + 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
그래서,이 성공하기 위해 나는 온라인 운없이 .. (이 때문에 사랑하는 NDK/SDK/유니스 배포판의 versios 또는 그냥 내 경험 부족에 될 수 있다고 관한 모든 가이드의 지시를 따랐다) 내가 읽은 가이드) 필요한 경우 나중에에 대한 코멘트에서 그들을 게시 할 수 있습니다 .. 그 (플러스 2 개 가이드이지만 SO 좀 더 링크를 게시 할 수 없습니다 :
- https://code.google.com/p/volatility/wiki/AndroidMemoryForensics
- http://sgros-students.blogspot.ca/2014/04/lime.html
주로 첫 번째 가이드에 초점을 맞추었지만 커널을 크로스 컴파일하려고 할 때 첫 번째 문제에 직면했습니다. (금붕어 커널 소스를 다운로드 한 후)
그래서 먼저 내가 일을 간단하게의/etc/프로필이 추가
다음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
을 이제 .. I 실제로 커널을 만들어야합니다. 그러나 온라인 가이드에서 제안 된 모든 것은 실패합니다.
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
을하지만 분명히 그들은 모두 내가 여기에 게시 2 가이드에 언급되고있는 이유로 실패 : 나는 노력했다. 그래서 .. 제 2 가이드의 사람들이 제안하는 메이크 파일을 변경했습니다 (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
, 나는 믿는다 MODULE LOADING에 대한 3 가지 커널 옵션이 고려 중에 있지 않음을 나타냅니다. 하지만 전에는 리눅스 커널을 만들지 않았기 때문에 그것은 단지 가정입니다.
참고 2 : 커널을 컴파일하는 동안 .confif가 덮어 쓰여지고 있다고 생각합니다. 나는 꽤 자주이 출력을보고 오전 : 나는 또한하고 그것을 위해 나 menuconfig를 함께 프롬프트을 실행할 때 구성을 편집 시도
.config:120:warning: override: reassigning to symbol MODULES
. 아니 행운 그러나.마지막으로
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
을
는 다행히,이 같은 만들 호출 할 때 단순히 안드로이드 eabis에 정확한 경로를 넣어이 오류를 우회하는 관리
이제 LiME와 크로스 컴파일을 시도해야합니다! 나는 그것을 컴파일하고 Makefile로 놀아 보려고했지만, 같은 오류가 발생할 때마다 말해야 만한다. 컴파일 된 LiME와 안드로이드 커널 (커널과 컴파일러 경로를 변경하는 동안)을 성공적으로 교차시킨 사람들이 온라인으로 제공 한 모든 Makefile을 사용했지만 행운은 없습니다. 오류는 다음과 같습니다 :
ARCH = arm CROSS_COMPILE = ~/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-/안드로이드 소스 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. 어리석은 태그를 사용하는 것에 대해 미안하지만, SO는 "linux-memory-extractor"처럼 더 적절할 수있는 존재하지 않는 태그를 사용하지 못하게합니다.
"EXTRA_CFLAGS = -fno-pic"의 의미는 무엇입니까? --- 귀하의 툴체인 경로는 무엇입니까? –