【轉載】ELF文件-逆向工具

本篇爲轉載,原連接以下:http://bdxnote.blog.163.com/blog/static/8444235201532911597959/vim

主要是作一個我的的資料收集,之後能夠快速找到。Ps.若是不喜歡被我轉載,能夠聯繫我刪掉,謝謝!socket

 

一、ELF文件內容解析
readelf : 可解析ELF文件的全部內容;
strings : 查看ELF文件中的字符串;
file       : 查看ELF文件的信息;
nm       : 查看ELF文件中的符號信息;
ldd       : 查看ELF文件所依賴的庫文件;

二、objdump
用於對ELF文件進行反彙編;
objdump -d  ;反彙編部分可執行的二進制代碼;
objdump -D  ;反彙編所有的可執行的二進制代碼;
objdump -S  ;儘可能把可執行的二進制代碼反彙編成源碼;

三、hexdump
以十六進制格式查看ELF格式的二進制可執行文件的內容;
hexdump -C elf_file_name

四、od
以指定的進制格式查看ELF格式的二進制可執行文件的內容;默認是八進制;
od -t x4 ;-t指定格式化的字節單元單位;
             ;x4-每4個字節爲一個單元格式化成十六進制,
             ;x2-每2個字節爲一個單元格式化成十六進制,
             ;x1-以1個字節爲一個單元格式化成十六進制;
-t x2 等價於 -x
-A選項指定進制格式:x-十六進制, d-十進制,o-八進制;
若是使用-t指定了十六進制格式,則-A選項就不是必須的了;

五、xxd
以十六進制格式查看ELF格式的二進制可執行文件的內容;
xxd             ;以小寫的十六進制格式顯示;
xxd -u         ;以大寫的十六進制格式顯示;
xxd -s +10  ;以ELF文件頭處的第1個字節爲參照,從第10個字節處開始顯示;
xxd -s -10   ;以ELF文件尾處的第1個字節爲參照,從第10個字節處開始顯示;

六、編輯ELF文件
使用vi/vim與命令xxd配合完成;
STEP1:使用vi/vim以二進制模式打開ELF文件;
      vi -b binary_file
      vim -b binary_file
STEP2:在vi/vim的命令模式下輸入以下內容,把二進制內容轉換成16進制格式顯示:
       :%!xxd -u
STEP3:按照vi/vim正常的編輯方法來修改以十六進制格式顯示的二進制內容;
STEP4:編輯完成以後,在vi/vim的命令模式下輸入如下內容,把十六進制格式顯示的內容轉換回原始的二進制格式:
       :%!xxd -r
STEP5:在vi/vim的命令模式下輸入如下內容,保存二進制格式的ELF文件:
       :wq
---備註---
%   :表示當前文件中顯示的全部行;
!xxd:表示執行外部命令xxd;函數

格式"%!xxd"表示把當前文件中的全部行傳遞給外部命令xxd;

七、 動態調試工具
ltrace : 跟蹤ELF文件或進程對庫函數的調用(library_function_call);
strace: 跟蹤ELF文件或進程對系統調用的調用(system_call);
gdb    : 對一個程序進行調試;使用gcc編譯該程序時需加上選項-g,讓編譯器增長一些調試信息;
strip   : 刪除程序中的調試信息;這些調試信息是編譯該程序時,gcc編譯器的-g選項添加的;
splint  : 查看一個程序中對未賦值變量的引用、未使用的函數參數,等狀況;( 靜態檢測) lsof    : 查看一個進程打開的文件; fuser  : 查看正在訪問指定的file、filesystem或socket的全部進程的信息;即:查看都有哪些進程正在訪問指定的file、filesystem或socket;         若是沒有找到任何進程,fuser返回非零值;若是找到至少一個進程,則fuser返回0;         -k:該選項會向全部這些進程發送SIGKILL信號,以kill掉全部正在訪問指定file、filesystem或socket的全部進程;         -i:在kill掉fuser命令找到的這些進程以前進行必要的提示信息;         fuser命令顯示的是pid,而且在每一個pid後面附加一個字母,用以表示訪問方式:         c: 以目錄方式訪問;         e: 以可執行文件方式訪問;         f: 以打開文件方式訪問,默認不顯示;         F: 以寫的方式打開文件進行訪問;         r: 以root目錄的方式訪問;         m: 以mmap文件或共享庫的方式訪問; /proc : proc文件系統中包含進程的全部信息;
相關文章
相關標籤/搜索