赞
踩
1、objdump
- 简介: objdump是gcc工具,用来查看编译后目标文件的组成,objdump命令是Linux下的反汇编目标文件或者可执行文件的命令。用于反汇编ELF格式的文件的内容。
- 目标: .o文件、可执行文件、核心转储文件(core dump)、.so文件(动态链接库都属于ELF文件
下面以可执行文件test为例详细介绍:
前期工作:
a、新建test.c
- #include<stdio.h>
-
- int a=1;
-
- int main()
-
- {
-
- printf("a is %d.",a);
-
- return 0;
-
- }
b、分别生成test.o和test文件(以下命令在终端.c文件路径执行)
gcc -c test.c
(编译test.c文件,成功时输出目标文件test.o)
gcc -o test test.o
(将test.o连接成可执行的二进制文件test)
./test
(运行可执行文件test)
c、利用objdump命令分别查看test.o和test
常用参数如下:
objdump -f test
显示test的文件头信息
objdump -d test
反汇编test中的需要执行指令的哪些section
objdump -D test
与-d类似,但反汇编test中的所有section
objdump -h test
显示test的Section Header信息
objdump -x test
显示test的全部Header信息
objdump -s test
除了显示test的全部Header信息,还显示他们对应的十六进制文件代码
d、.c文件编程成so文件
gcc test.c -fPIC -shared -o libtest.so
e、so文件反编译
objdump -d libtest.so > libtest.txt
- 如果要在电脑上反汇编 android 中的 so,如libmorpho_hyperlapse_jni_v6.so,可使用 aarch64-linux-android-objdump,命令位于rom source code 下的/rom_dugl/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-gdb,使用方式如下:
- (该目录下还提供了 for arm 的 readelf、gcc 等工具)。
$./aarch64-linux-android-objdump -d -S '/home/yingkun_che/桌面/objdump/libmorpho_hyperlapse_jni_v6.so' > '/home/yingkun_che/桌面/objdump/libmorpho_hyperlapse_jni_v6.txt'
注:-S 表示关联 source code 并一起输出。
1 简介
- android 程序在 studio等工具中编译时,生成的 apk 文件中包含一个classes.dex 的文件,它是 dex 格式的,android 只认识 dex 格式,不认识 class 格式。
-
- android 程序中如果引用了其它的 jar 文件,studio编译时,位于/build/intermediates/pre-dexed/debug/aaa.jar。 新的 jar 文件内部包含一个 .dex 的文件,即 class 格式的文件已经被 android 编译成 dex 格式的文件了。
- dexdump 命令是专用于查看 dex 格式文件(以.jar结尾)内容的工具,在 device 中使用, 命令位于 /system/bin/dexdump。
-
- 电脑也可以用dexdump命令,位于android-sdk-linux/build-tools/28.0.3/dexdump
2 常用参数
-d后面可以跟 .dex、.jar、.apk文件
连接device使用:
$ adb shell dexdump -d system/app/Duo/Duo.apk > duo_dump.log
电脑 本地使用:
$ dexdump -d Generated_1098644608.jar
$ dexdump -d Duo.apk > duo_dump.log
#没有oat优化时使用
1 简介
- ART推出后,device 中的 jar 文件(内容是 dex 格式的,只不过以jar 结尾)会被编译成 .odex 文件(oat 格式)。
- oatdump 命令是专用于查看 oat 格式文件(以.odex结尾)内容的工具。它只能在 device 中使用,命令位于 /system/bin/oatdump。
2 相关知识
参考:http://blog.csdn.net/asmcvc/article/details/40397561
odex vdex art文件介绍【笔记】odex , vdex ,art 文件区别_高大达的博客-CSDN博客_odex vdex
3 常用参数
$ adb shell oatdump --oat-file='/system/priv-app/HTCZero/oat/arm/HTCZero.odex' > HTCZero.txt
$ adb shell oatdump --oat-file=/data/dalvik-cache/arm/system@priv-app@HTCZero@HTCZero.apk@classes.dex
$ adb shell oatdump --oat-file=/system/framework/arm64/boot.oat >> boot.oat.dump.txt
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。