shelf
Shelf release 3.0.5
將標準的精靈文件轉換為獨立的ShellCodes。請閱讀以下文檔並查看該項目的示例以正常工作
github
PYPI
pip install py_shelfPython庫解析了精靈,並創建了一個簡單的可重新定位文件格式,稱為Shelf(ShellCode Elf)。
迷你裝載機被插入作為架子的入口點。
迷你裝載機將加載並重新安置架子,然後將其執行。沒有特殊要求,圖書館包含編譯的迷你裝載機和資源。
下圖解釋了格式(僅在瀏覽器中起作用)
classDiagram
shellCodeentrypoint- |> miniloader
shellCodeentrypoint:包含Mini Poader邏輯的shellCode
Miniloader - |>重新定位表
Miniloader:包含解析重定位表的所有邏輯
Miniloader:完全獨立的操作系統
搬遷表 - |>掛鉤可選
重定位表:包含ShellCode運行時重置所需的表
掛鉤可選 - |>架子
掛鉤可選:在下面的文檔中閱讀有關掛鉤的更多信息
掛鉤可選:此部分是可選的,僅在使用鉤子時才存在
架子:ShellCode Elf-這是我們轉換為shellcode的編譯的二進製文件
架子:此二進制僅被剝離成opcodes
架子:使用重新定位表完全重新定位
該項目旨在將精靈轉換為獨立的殼架。因此,加載程序永遠不會分配內存,並且沒有包裝ShellCode格式。您可以執行它,例如...
(( void ( * )()) shellcode )();遵循以下示例
需要一些彙編標誌才能正常工作。您必須使用-fpie和-Statatic對二進制進行編譯,請查看下面提供的示例(makefile)。
ShellCode是一個沒有符號的二進制二進製文件,僅精靈信息僅限opcodes,為了使shellcode此庫需要一個帶有精靈信息的二進製文件。因此,請確保您在使用此庫之前沒有剝離二進製文件
簡化的mips命令大恩迪安
gcc example . c - fno - stack - protector - fPIE - fpic - static - nostartfiles -- entry = main - o binary . out
python - m shelf -- input binary . out makefile
示例
您可以使用提供的殼牌碼加載程序來測試您的shellcodes
qemu-mips ./shellcode_loader ./myshellcode.out建議在此處使用架子加載程序庫來測試您的殼牌碼,您可以閱讀更多有關它的信息:架子加載器文檔
有關以下鏈接僅在github頁面上工作