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页面上工作