Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/oldboy21/shgenob
Encryption/Decryption ToolsPayload GenerationExploitationShellcodeMalware AnalysisBinary AnalysisLearning & EducationShellcode Generation
GitHuboldboy21/shgenob

SHGenOb

Python 기반 도구로, PIC C로부터 셸코드를 생성합니다.

저장소 보기
435410개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SHGenOB: PIC C 코드에서 셸코드 생성기

소개

SHGenOB는 C로 작성된 위치 독립 코드(PIC)에서 셸코드를 생성하도록 설계된 Python 기반 도구입니다. C 코드 컴파일, .text 섹션 추출, 그리고 선택적으로 XOR 암호화를 사용하여 생성된 셸코드를 암호화하는 과정을 자동화합니다.

이 프로젝트는 전적으로 hasherezade의 이 문서를 기반으로 합니다.

위치 독립 코드 (PIC)

SHGenOB 사용자를 위한 중요 참고 사항: 이 셸코드 생성 도구가 올바르게 작동하려면 입력 파일의 C 코드가 위치 독립 코드(PIC)로 작성되어야 합니다. 이 도구는 제공된 코드가 아래 설명된 PIC 원칙과 특성을 준수한다고 가정합니다.

위치 독립 코드(PIC)는 절대 메모리 주소에 관계없이 실행될 수 있는 기계어 코드 유형입니다. 이 특성은 PIC를 셸코드, 공유 라이브러리 및 특정 유형의 악성 코드를 생성하는 데 특히 유용하게 만듭니다. PIC의 주요 기능은 다음과 같습니다:

  • 주소 독립성: PIC는 메모리에 로드된 위치에 관계없이 올바르게 실행될 수 있습니다.
  • 고정 메모리 참조 없음: 절대 주소 사용을 피하고 대신 상대 주소 지정 또는 기타 기술을 사용하여 메모리 위치를 참조합니다.
  • 자체 포함: PIC는 일반적으로 코드 내에 필요한 모든 데이터를 포함하여 외부 종속성을 줄입니다.
  • 스택 문자열: 문자열을 문자 배열로 선언하면 컴파일러가 이를 PE 파일의 .data 또는 .pdata 섹션이 아닌 스택에 푸시하도록 강제합니다.
  • 재배치 불필요: 로더가 재배치를 수행할 필요가 없으므로 로드 및 실행 속도가 빨라집니다.
  • 더 작은 크기: PIC는 종종 위치 종속 코드에 비해 더 작은 바이너리 크기를 생성합니다.
  • 레지스터 상대 주소 지정: 데이터에 액세스하고 점프를 수행하기 위해 레지스터 상대 주소 지정을 자주 사용합니다.
  • 오프셋 사용: 절대 주소 대신 PIC는 현재 명령어 포인터로부터의 오프셋을 사용합니다.
  • 플랫폼별 기술: 다른 CPU 아키텍처는 위치 독립성을 달성하기 위해 다른 기술이 필요할 수 있습니다.

PIC는 코드의 정확한 로드 주소를 미리 알 수 없는 시나리오에서 필수적이며, 이는 셸코드 개발 및 시스템 프로그래밍의 특정 영역에서 중요한 개념입니다. SHGenOB를 사용할 때 입력 C 코드가 이러한 PIC 원칙을 따르도록 하여 효과적이고 신뢰할 수 있는 셸코드를 생성하십시오.

기능

  • Microsoft Visual Studio 도구를 사용하여 PIC C 코드 컴파일
  • 컴파일된 실행 파일에서 .text 섹션 추출
  • 선택적으로 XOR 암호화를 사용하여 셸코드 암호화
  • 생성된 셸코드를 로더 템플릿에 삽입
  • 생성된 셸코드로 로더 컴파일 및 테스트
  • 중간 파일 검사를 위한 디버그 모드 지원
  • 성공적인 실행 후 중간 파일 정리

요구 사항

  • Windows 운영 체제
  • Python 3.6 이상
  • Microsoft Visual Studio 2022 Community Edition (또는 호환 버전)
  • 다음 Python 패키지:
    • pefile
    • argparse
  • Visual Studio의 C 컴파일러(cl.exe) 및 어셈블러(ml64.exe)
  • Visual Studio의 vcvars64.bat 파일 (컴파일 환경 설정용)

설치

  1. python.org에서 Python 3.6 이상 설치
  2. Microsoft Visual Studio 2022 Community Edition 설치
  3. 필요한 Python 패키지 설치:

pip install pefile argparse

  1. 이 저장소를 로컬 머신에 클론하거나 다운로드

사용법

다음 구문으로 명령줄에서 스크립트 실행:

root@kitploit:~
python shgenob.py --code-file <path_to_c_file> [--masm-file <path_to_masm_file>] [--debug] [--xor-key <key>]

인수:

  • --code-file 또는 -cf: (필수) PIC 코드가 포함된 main.c 파일의 경로
  • --masm-file 또는 -mf: (선택 사항) 셸코드에 추가 어셈블리 로직을 포함하기 위한 외부 .masm 파일의 경로
  • --debug 또는 -d: (선택 사항) 디버그 모드 활성화 (중간 파일 정리 생략)
  • --xor-key 또는 -xk: (선택 사항) 셸코드 암호화를 위한 XOR 키 (형식: AA,BB,CC)

예제:

root@kitploit:~
# Basic usage
python shgenob.py --code-file main.c

# With external MASM file
python shgenob.py --code-file main.c --masm-file custom_logic.masm

# With all options
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC

함수 설명

  1. save_to_file(content, filename): 주어진 내용을 현재 디렉터리의 파일에 저장합니다.
  2. cleanup(): 현재 디렉터리의 중간 파일(.asm, .exe, .obj, .lnk)을 삭제합니다.
  3. xor_encrypt(shellcode, key): 제공된 키를 사용하여 XOR로 셸코드를 암호화합니다.
  4. insert_shellcode_into_loader(formatted_shellcode, loader_file): 로더 템플릿에 셸코드를 삽입합니다.
  5. extract_text_section(file_path, key): PE 파일에서 .text 섹션을 추출하고 선택적으로 암호화합니다.
  6. find_file(root_dir, file_name): 주어진 디렉터리와 그 하위 디렉터리에서 파일을 검색합니다.
  7. run_command_with_vcvars(command, vcvars_path): Visual Studio 환경 변수가 설정된 상태에서 명령을 실행합니다.
  8. compile_cpp_file(cpp_file, vcvars_path, output_exe): Visual Studio 컴파일러를 사용하여 C++ 파일을 컴파일합니다.
  9. modify_asm_file(asm_file): 셸코드 호환성을 위해 생성된 어셈블리 파일을 수정합니다.
  10. main(cpp_file, args): 셸코드 생성 과정을 조율하는 메인 함수입니다.

워크플로우

  1. 명령줄 인수 파싱
  2. Visual Studio 도구(vcvars64.bat, cl.exe, ml64.exe) 찾기
  3. 입력 C 파일을 어셈블리로 컴파일
  4. 생성된 어셈블리 파일 수정
  5. 수정된 어셈블리 파일 어셈블
  6. 결과 실행 파일에서 .text 섹션 추출
  7. 선택적으로 추출된 셸코드 암호화
  8. 셸코드를 파일에 저장
  9. 로더 템플릿에 셸코드 삽입
  10. 로더 컴파일
  11. 생성된 셸코드로 로더 테스트
  12. 중간 파일 정리 (디버그 모드가 아닌 경우)

디버깅

--debug 플래그를 사용하여 정리 과정을 건너뛰고 중간 파일을 검사할 수 있습니다. 이는 문제 해결 및 셸코드 생성 과정 이해에 유용합니다.

보안 고려 사항

  • 이 도구는 교육 및 승인된 테스트 목적으로만 사용됩니다.
  • 생성된 셸코드는 안티바이러스 소프트웨어에 의해 플래그될 수 있습니다.
  • XOR 키를 사용하여 셸코드를 난독화하지만, 이는 기본적인 난독화 형태임을 유의하십시오.
  • 대상 시스템에서 이 도구를 사용할 권한이 있는지 확인하십시오.

제한 사항

  • 현재 Windows 및 Microsoft Visual Studio 도구 체인만 지원합니다.
  • 일부 엣지 케이스에 대한 제한된 오류 처리
  • XOR 암호화는 기본적인 난독화 형태이며 모든 사용 사례에 충분하지 않을 수 있습니다.

기여하기

SHGenOB를 개선하기 위한 기여를 환영합니다. 다음 단계를 따라주세요:

  1. 저장소 포크
  2. 기능에 대한 새 브랜치 생성
  3. 변경 사항 커밋
  4. 브랜치에 푸시
  5. 새 풀 리퀘스트 생성
도구 다운로드