libxx.a的反汇编

前提是知道 libxxx.a 是用什么平台编译出来的,就采用相应的工具链来操作:

(1) ar -x libxxx.a 命令可将 .a 文件生成若干个.o 文件

(2) objdump -D -S yyy.o 把 yyy.o 反汇编成 asm 汇编文件

具体命令的使用:


nm libxxx.a 可查看 .a 所依赖的库文件及源码中的函数接口名称

objdump -S libxxx.a 反汇编成汇编语言 但与平台严重相关, 有可能命令无法识别是什么平台的

ar -x libxxx.a 命令可将 .a 文件生成若干个.o 文件

  创建一个库,请输入:    ar -v -q lib.a strlen.o strcpy.o
  显示库的目录,请输入:    ar -v -t lib.a
  替换或添加新成员到库中,请输入: ar -v -r lib.a strlen.o strcat.o
  指定在何处插入新成员,请输入:     ar -v -r -b strlen.o lib.a strcmp.o
  更新一个已经更改过的成员,请输入: ar -v -r -u lib.a strcpy.o
  更改库成员的顺序,请输入:   ar -v -m -a strcmp.o lib.a strcat.o strcpy.o
  解压缩库成员,请输入:    ar -v -x lib.a strcat.o strcpy.o
  解压缩并重命名一个成员,请输入: ar -p lib.a strcpy.o >stringcopy.o
  删除一个成员,请输入:    ar -v -d lib.a strlen.o
  从多个用 ld 命令创建的共享模块中创建一个压缩文档库,请输入: ar -r -v libshr.a shrsub.o shrsub2.o shrsub3.o ...
  编译并链接使用 libshr.a 压缩文档库的 main 程序,请使用以下命令:cc -o main main.c -L/u/sharedlib -lshr
  列出 lib.a 的内容(忽略任何 32 位目标文件),请输入:   ar -X64 -t -v lib.a
  从 lib.a 解压缩所有 32 位的目标文件,请输入:     ar -X32 -x lib.a
  列出 lib.a 中的所有文件,无论是 32 位、64 位或非对象,请输入: ar -X32_64 -t -v lib.a

可以用“objdump -D”命令来反编译 .o 文件, 看你在编译c/c++用的-g级数, 如果-g3编译的,用objdump返汇编出来可以看到部分c/c++代码

Usage: objdump

Display information from object .
At least one of the following switches must be given:

-a, –archive-headers Display archive header information

-f, –file-headers Display the contents of the overall file header

-p, –private-headers Display object format specific file header contents

-h, –[section-]headers Display the contents of the section headers

-x, –all-headers Display the contents of all headers

-d, –disassemble Display assembler contents of executable sections

-D, –disassemble-all Display assembler contents of all sections

-S, –source Intermix source code with disassembly

-s, –full-contents Display the full contents of all sections requested

-g, –debugging Display debug information in object file

-e, –debugging-tags Display debug information using ctags style

-G, –stabs Display (in raw form) any STABS info in the file

-W, –dwarf Display DWARF info in the file

-t, –syms Display the contents of the symbol table(s)

-T, –dynamic-syms Display the contents of the dynamic symbol table

-r, –reloc Display the relocation entries in the file

-R, –dynamic-reloc Display the dynamic relocation entries in the file

-v, –version Display this program’s version number

-i, –info List object formats and architectures supported

-H, –help