c语言反向工程软件,逆向工程工具之Reverse
Reverse是一個用來解析二進制文件的逆向工程工具,而且它可以生成更具可讀性的代碼(類C語言)并帶有彩色標識的語法,便于研究人員進行閱讀代碼。目前,其交互模式仍在做進一步開發(fā)。
支撐架構(gòu)
架構(gòu):x86, ARM, MIPS
文件格式:ELF, PE, RAW
在GitHub中,也提供了一個Makefile作為測試之用,詳細請點擊鏈接:Makefile。
使用環(huán)境要求
1、python 版本需要在 3.4及以上版本;
2、具備capstone反匯編框架,其能提供豐富的反匯編指令;
3、具備python-pyelftools模塊,用于解析ELF文件(ELF文件除了機器碼外,還包含其它額外的信息,如段的加載地址,運行地址,重定位表,符號表等)以及DWARF調(diào)試信息,詳細請點擊鏈接:pyelftools;
4、具備python-pefile模塊,以用于解析PE文件(如exe、dll、vxd、sys和vdm等),詳細請點擊鏈接:PEfile;
5、具備python-msgpack模塊,用于序列化運算,詳細請點擊鏈接:msgpack;
6、具備256色終端;
你可以通過運行requirements.sh檢測是否符合所有的要求,requirements.sh。
類反編譯功能
因為二進制文件中包含了符號型的main,所以其中的-x main是可選的。具體使用如下,
$./reverse.py?tests/server.bin
交互模式
在此模式下有更多的命令可以使用(da,db等),當然我們也可以通過help查看更多的命令。
TODO列表
1、添加命令:setbe/setle rawbase(用于原文件格式);
2、如果從shell獲取的文件為raw文件,則進行加載。
視覺模式
在交互模式中,我們可以通過使用命令 v 來切換到視覺模式。但該模式需要ncurses動態(tài)庫的支持。
其中支持,
1、代碼/功能的定義
2、內(nèi)聯(lián)注釋
3、外部參照
TODO列表
1、當分析器修改代碼時,自動進行重載;
2、多行注釋;
3、創(chuàng)建數(shù)據(jù)/數(shù)組;
4、符號重命名;
5、堆棧變量;
6、結(jié)構(gòu)、枚舉;
7、提高分析器的性能。
Swich-跳轉(zhuǎn)表舉例
Switch語句的使用需要跳轉(zhuǎn)表,但其不能自動檢測。所以我們需要告訴它使用哪一個跳轉(zhuǎn)表。具體操作如下,
$./reverse.py-i?tests/others/switch.bin>>x...>>jmptable0x4005260x400620118#?A?jump-table?at?0x400620?is?set?with?11?entries,?an?address?is?on?8?bytes.>>x#?Decompilation?with?switch
分析shellcode
其中對于每一個Int 0×80,該工具都會嘗試通過參數(shù)檢測syscall函數(shù)
$./reverse.py--raw?x86?tests/shellcode.bin
function0x0{0x0:eax=0#?xor?eax,?eax0x2:al='\x0b'#?mov?al,?0xb0x4:cdq0x5:push?edx0x6:push1752379246"n/sh"0xb:push1768042287"//bi"0x10:ebx=esp#?mov?ebx,?esp0x12:push?edx0x13:push?ebx0x14:ecx=esp#?mov?ecx,?esp0x16:int128;execve(ebx,ecx,edx)#?int?0x80}
使用VIM進行編輯
***再通過使用VIM進行編輯,具體參考如下,
$./reverse?tests/dowhile1.bin--vimRun:vim?dowhile1.bin.rev-S?dowhile1.bin.vim
GitHub 下載鏈接:GitHub。
【責(zé)任編輯:藍雨淚 TEL:(010)68476606】
點贊 0
總結(jié)
以上是生活随笔為你收集整理的c语言反向工程软件,逆向工程工具之Reverse的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java sheet 打印区域设定,如何
- 下一篇: 修改devcpp5.11的语言选项