简单实例分析objdump反汇编用法
2022/4/28 20:12:42
本文主要是介绍简单实例分析objdump反汇编用法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。
1. 准备代码hello.c
1 #include <linux/module.h> 2 #include <linux/init.h> 3 #include <linux/kernel.h> 4 5 MODULE_LICENSE("GPL"); 6 MODULE_AUTHOR("baoli"); 7 MODULE_DESCRIPTION("hello world module"); 8 9 static int __init hello_init(void) 10 { 11 int * p = 0; 12 printk(KERN_WARNING "hello world.\n"); 13 *p = 1; 14 15 return 0; 16 } 17 18 static void __exit hello_exit(void) 19 { 20 printk(KERN_WARNING "hello exit!\n"); 21 } 22 23 module_init(hello_init); 24 module_exit(hello_exit);
2. 反汇编分析
执行:objdump -d hello.o > assemble.txt
汇编代码如下:
1 hello.o: file format elf64-x86-64 2 3 Disassembly of section .init.text: 4 5 0000000000000000 <init_module>: 6 MODULE_LICENSE("GPL"); 7 MODULE_AUTHOR("baoli"); 8 MODULE_DESCRIPTION("hello world module"); 9 10 static int __init hello_init(void) 11 { 12 0: 55 push %rbp 13 1: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 14 8: 48 89 e5 mov %rsp,%rbp 15 b: e8 00 00 00 00 callq 10 <init_module+0x10> 16 10: c7 04 25 00 00 00 00 movl $0x1,0x0 17 17: 01 00 00 00 18 1b: 31 c0 xor %eax,%eax 19 1d: 5d pop %rbp 20 1e: c3 retq 21 22 Disassembly of section .exit.text: 23 24 0000000000000000 <cleanup_module>: 25 0: 55 push %rbp 26 1: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 27 8: 48 89 e5 mov %rsp,%rbp 28 b: e8 00 00 00 00 callq 10 <cleanup_module+0x10> 29 10: 5d pop %rbp 30 11: c3 retq
3. objdump总结
objdump -D -b binary -m i386 a.bin
-D表示对全部文件进行反汇编,-b表示二进制,-m表示指令集架构,a.bin就是我们要反汇编的二进制文件
objdump -m可以查看更多支持的指令集架构,如i386:x86-64,i8086等
1)objdump -d:反汇编目标文件中包含的可执行指令。
2)如果需要混合显示源码和汇编代码,需要加上-S选项,并且在编译目标文件时加上-g。
3)如果在编译目标文件时没有加-g选项,则-S相当于-d。
4)-S选项生成的混合代码,有时文件结构混乱,可读性较差。推荐使用-d选项,直接阅读汇编代码。
这篇关于简单实例分析objdump反汇编用法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?