표준 ELF 파일을 독립형 쉘 코드로 변환하십시오. 다음 문서를 읽고이 프로젝트의 예제를 제대로 작동시킬 수 있습니다.
github
pypi
pip install py_shelfPython 라이브러리는 ELF를 구문 분석하고 Shelf (Shellcode ELF)라는 간단한 재배치 파일 형식을 만듭니다.
미니 로더는 선반의 진입 점으로 삽입됩니다.
미니 로더가 선반을로드하고 재배치 한 다음 실행됩니다. 특별한 요구 사항은 없습니다. 라이브러리에는 컴파일 된 미니 로더 및 리소스가 포함되어 있습니다.
아래 다이어그램은 형식을 설명합니다 (브라우저에서만 작동)
ClassDiagram
ShellCodeEntryPoint -|> miniloader
ShellCodeEntryPoint : 사전 미니 로더 로직을 포함하는 쉘 코드
미니 로더 -|> 재배치 테이블
Miniloader : 재배치 테이블을 구문 분석하기위한 모든 논리를 포함합니다.
Miniloader : 완전히 OS 독립
재배치 테이블 -|> 후크 옵션
재배치 테이블 : 쉘 코드 런타임 재배치에 필요한 테이블 포함
고리 옵션 -|> 선반
후크 선택 사항 : 아래 문서에서 후크에 대해 자세히 알아보십시오.
후크 선택 사항 :이 섹션은 선택 사항이며 후크가 사용되는 경우에만 존재합니다.
선반 : Shellcode ELF- 이것은 우리가 쉘 코드로 변환하는 컴파일 된 바이너리입니다.
선반 :이 바이너리는 Opcode 만 제거됩니다
선반 : 재배치 테이블을 사용하여 완전히 재배치 할 수 있습니다
이 프로젝트는 ELF를 OS 독립 쉘 코드로 변환하기위한 것입니다. 따라서 로더는 메모리를 할당하지 않으며 쉘 코드 형식은 포장되지 않습니다. 그냥 실행할 수 있습니다.
(( void ( * )()) shellcode )();아래 예제를 따르십시오
이것이 제대로 작동하려면 일부 컴파일 플래그가 필요합니다. -fpie 및 -static으로 바이너리를 컴파일해야합니다. 아래 제공된 예제 (makefile)를 살펴보십시오.
Shellcode는 기호가없고 ELF 정보가없는 스트리핑 바이너리입니다.이 라이브러리는 ELF 정보가 포함 된 이진이 필요합니다. 이 라이브러리를 사용하기 전에 바이너리를 벗기지 않도록하십시오.
MIPS Big Endian에 대한 단순화 된 Make 명령
gcc example . c - fno - stack - protector - fPIE - fpic - static - nostartfiles -- entry = main - o binary . out
python - m shelf -- input binary . out Makefile
예 .C
제공된 쉘 코드 로더를 사용하여 쉘 코드를 테스트 할 수 있습니다.
qemu-mips ./shellcode_loader ./myshellcode.out선반 로더 라이브러리를 사용하여 쉘 코드를 테스트하는 것이 좋습니다. 여기에 대해 자세히 알아볼 수 있습니다 : 선반 로더 문서
다음 링크는 GitHub 페이지에서만 작동합니다