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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Clematis — PE to shellcode | Kitploit
도구/GitHubGitHub/cblabresearch/clematis
Payload GenerationExploitationShellcodeRed TeamingShellcode GenerationPayload Development
GitHubcblabresearch/clematis

Clematis

PE to shellcode

저장소 보기
283531년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Clematis

clematis

[ 中文 | English ]

🛠️ PE 파일(EXE/DLL)을 위치 독립적(position-independent) 셸코드로 변환하는 강력한 도구입니다.

✨ 주요 기능

  • PE 파일(EXE/DLL)을 셸코드로 변환 지원
  • x86 및 x64 아키텍처 모두 호환
  • 명령줄 인자 지원
  • 출력 파일 크기를 크게 줄여주는 내장 LZNT1 압축 알고리즘
  • 향상된 은닉성을 위한 선택적 난독화

📦 설치

의존성

root@kitploit:~
pip install pefile lznt1

🚀 사용법

root@kitploit:~
python clematis.py -f <PE_file> -o <output_file> [-g <true/false>] [-c <true/false>] [-p <parameters>]

파라미터

예시

root@kitploit:~
# 도움말 정보 표시
python clematis.py -h

# 기본 사용법
python clematis.py -f target.exe -o output.bin

# 난독화 및 압축 비활성화
python clematis.py -f target.exe -o output.bin -g false -c false

# 대상 프로그램에 인자 전달
python clematis.py -f target.exe -o output.bin -p arg1 arg2

python clematis.py -f target.exe -o output.bin -p "arg1 arg2"

💪 우리의 장점

  • 🎯 DOT NET 지원
  • 🗜️ 압축 지원
  • 🎭 난독화 지원
  • 🔄 파라미터 전달 지원
  • 🚀 golang 완전 지원
  • 💪 생성된 셸코드는 강력하고 안정적입니다

💡 설계 철학

특수한 환경에서는 다음과 같은 문제가 발생할 수 있습니다:
root@kitploit:~
- 🛡️ 프로세스 인젝션 불가 (AV/EDR/XDR 차단)
- 🔄 현재 프로세스에서 golang 프로그램을 실행하면 블로킹이 발생할 수 있음
- 💾 golang 프로그램 실행 후 메모리 누수가 발생할 수 있음
- ⚠️ golang이 생성한 스레드는 해제할 수 없음!
이러한 문제를 해결하기 위해 clematis를 개발했습니다:
root@kitploit:~
- ✨ golang 프로그램을 셸코드로 변환
- 🎯 현재 프로세스에서 직접 실행
- ♻️ 실행 후 메모리 자동 해제
- 🚀 golang 관련 메모리 문제 완전 회피
- 🔄 golang이 생성한 모든 스레드 회수

📝 참고 사항

  • 소스 PE 파일을 읽고 대상 파일을 쓸 수 있는 충분한 권한이 있는지 확인하세요
  • 대용량 파일 변환 시 압축을 권장합니다
  • 난독화는 일부 성능 오버헤드를 추가할 수 있지만 더 나은 은닉성을 제공합니다

⚠️ 알려진 문제

  • mingw | gcc로 빌드된 응용 프로그램(exe)의 일부는 로드에 실패할 수 있으며, 이는 재배치(relocation) 때문일 수 있습니다? ( 구현되지 않음 )
  • DOT NET 불법 메모리 접근 ( 수정됨 )

🗓️ 계획된 기능

  • 더 나은 보안을 위한 고급 암호화 옵션
  • 더 쉬운 조작을 위한 GUI 인터페이스
  • 실시간 변환 진행 상황 모니터링
  • PE 리소스 처리
  • [ProxyDll, Syscall, ...] 등 향상된 탐지 회피 기능

🔄 최근 업데이트

  • 2024-12-27

    • DOT NET 지원 (x64 | x86)
  • 2024-12-28

    • 잠재적인 DOT NET 프로그램 충돌 수정 (발생하지 않을 수 있음)

    • IMAGE_DIRECTORY_ENTRY_EXCEPTION 처리 추가 ( x64 )

    • API를 NTAPI로 업데이트


⚠️ 경고

  • 이 업데이트는 무료로 공개할 계획이 없으며, 유료 서클에 게시할 예정입니다.
  • 이 프로젝트는 계속 무료로 사용할 수 있지만, 향후 업데이트는 없을 수 있습니다. 감사합니다!

clematis


🔍 작동 방식

Clematis는 다음 단계를 통해 PE 파일을 셸코드로 변환합니다:

  1. 대상 PE 파일 읽기 및 파싱
  2. 명령줄 인자 처리 (있는 경우)
  3. 선택적 LZNT1 압축
  4. 선택적 난독화 처리
  5. 최종 위치 독립적 셸코드 생성
root@kitploit:~
flowchart TD
    A[START] --> B[Read PE file]
    B --> C[Parse PE structure]
    C --> D{Is there a command line argument?}
    D -- TRUE --> E[Process command line arguments]
    D -- FALSE --> F{Enable compression?}
    E --> F
    F -- TRUE --> G[LZNT1 compression]
    F -- FALSE --> H{Enable obfuscation?}
    G --> H
    H -- TRUE --> I[Execute obfuscation processing]
    H -- FALSE --> J[Generate shellcode]
    I --> J
    J --> K[Output result]
    K --> L[END]

🤝 기여

이슈와 Pull Request를 환영합니다!

도구 다운로드
descdefaultrequired
-f--file변환할 PE 파일 경로true
-o--output출력 파일명true
-g--garble난독화 활성화truefalse
-c--compress압축 활성화truefalse
-p--parameterPE 파일에 전달할 실행 파라미터false
beforenow
VirtualAllocNtAllocateVirtualMemory
VirtualProtectNtProtectVirtualMemory
VirtualFreeNtFreeVirtualMemory
LoadLibraryLdrLoadDll
GetProcAddressLdrGetProcedureAddress
WaitForMultipleObjectsNtWaitForMultipleObjects
CreateEventNtCreateEvent
CloseHandleNtClose
SignalObjectAndWaitNtSignalAndWaitForSingleObject
TerminateThreadNtTerminateThread
SuspendThreadNtSuspendThread
OpenThreadNtOpenThread
ResumeThreadNtResumeThread
GetContextThreadNtGetContextThread
SetContextThreadNtSetContextThread
...
  • 2025-1-1

    • 스레드 목록 및 메모리 목록 관리를 위한 스레드 안전성 추가
    • 일부 기능 문제 수정
    • 페이로드의 파라미터 처리를 제거하고 패치 방식으로 변경
    • upx 지원
    • 페이로드에 아키텍처 일치 여부를 확인하는 아키텍처 검사 추가
    • 더 나은 호환성을 위해 일부 구현 변경