Reverse是一個用來解析二進位文件的逆向工程工具,而且它可以生成更具可讀性的代碼(類C語言)並帶有彩色標識的語法,便於研究人員進行閱讀代碼。目前,其交互模式仍在做進一步開發。
使用環境要求
1、python 版本需要在 3.4及以上版本;
2、具備capstone反彙編框架,其能提供豐富的反彙編指令;
3、具備python-pyelftools模塊,用於解析ELF文件(ELF文件除了機器碼外,還包含其它額外的信息,如段的加載地址,運行地址,重定位表,符號表等)以及DWARF調試信息,詳細請點擊連結:pyelftools;
4、具備python-pefile模塊,以用於解析PE文件(如exe、dll、vxd、sys和vdm等),詳細請點擊連結:PEfile;
5、具備python-msgpack模塊,用於序列化運算,詳細請點擊連結:msgpack;
6、具備256色終端;
可以通過運行requirements.sh檢測是否符合所有的要求
反編譯功能
因為二進位文件中包含了符號型的main,所以其中的-x main是可選的。具體使用如下,
$ ./reverse.py tests/server.bin
交互模式
在此模式下有更多的命令可以使用(da,db等),當然我們也可以通過help查看更多的命令。
TODO列表
1、添加命令:setbe/setle rawbase(用於原文件格式);
2、如果從shell獲取的文件為raw文件,則進行加載。
視覺模式
在交互模式中,我們可以通過使用命令 v 來切換到視覺模式。但該模式需要ncurses動態庫的支持。
1、代碼/功能的定義
2、內聯注釋
3、外部參照
TODO列表
1、當分析器修改代碼時,自動進行重載;
2、多行注釋;
3、創建數據/數組;
4、符號重命名;
5、堆棧變量;
6、結構、枚舉;
7、提高分析器的性能。
分析shellcode
其中對於每一個Int 0×80,該工具都會嘗試通過參數檢測syscall函數
$ ./reverse.py --raw x86 tests/shellcode.bin
文章來源及下載:
https://github.com/plasma-disass ... b/master/reverse.py