日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实例分析objdump反汇编用法

發布時間:2023/12/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实例分析objdump反汇编用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Ubuntu版本:ubuntu-gnome-16.04-desktop-amd64,gnome版 -----------------------------------------------------------------------------------

objdump命令是用查看目標文件或者可執行的目標文件的構成的gcc工具。
1. 準備代碼hello.c #include <linux/module.h> #include <linux/init.h> #include <linux/kernel.h>MODULE_LICENSE("GPL"); MODULE_AUTHOR("baoli"); MODULE_DESCRIPTION("hello world module");static int __init hello_init(void) {int * p = 0;printk(KERN_WARNING "hello world.\n");*p = 1;return 0; }static void __exit hello_exit(void) {printk(KERN_WARNING "hello exit!\n"); }module_init(hello_init); module_exit(hello_exit);


2. 編譯&安裝模塊 編譯成ko模塊后,執行isnmod hello.ko,顯示killed安裝失敗。 用dmesg內核日志,可以看到內核跑出了Oops異常: 給出了原因:不能訪問NULL指針 錯誤發生位置:hello_init+0x10,即hello_init偏移0x10處,可以反匯編查看此處對應的具體指令。

3. 反匯編分析 執行:objdump -d hello.o > assemble.txt 匯編代碼如下:
hello.o: file format elf64-x86-64Disassembly of section .init.text:0000000000000000 <init_module>: MODULE_LICENSE("GPL"); MODULE_AUTHOR("baoli"); MODULE_DESCRIPTION("hello world module");static int __init hello_init(void) {0: 55 push %rbp1: 48 c7 c7 00 00 00 00 mov $0x0,%rdi8: 48 89 e5 mov %rsp,%rbpb: e8 00 00 00 00 callq 10 <init_module+0x10>10: c7 04 25 00 00 00 00 movl $0x1,0x017: 01 00 00 00 1b: 31 c0 xor %eax,%eax1d: 5d pop %rbp1e: c3 retq Disassembly of section .exit.text:0000000000000000 <cleanup_module>:0: 55 push %rbp1: 48 c7 c7 00 00 00 00 mov $0x0,%rdi8: 48 89 e5 mov %rsp,%rbpb: e8 00 00 00 00 callq 10 <cleanup_module+0x10>10: 5d pop %rbp11: c3 retq


可以看到hello_init+0x10處對應匯編指令為movl $0x1,0x0,即*p = 1; 通過objdump反匯編Oops可以輕松的知道錯誤原因及位置。
4. objdump總結 1)objdump -d:反匯編目標文件中包含的可執行指令。 2)如果需要混合顯示源碼和匯編代碼,需要加上-S選項,并且在編譯目標文件時加上-g。 3)如果在編譯目標文件時沒有加-g選項,則-S相當于-d。 4)-S選項生成的混合代碼,有時文件結構混亂,可讀性較差。推薦使用-d選項,直接閱讀匯編代碼。


總結

以上是生活随笔為你收集整理的实例分析objdump反汇编用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。