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