逆向工程是指解構應用程序的過程,不論使用何種編程語言開發,目的是獲得其源代碼或其中的任何部分。逆向工程的代碼有助于發現任何程序中的安全風險,也能用于解密任何惡意應用以進行干擾。
在尋找破解敏感數據或加密密鑰的過程中,黑客們通常選擇逆向工程作為一種選項,以找出整個系統中隱藏漏洞的所在之處。這導致了敏感數據的完全暴露,包括被硬編碼到應用程序中的 API 密鑰、 URL 和API 機密信息,開發人員用于測試的開發服務器 URL,非標準端口號,以及硬編碼到應用程序文件及其子目錄中的多個私鑰等。
逆向工程涉及一系列步驟,包括數據編譯、記錄元素和功能、評估數據、記錄控制流、提取流結構、審查提取的設計、生成逆向工程文檔。
從實時跟蹤運行的應用程序,解析二進制代碼到匯編代碼,管理和編輯二進制文件或嵌入式資源在 exe 文件中,逆向工具有各種各樣的類型,根據其應用可以分為以下幾類:
- 反匯編器
- 調試器
- 數據包跟蹤和分析工具
- 腳本工具
- 文件分析工具
以下分享:
1.十六進制編輯器
十六進制編輯器是一組用于微軟 Windows 的十六進制開發工具,結合了高級的二進制編輯和字處理器的簡潔易用性和多功能性。它主要用于操縱構成計算機文件的基本二進制數據。
此外,十六進制編輯器還支持查找、替換、比較、計算校驗和、添加智能標簽、顏色映射,并在一個扇區或文件中生成字符分布。十六進制編輯器還支持拖放功能,并可與所有的 Windows 操作系統集成,無論其迭代版本如何。
根據其不同的功能和應用,有各種不同類型的十六進制編輯器,有些允許它們以可視化方式顯示文件的內部結構。因此,您可能需要在最常用的工作空間中進行快速簡單的十六進制編輯。
數據檢視器非常適合解釋、查看和編輯十進制和二進制值。算術、邏輯、 ASCII 過程和位操作可用于幫助操作數據集。
集成結構查看器使您能夠直觀而充分地編輯和查看數據。結構查看器驗證信息結構、對各種網絡的引用,以及許多原子數據類型:char 、byte 、ubyte 、word 、uword 、long 、ulong 、longlong 、float 、double 、OLE 日期/時間、 DOSTIME 、DOSDATE 、FILETIME 和time_t 。
優點:
- 進行任何十六進制計算時非常方便
- 提供多種選項
缺點:
- 用戶友好度不太高
- 有時更新問題
2.OllyDbg
OllyDbg 是一個針對 Microsoft Windows 的32 位匯編調試器。任何無法獲得源代碼的情況下,二進制代碼的計算認知使得它在許多情況下都非常適用。此外,OllyDbg 是共享軟件應用程序,可以下載使用。
OllyDbg 的一些關鍵特性如下:
- 保存補丁以在會話之間返回到可執行文件并進行修補升級
- 查找對象和庫模式
- 代碼分析——跟蹤記錄、查找過程切換、 API 調用、表和循環常量和字符串
- DNow 、MMX 和為 Athlon 等SSE 數據類型和擴展提供指令
- 識別高級配置,如對事件的請求
- 用于執行的跟蹤系統,日志已知可用于調和沖突
- 查找錯誤命令和掩蓋關鍵字
- 檢查和修改內存,設置斷點并在不可見的情況下暫停應用程序
- 在會話之間輸入標記,將它們還原到可執行文件并修復更新
優點:
- 共享軟件,免費使用
- 功能強大的動態調試器
- 相對于 IDA 來說更容易操作
- 允許直接加載和調試 DLL
- 有腳本和插件可用
缺點:
- 僅限于 Microsoft® Windows®
- 只適用于 x86(或 32 位)軟件
- 不是靜態調試器
3.APKTool
Apktool 是另一種開源選擇,主要用于 Android 逆向工程,可以將資源解碼為幾乎其原始形式。可以進行修改,并將其轉換回二進制 APK/JAR 文件。
此外,Apktool 還允許逐步調試 smali 代碼,并且由于項目文件的結構以及對一些重復性操作的自動化,使得處理應用程序變得更加容易。使用該程序需要 Java 7 。
優點:
- 在逆向 Android 應用文件方面高效
- 可在網上免費使用
- 社區支持良好
缺點:
- 不如 JEB 反編譯工具普遍
4.WireShark
Wireshark 是一個知名的網絡和網絡領域的工具。它是免費和開源的,是一個 Web 調試器,可以攔截和修改 HTTP 請求,并且可以記錄 HTTPS 請求。它用于數據包分析和網絡故障排除。
優點:
- 免費且開源的 Web 調試器
- 支持跨平臺
缺點:
- 對于初學者來說,可能會感到壓力山大
5.Scylla
Scylla 不是一個獨立的工具,而更傾向用于重構 Windows 的x86 和x64 文件的工具。它還具有全 Unicode 支持,并且與 Windows 7 、8 和10 完全兼容。
優點:
- 一個開源的產品
- 支持 x64 和x86
缺點:
- 缺乏更新
- 有時會有錯誤
6.Dex2jar
Dex2jar 是一個 API,用于掃描 Dalvik Executable(.dex/.odex)格式。它與 Android 和Java .class 文件兼容。
Dex2jar 包括以下幾個組件:
- Dex-reader 用于掃描 Dalvik Executable(.dex/.odex)格式。它具有類似 ASM 的輕量級 API
- Dex-translator 用于執行轉換工作。它讀取 dex 指令以 dex-or 格式,經過一些優化后,轉換為 ASM 格式
- Dex-用于它使用 Dex-translator 表示 dex 指令
- Dex-tools 用于處理.class 文件
示例:修改應用程序、解混淆一個.jar 文件。
優點:
- 可以讀取 Dalvik Executable 格式
- 輕量級 API
缺點:
- 只與 Android 和Java .class 文件兼容
7.CCF
CCF 是一個免費的便攜式可執行編輯器,支持.NET 文件結構。 CCF 支持 32 位和 64 位PE 文件。 CCF 由NTCore 開發,還可用于解壓縮 UPX 打包器。
優點:
- 免費的 PE 編輯器
- 也支持.NET 文件
- 支持 PE 32 位和 64 位
- 包含 PE 重建器
- 可用于解壓縮 UPX
缺點:
- 免費版本自 2012 年以來未更新
8.Oracle VM VirtualBox
Oracle VM VirtualBox 是一個開源的虛擬化解決方案,在 Windows 、Mac 、Linux 等不同平臺上皆可使用,用于在安全環境中分析惡意軟件。
優點:
- 免費且開源
- 活躍的開發社區
- 支持虛擬機操作系統
缺點:
- 與 VMware 相比,功能略差
9.BinaryNinja
目前沒有反編譯器,但計劃在將來的“高級”版本中加入。 Binary Ninja 由Vector 35 開發,以其易用性而自豪,使得自動化比其他解決方案更容易理解。
盡管易于使用,但該軟件在反向工程本地主機中仍然存在一些問題。
優點:
- 簡單易用
- 包含反匯編器
缺點:
- 不是調試器或反編譯器
- 有時無法加載用戶界面
- 免費版本有限
參考來源:https://www.secureblink.com/blogs/top-9-reverse-engineering-hacking-tools-for-cyber-security-experts