簡單例項分析objdump反彙編用法

2021-09-02 19:13:32 字數 2091 閱讀 7690

objdump -rds 可可執行檔案

objdump命令是用檢視目標檔案或者可執行的目標檔案的構成的gcc

工具。1. 準備**hello.c

#include #include #include module_license("gpl");

module_author("baoli");

module_description("hello world module");

static int __init hello_init(void)

static void __exit hello_exit(void)

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-64

disassembly of section .init.text:

0000000000000000 :

module_license("gpl");

module_author("baoli");

module_description("hello world module");

static int __init hello_init(void)

{ 0: 55 push %rbp

1: 48 c7 c7 00 00 00 00 mov $0x0,%rdi

8: 48 89 e5 mov %rsp,%rbp

b: e8 00 00 00 00 callq 10 10: c7 04 25 00 00 00 00 movl $0x1,0x0

17: 01 00 00 00

1b: 31 c0 xor %eax,%eax

1d: 5d pop %rbp

1e: c3 retq

disassembly of section .exit.text:

0000000000000000 :

0: 55 push %rbp

1: 48 c7 c7 00 00 00 00 mov $0x0,%rdi

8: 48 89 e5 mov %rsp,%rbp

b: e8 00 00 00 00 callq 10 10: 5d pop %rbp

11: c3 retq

可以看到hello_init+0x10處對應彙編指令為movl $0x1,0x0,即*p = 1;

通過objdump反彙編oops可以輕鬆的知道錯誤原因及位置。

4.objdump總結

1)objdump -d:反彙編目標檔案中包含的可執行指令。

2)如果需要混合顯示原始碼和彙編**,需要加上-s選項,並且在編譯目標檔案時加上-g。

3)如果在編譯目標檔案時沒有加-g選項,則-s相當於-d。

Python正則簡單例項分析

悄悄打入公司內部ued的乙個python愛好者小眾群,前兩天一位牛人發了條訊息 小的測試題 re.split w test,test,test.返回什麼結果 一開始看,我倒沒注意w是大寫的,以為是小寫的w代表單詞字元 含下程式設計客棧劃線 今天執行一看才發現是大寫的。在idl程式設計客棧e跑一下的結...

例項講解如何繞過 Office 文件的反分析技術

本文講的是例項講解如何繞過 office 文件的反分析技術,今天我們來試著分析乙個使用word文件的惡意vba專案。該文件的作者對檔案中的vba專案進行了密碼保護,以防止對惡意 的檢查,同時也使用了一些防止密碼刪除的技術。因此自動分析工具就基本不起作用了,但我們還是展示了如何跨越所有這些反分析障礙的...

例項分析正版手遊的安卓反破解之路

不願意為遊戲付費的安卓玩家們並不是我們的市場 atypical games 宣布不考慮製作 輻射島 安卓版。蘋果的獨佔市場,又多了一面小紅旗。當然,僅從上面這組數字,不足以看出安卓渠道和使用者對正版的支援,但 聚爆 的確開啟了高品質單機遊戲的大陸安卓之路。走得如預料之內破解滿天飛,但也出乎意料之外備...