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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
byvalver — 셸코드의 bad-bytes를 받아 제거하고, 기능이 보존된 정리된 셸코드를 반환합니다. | Kitploit
도구/GitHubGitHub/umpolungfish/byvalver
ExploitationShellcodeMalware AnalysisPenetration TestingBinary AnalysisMachine LearningRed TeamingShellcode GenerationPayload Development
GitHubumpolungfish/byvalver

byvalver

셸코드의 bad-bytes를 받아 제거하고, 기능이 보존된 정리된 셸코드를 반환합니다.

639516개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
저장소 보기
공유

byvalver (·𐑚𐑲𐑝𐑨𐑤𐑝𐑼)

쉘코드의 배드바이트 추방자

byvalver가 배드바이트를 단호하게 추방합니다
C++ 쉘코드 정화 크로스 플랫폼 아키텍처 빌드 클린 GitHub 별 GitHub 포크 GitHub 후원 Ko-fi 지원

개요 • 빠른 시작 • 대화형 TUI • 타겟 배드바이트 제거 • 배드바이트 프로파일 • 기능 • 아키텍처 • 시스템 요구 사항 • 의존성 • 빌드 • 설치 • 사용법 • 난독화 전략 • 널바이트 제거 전략 • ML 학습 • 에이전트 컬렉션 • 개발 • 문제 해결 • 라이선스


목차

  • 개요
  • 빠른 시작
    • 설치
    • 기본 사용법
    • 확인
    • 크로스 아키텍처 지원
    • 일괄 처리
  • 대화형 TUI
  • 타겟 배드바이트 추방
  • 배드바이트 프로파일
  • 기능
    • 고급 변환 엔진
    • 성능 메트릭
    • 난독화 계층
    • ML 기반 전략 선택
    • 출력 옵션
    • 검증 모음
  • 아키텍처
  • 시스템 요구 사항
  • 의존성
  • 빌드
  • 설치
  • 사용법
  • 난독화 전략
  • 널바이트 제거 전략
  • ML 학습 및 검증
  • 에이전트 컬렉션
  • 개발
  • 문서
  • 문제 해결
  • 라이선스

개요

byvalver는 C로 작성된 CLI 도구로서, x86/x64/ARM/ARM64 쉘코드에서 배드바이트를 자동으로 제거(또는 "추방")하면서 완전한 기능적 동등성을 유지합니다.

v4.0의 새로운 기능: 크로스 아키텍처 지원

  • --arch 플래그를 통한 자동 Capstone 모드 선택

v4.0.1 버그 수정:

  • ARM SUB 명령어 인코딩 수정 (I=1 비트와 함께 올바른 opcode 0x2)
  • ARM64 전략 can_handle 로직 수정 (패스스루 전략 대상)
  • ARM/ARM64 아키텍처 선택 시 실험 경고 추가
  • 아키텍처 불일치 탐지 휴리스틱 추가
  • 코드 구성 개선 (include를 파일 범위로 이동)

v4.2의 새로운 기능: 향상된 x64 지원

  • x86/x64 전략 호환성 계층: 128개 이상의 x86 전략이 x64 쉘코드에서 작동
  • 5개의 새로운 x64 전용 전략 파일: MOVABS, SBB, TEST, SSE 메모리, LEA 변위
  • 확장된 레지스터 인코딩: 올바른 REX 접두사 처리를 포함한 R8-R15 전체 지원
  • REX 접두사 유틸리티: is_64bit_register(), is_extended_register(), build_rex_prefix()
  • x64 전용 쉘코드 샘플에서 100% 실패율 해결

이 도구는 Capstone 역어셈블 프레임워크를 사용하여 명령어를 분석하고, 175개 이상의 순위가 매겨진 변환 전략을 적용하여 배드바이트가 포함된 코드를 동등한 대안으로 교체합니다.

일반적인 배드바이트 추방 프레임워크는 2가지 사용 모드를 제공합니다:

  1. 직접 지정: --bad-bytes 옵션을 통해 임의의 바이트를 추방하도록 지정할 수 있습니다 (예: 개행 문자에 안전한 쉘코드를 위한 --bad-bytes "00,0a,0d")
  2. 프로파일 기반: --profile 옵션을 사용하면 일반적인 익스플로잇 시나리오에 대한 사전 구성된 배드바이트 세트를 사용할 수 있습니다 (예: --profile http-newline, --profile sql-injection, --profile alphanumeric-only)

Windows, Linux, macOS를 지원합니다.

핵심 기술:

  • 효율성과 저수준 제어를 위한 순수 C 구현
  • 정밀한 역어셈블을 위한 Capstone
  • 디코더 스텁 생성을 위한 NASM
  • 확장 가능한 변환을 위한 모듈식 전략 패턴 (153개 이상의 전략 구현)
  • 지능형 전략 선택을 위한 신경망 통합
  • 이단계 처리: 난독화 후 널바이트 제거

[!NOTE] 널바이트 제거 (--bad-bytes "00" 또는 기본값): 잘 테스트됨 / 일반 배드바이트 제거 (--bad-bytes "00,0a,0d" 등): 새로 구현됨

배드바이트 추방 실제 작동

배드바이트 추방 실제 작동

빠른 시작

몇 분 만에 byvalver를 시작해 보세요:

설치

옵션 1: GitHub에서 (권장)```bash curl -sSL https://raw.githubusercontent.com/umpolungfish/byvalver/main/install.sh | bash

root@kitploit:~
**옵션 2: 소스에서 빌드**```bash
git clone https://github.com/umpolungfish/byvalver.git
cd byvalver
make
sudo make install
sudo make install-man  # Install man page

기본 사용법

NULL BYTES 제거 (DEFAULT):```bash byvalver input.bin output.bin

root@kitploit:~
**BAD-BYTE 프로필 사용:**```bash
# HTTP contexts (removes null, newline, carriage return)
byvalver --profile http-newline input.bin output.bin

# SQL injection contexts
byvalver --profile sql-injection input.bin output.bin

# Alphanumeric-only shellcode (most restrictive)
byvalver --profile alphanumeric-only input.bin output.bin

수동 BAD-BYTE 지정:```bash

banish null bytes and newlines

byvalver --bad-bytes "00,0a,0d" input.bin output.bin

root@kitploit:~
**고급 기능:**```bash
# Add obfuscation layer before denullification
byvalver --biphasic input.bin output.bin

# Enable ML-powered strategy selection
byvalver --ml input.bin output.bin

# Generate XOR-encoded shellcode with decoder stub
byvalver --xor-encode DEADBEEF input.bin output.bin

# Output in different formats
byvalver --format c input.bin output.c      # C array
byvalver --format python input.bin output.py # Python bytes
byvalver --format hexstring input.bin output.hex # Hex string

검증

항상 변환된 셸코드를 검증하십시오:```bash

Check for remaining bad bytes

python3 verify_denulled.py --bad-bytes "00,0a,0d" output.bin

Verify functional equivalence

python3 verify_functionality.py input.bin output.bin

root@kitploit:~
### 크로스 아키텍처 지원

`byvalver`는 `--arch` 플래그를 통해 여러 아키텍처를 지원합니다:

**x86 (32-bit Intel/AMD)** - 150개 이상의 전략으로 완전히 지원됨```bash
byvalver --arch x86 --bad-bytes "00" x86_shellcode.bin output.bin

x64 (64-bit Intel/AMD) - 완전 지원 (기본값)```bash byvalver --arch x64 --bad-bytes "00,0a,0d" x64_shellcode.bin output.bin

root@kitploit:~
**ARM (32-bit)** - 기본 전략을 갖춘 실험적 지원```bash
byvalver --arch arm --bad-bytes "00" arm_shellcode.bin output.bin

ARM64 (AArch64) - 기본 전략을 포함한 실험적 지원```bash byvalver --arch arm64 --bad-bytes "00,0a" arm64_shellcode.bin output.bin

root@kitploit:~
**참고:**
- ARM/ARM64 지원은 핵심 명령어(MOV, 산술, 로드/스토어)에 초점을 맞춥니다.
- ARM에서는 더 간단한 배드바이트 프로필(예: 널 바이트만)을 사용하세요.
- ARM/ARM64가 선택되면 실험 경고가 표시됩니다.
- 기본 아키텍처 불일치 감지 기능이 있어 셸코드가 잘못된 아키텍처인 경우 경고합니다.
- 자동 아키텍처 감지는 향후 릴리스에서 계획 중입니다.

### 배치 처리

전체 디렉터리 처리:```bash
# Process all .bin files recursively
byvalver -r --pattern "*.bin" input_dir/ output_dir/

# Apply HTTP profile to all shellcode in directory
byvalver -r --profile http-newline input_dir/ output_dir/

대화형 TUI

TUI 메인 메뉴

TUI 배치 처리

byvalver에는 1:1 CLI 기능 동등성을 갖춘 대화형 TUI(텍스트 사용자 인터페이스)가 포함되어 있습니다.

TUI는 다음을 포함한 모든 bad-byte 제거 작업을 위한 직관적인 시각적 인터페이스를 제공합니다:

  • 실시간 통계를 포함한 배치 처리
  • ML 구성 및
  • 포괄적인 파일 브라우징

--menu 플래그로 TUI를 실행하세요:```bash byvalver --menu

root@kitploit:~
### 주요 기능:

TUI는 모든 CLI 기능을 포괄하는 9개의 메인 메뉴 옵션을 제공합니다:

1. **단일 파일 처리** - 개별 셸코드 파일을 시각적 피드백과 함께 처리
2. **디렉토리 일괄 처리** - 실시간 진행 상황 추적으로 전체 디렉토리 처리
3. **처리 옵션 구성** - 이중 위상 모드, PIC 생성, ML, 상세, 시뮬레이션 실행 전환
4. **나쁜 바이트 설정** - 수동 입력 또는 13개의 사전 정의된 프로필 중 선택
5. **출력 형식 설정** - 5가지 출력 형식(raw, C, Python, PowerShell, hexstring) 중 선택
6. **ML 메트릭 구성** - ML 전략 선택 및 메트릭 추적 구성
7. **고급 옵션** - XOR 인코딩, 타임아웃, 제한, 검증 설정
8. **구성 로드/저장** - INI 스타일 구성 파일 관리
9. **About byvalver** - 버전 및 도움말 정보

### 시각적 파일 브라우저:

- **디렉토리 탐색** - 화살표 키 또는 vi 스타일의 j/k 키 사용
- **파일/디렉토리 구분** - [FILE] 및 [DIR] 표시기
- **파일 크기 표시** - 사람이 읽기 쉬운 형식(B, KB, MB, GB)
- **확장자 필터링** (예: *.bin)
- **지능형 경로 처리** - 파일 경로가 제공되면 자동으로 상위 디렉토리로 이동
- **정렬된 표시** - 디렉토리 우선, 그 다음 알파벳순
- **다중 선택 모드**:
  - 파일 선택 모드: 디렉토리로 이동, 파일만 선택
  - 디렉토리 선택 모드: 일괄 처리를 위한 디렉토리 선택
  - 두 모드: 파일 또는 디렉토리 선택

### 실시간 업데이트를 통한 일괄 처리:

일괄 처리 화면은 **실시간 피드백**을 제공합니다:

- **진행 표시줄** - 처리된 파일 표시 (예: `[==============        ] 52/100 파일`)
- **구성 표시** - 활성 설정 표시:
  - 나쁜 바이트 수 및 사용된 프로필
  - 처리 옵션 (`Biphasic`, `PIC`, `XOR`, ML)
  - 출력 형식
- **라이브 파일 통계** - 색상 코드 상태:
  - 완료: X / Y (시도한 파일 / 총 파일)
  - ✅ 성공 (녹색) - 남은 나쁜 바이트 없음
  - ❌ 실패 (빨간색) - 오류 또는 남은 나쁜 바이트
  - 성공률 백분율
- **현재 파일 표시** - 굵은 텍스트
- **다음 파일 미리보기** - 노란색/어두운 텍스트
- **동적 전략 통계 표** 표시:
  - **모든 활성 전략** (10개 전략 제한 없음)
  - **전체 전략 이름** (최대 50자, 잘림 없음)
  - 전략별 성공/실패 횟수
  - 성공률 백분율
  - 성능별 색상 코드 (녹색 ≥80%, 노란색 50-79%, 빨간색 <50%)
  - 50ms마다 실시간 업데이트

### 구성 관리:

**INI 스타일 형식**으로 구성을 로드 및 저장:```ini
[general]
verbose = 0
quiet = 0
show_stats = 1

[processing]
use_biphasic = 0
use_pic_generation = 0
encode_shellcode = 0
xor_key = 0xDEADBEEF

[output]
output_format = raw

[bad_bytes]
bad_bytes = 00

[ml]
use_ml_strategist = 0
metrics_enabled = 0

[batch]
file_pattern = *.bin
recursive = 0
preserve_structure = 1

example.conf에서 완전한 구성 템플릿을 확인할 수 있습니다.

BAD BYTE 구성:

2가지 입력 방법 사용 가능:

  1. 수동 입력 - 쉼표로 구분된 16진수 값 (예: 00,0a,0d)
  2. 사전 정의된 프로필 - 일반적인 시나리오를 위한 13개 프로필:
    • null-only, http-newline, http-whitespace
    • url-safe, sql-injection, xml-html
    • json-string, format-string, buffer-overflow
    • command-injection, ldap-injection
    • printable-only, alphanumeric-only

탐색:

  • 방향키 (↑↓) 또는 j/k (vi 스타일): 메뉴 옵션 간 이동
  • Enter: 강조 표시된 옵션 선택
  • q: 애플리케이션 종료 또는 작업 취소
  • 0-9: 숫자로 메뉴 옵션 빠르게 선택
  • Space: 현재 디렉터리 선택 (파일 브라우저 디렉터리 모드에서)

요구 사항:

대화형 모드를 사용하려면 시스템에 ncurses 라이브러리가 설치되어 있어야 합니다:```bash

Ubuntu/Debian

sudo apt install libncurses-dev

CentOS/RHEL/Fedora

sudo dnf install ncurses-devel

macOS (with Homebrew)

brew install ncurses

root@kitploit:~
애플리케이션은 ncurses 사용 가능 여부를 자동으로 감지하여 그에 따라 TUI 지원을 활성화합니다.

### 빌드 옵션:

TUI 지원은 ncurses 가용성에 따라 조건부 컴파일됩니다.

- 기본 빌드: `make` - ncurses가 있으면 TUI 포함
- TUI 강제 빌드: `make with-tui` - TUI 지원으로 빌드 (ncurses가 없으면 실패)
- TUI 제외: `make no-tui` - 더 작은 바이너리를 위해 TUI 없이 빌드

### 예제 워크플로우:

**단일 파일 처리:**
1. TUI 실행: `byvalver --menu`
2. "1. 단일 파일 처리" 선택
3. 시각적 파일 브라우저를 사용하여 입력 파일 찾기
4. 출력 파일 위치 찾기
5. 처리 시작 및 결과 확인

**배치 처리:**
1. TUI 실행: `byvalver --menu`
2. "2. 디렉토리 배치 처리" 선택
3. 셸코드 파일이 있는 입력 디렉토리 찾기
4. 출력 디렉토리 찾기
5. 파일 패턴(기본값: <file>.bin) 및 재귀 옵션 구성
6. 배치 처리 시작 및 전략 통계와 함께 실시간 진행 상황 보기

**설정 관리:**
1. TUI에서 모든 옵션 구성 (나쁜 바이트, 출력 형식, ML 등)
2. "8. 설정 로드/저장" 선택
3. 현재 설정을 파일로 저장 (예: `my_config.conf`)
4. 나중에: 설정 파일을 로드하여 모든 설정 복원

### 성능 참고 사항:

- **단일 파일 처리**: 즉각적인 시각적 피드백, 일반적인 셸코드에 대해 1초 미만
- **배치 처리**: 시각적 업데이트를 위해 파일 간 50ms 지연
- **대형 디렉토리(100개 이상 파일)**: 스캔에 1-2초 소요 가능
- **전략 초기화**: 첫 실행 시 2-5초 (세션당 한 번 비용)

### 터미널 호환성:

TUI는 다음에서 테스트되었습니다:
- GNOME Terminal
- Konsole
- xterm
- iTerm2 (macOS)
- Windows Terminal (WSL)
- tmux/screen (작동하지만 색상 제한 있을 수 있음)

**권장 최소 터미널 크기**: 80x24 문자 (배치 처리 중 전체 전략 테이블을 위해 100x30 이상 권장)

전체 TUI 문서, 문제 해결 및 고급 사용법은 [TUI_README.md](https://github.com/umpolungfish/byvalver/blob/main/TUI_README.md)를 참조하세요.

## 대상 지정 나쁜 바이트 추방

### 개요

`--bad-bytes` 옵션을 사용하여 셸코드에서 추방할 바이트 집합을 지정할 수 있습니다.

### 구현 세부 사항

`byvalver`는 다음을 통해 작동합니다:
1. 쉼표로 구분된 16진수 바이트 목록(예: `"00,0a,0d"`)을 구문 분석
2. O(1) 비트맵 조회를 사용하여 명령어에서 나쁜 바이트 식별
3. 널 바이트 제거에 사용되는 동일한 153개 이상의 변환 전략 적용
4. 출력에 지정된 나쁜 바이트가 포함되지 않았는지 확인

### 예상 동작

- **널 바이트만** (`--bad-bytes "00"` 또는 기본값): 높은 성공률 (테스트 코퍼스에서 100%)
- **여러 나쁜 바이트** (`--bad-bytes "00,0a,0d"`): 성공률은 다음에 따라 크게 달라질 수 있음:
  - 나쁜 것으로 표시된 특정 바이트
  - 입력 셸코드의 복잡성
  - 원래 셸코드에서 나쁜 바이트의 빈도
  - 특정 나쁜 바이트 집합에 대한 효과적인 대체 인코딩 존재 여부

### 권장 사항

1. **프로덕션 사용 시:** 기본 널 바이트 추방 모드 사용
2. **실험용:** 특정 사용 사례에서 `--bad-bytes` 기능을 테스트하고 출력을 검증
3. **항상 확인:** `verify_denulled.py --bad-bytes "XX,YY"`를 사용하여 모든 나쁜 바이트가 제거되었는지 확인
4. **변동성 예상:** 일부 셸코드는 특정 나쁜 바이트 집합으로 완전히 정리되지 않을 수 있음

### 향후 개선 사항

일반적인 나쁜 바이트 기능은 다음을 위한 기반을 제공합니다:
- 특정 나쁜 바이트 패턴에 대한 전략 최적화
- 일반적인 나쁜 바이트 조합을 대상으로 하는 새로운 전략의 자동 발견
- 다양한 나쁜 바이트 훈련 데이터로 ML 모델 재훈련
- 확장된 테스트 및 검증

> [!CAUTION]
> 여러 나쁜 바이트와 함께 `--bad-bytes`를 사용하면 변환 작업의 복잡성이 크게 증가합니다. 너무 많은 바이트가 나쁜 것으로 표시되면 도구가 대체 인코딩을 소진하여 일부 셸코드를 변환하는 것이 불가능해질 수 있습니다. 작은 나쁜 바이트 집합(예: `"00,0a"`)으로 시작하고 출력을 테스트하면서 점진적으로 확장하십시오. 배포 전에 항상 `verify_denulled.py`로 결과를 확인하십시오.

## 나쁜 바이트 프로필

### 개요

사용자는 **나쁜 바이트 프로필** - 일반적인 익스플로잇 시나리오에 대해 미리 구성된 바이트 집합을 선택할 수도 있습니다. 수동으로 16진수 값을 지정하는 대신 컨텍스트에 맞는 프로필 이름을 사용하십시오.

### 사용 가능한 프로필

| 프로필 | 난이도 | 나쁜 바이트 수 | 사용 사례 |
|---------|-----------|----------|-----------|
| `null-only` | ░░░░░ 쉬움 | 1 | 고전적인 버퍼 오버플로우 (기본값) |
| `http-newline` | █░░░░ 낮음 | 3 | `HTTP` 헤더, 라인 기반 프로토콜 |
| `http-whitespace` | █░░░░ 낮음 | 5 | `HTTP` 매개변수, 명령어 삽입 |
| `url-safe` | ███░░ 중간 | 23 | `URL` 매개변수, `GET` 요청 |
| `sql-injection` | ███░░ 중간 | 5 | `SQL` 삽입 컨텍스트 |
| `xml-html` | ███░░ 중간 | 6 | `XML`/`HTML` 삽입, `XSS` |
| `json-string` | ███░░ 중간 | 34 | `JSON` API 삽입 |
| `format-string` | ███░░ 중간 | 3 | 포맷 문자열 취약점 |
| `buffer-overflow` | ███░░ 중간 | 5 | 필터링이 있는 스택/힙 오버플로우 |
| `command-injection` | ███░░ 중간 | 20 | 셸 명령어 삽입 |
| `ldap-injection` | ███░░ 중간 | 5 | `LDAP` 쿼리 |
| `printable-only` | ████░ 높음 | 161 | 텍스트 기반 프로토콜 (인쇄 가능 ASCII만) |
| `alphanumeric-only` | █████ 극단적 | 194 | 영숫자만 셸코드 (0-9, A-Z, a-z) |

### 사용법```bash
# List all available profiles
byvalver --list-profiles

# Use a specific profile
byvalver --profile http-newline input.bin output.bin

# Combine with other options
byvalver --profile sql-injection --biphasic --format c input.bin output.c

프로필 예시

HTTP Contexts (NULL, LF, CR 제거):```bash byvalver --profile http-newline payload.bin http_safe.bin

root@kitploit:~
**SQL Injection** (NULL, 따옴표, 세미콜론 제거):```bash
byvalver --profile sql-injection payload.bin sql_safe.bin

영숫자만 허용 (극도로 어려움 - 0-9, A-Z, a-z만 허용):```bash byvalver --profile alphanumeric-only payload.bin alphanum.bin

root@kitploit:~
자세한 프로필 문서는 [docs/BAD_BYTE_PROFILES.md](https://github.com/umpolungfish/byvalver/blob/main/docs/BAD_BYTE_PROFILES.md)를 참조하세요.


## 기능

### 높은 NULL-BYTE 제거 성공률
<div align="center">
  <strong>일반적이고 복잡한 널 소스를 대표하는 다양한 테스트 코퍼스에서 100% 널-바이트 제거를 달성했습니다.</strong>
</div>

> 이 성공률은 광범위하게 테스트 및 최적화된 널-바이트(`\x00`) 제거에만 적용됩니다.

### 고급 변환 엔진
170+ 전략 구현으로 사실상 모든 일반적인 널-바이트 소스와 일반적인 배드-바이트 패턴을 다룹니다 (v3.0, v3.6, v3.7, v3.8, v4.0 및 v4.1에서 여러 새로운 전략 패밀리 추가됨):
- `CALL/POP` 및 스택 기반 즉시 로딩
- `PEB` 트래버설 및 해시 API 해석
- 복잡한 알고리즘을 사용한 고급 해시 기반 API 해석
- 다중 DLL 로딩을 위한 다단계 `PEB` 트래버설
- `SALC`, `XCHG` 및 플래그 기반 제로잉
- 산술 대체를 위한 `LEA`
- 시프트 및 산술 값 구성
- 다중 `PUSH` 문자열 빌딩
- Windows 구조를 위한 스택 기반 구조 구성
- 고급 패턴을 사용한 스택 기반 문자열 구성
- `SIB` 및 변위 재작성
- 조건부 점프 변위 처리
- 레지스터 재매핑 및 체이닝
- 버퍼 초기화를 위한 향상된 `SALC`+`REP STOSB`
- 고급 문자열 연산 변환
- 원자 연산 인코딩 체인
- `FPU` 스택 기반 즉시 인코딩
- `XLAT` 테이블 기반 바이트 변환
- `LAHF`/`SAHF` 플래그 보존 체인
- **v3.6 신규**: `BCD` 산술 난독화 (`AAM`/`AAD`)
- **v3.6 신규**: `ENTER`/`LEAVE` 스택 프레임 대안
- **v3.6 신규**: 상수에 대한 `POPCNT`/`LZCNT`/`TZCNT` 비트 카운팅
- **v3.6 신규**: `SIMD` `XMM` 레지스터 즉시 로딩
- **v3.6 신규**: `JECXZ`/`JRCXZ` 제로-테스트 점프 변환
- **v3.7 신규**: 조건부 점프 opcode 배드-바이트 제거 (나쁜 opcode를 가진 JE/JNE/JG/JL)
- **v3.7 신규**: 레지스터-투-레지스터 전송 배드-바이트 opcode (MOV/XCHG 대안)
- **v3.7 신규**: 스택 프레임 포인터 배드-바이트 제거 (PUSH/POP EBP 대안)
- **v3.7 신규**: ModR/M 및 SIB 바이트 배드-바이트 제거 (대체 레지스터 조합)
- **v3.7 신규**: 멀티-바이트 즉시 부분 배드-바이트 (회전 최적화)
- **v3.7 신규**: 비트 연산 즉시 배드-바이트 (레지스터를 사용한 AND/OR/XOR/TEST)
- **v3.7 신규**: 1-바이트 opcode 대체 (INC/DEC/PUSH/POP 대안)
- **v3.7 신규**: 문자열 명령어 접두사 배드-바이트 (REP 접두사를 루프로 변환)
- **v3.7 신규**: 피연산자 크기 접두사 배드-바이트 (16비트에서 32비트 변환)
- **v3.7 신규**: 세그먼트 레지스터 배드-바이트 감지 (FS/GS 접두사 감지)
- **v3.8 신규**: 프로필 인식 SIB 생성 시스템 (하드코딩된 0x20 SIB 바이트 제거)
- **v3.8 신규**: 조건부 점프 처리 및 부분 레지스터 최적화에 대한 중요 수정
 - **v3.9 신규**: 여러 NOP 등가물을 사용한 다형성 NOP 삽입
 - **v3.9 신규**: 즉시 값 난독화를 위한 상수 언폴딩
 - **v3.9 신규**: XCHG 패턴을 사용한 레지스터 이름 변경 난독화
 - **v3.9 신규**: 산술 연산을 위한 스택 스필 난독화
 - **v3.9 신규**: NOP 삽입을 통한 명령어 재정렬
 - **v3.9 신규**: 런타임 자체 수정 전략 (기본 구현)
 - **v3.9 신규**: 중첩 명령어 생성
  - **v4.0 신규**: Capstone 동적 모드 선택을 통한 ARM/ARM64 크로스-아키텍처 지원
  - **v4.0 신규**: MVN 변환을 사용한 ARM 즉시 인코딩
  - **v4.0 신규**: ARM MOV 전략 (원본, MVN 기반 널 회피)
  - **v4.0 신규**: ARM 산술 전략 (SUB 변환을 사용한 ADD)
  - **v4.0 신규**: ARM 메모리 전략 (LDR/STR 통과)
  - **v4.0 신규**: ARM 분기 전략 (B/BL 통과)
  - **v4.1 신규**: SETcc 플래그 누적 체인 (조건부 점프 제거)
  - **v4.1 신규**: 다형성 즉시 값 구성 (여러 인코딩 변형)
  - **v4.1 신규**: 레지스터 의존성 체인 최적화 (다중 명령어 패턴)
  - **v4.1 신규**: RIP-상대 주소 지정 최적화 (x64 PIC 개선)
  - **v4.1 신규**: 음수 변위 메모리 주소 지정 (변위 대안)
  - **v4.1 신규**: 멀티-바이트 NOP 인터레이싱 (난독화 NOP 변형)
  - **v4.1 신규**: 비트 조작 상수 구성 (BSWAP, BSF, POPCNT, BMI2)
  - **v4.2 신규**: x86/x64 전략 호환성 계층 (x64에서 128개 이상의 x86 전략 활성화)
  - **v4.2 신규**: MOVABS 64비트 즉시 전략 (XOR/ADD 구성을 사용한 REX.W MOV)
  - **v4.2 신규**: SBB 즉시 제로 전략 (SBB AL/AX/EAX, 0 변환)
  - **v4.2 신규**: TEST 큰 즉시 전략 (레지스터 피연산자를 사용한 TEST EAX/RAX, imm32)
  - **v4.2 신규**: SSE 메모리 연산 전략 (MOVUPS/MOVAPS/MOVDQU/MOVDQA 널 제거)
  - **v4.2 신규**: LEA x64 변위 전략 (REX 접두사를 사용한 큰 변위 처리)
  - **v4.2 신규**: 확장 레지스터 지원 (R8-R15 레지스터 인코딩 유틸리티)
 - `MOV`, `ADD/SUB`, `XOR`, `LEA`, `CMP`, `PUSH` 등에 대한 포괄적인 지원

엔진은 다중 패스 처리(난독화 → 널 제거)를 사용하며, 예외 상황에 대한 강력한 대체 메커니즘을 갖추고 있습니다.

**v3.8 중요 개선사항**: http-whitespace 프로필을 위한 다중 전략 수정
- **문제**: 하드코딩된 배드 바이트로 인해 79.1% 실패율 발생 (125/158 파일 실패)
- **식별된 근본 원인**:
  - 15개 전략 파일에서 45개 이상의 하드코딩된 SIB 바이트 0x20 (SPACE) 인스턴스
  - 검증 없이 배드 바이트 건너뛰기 오프셋을 사용하는 조건부 점프 핵심 로직
  - 배드 바이트를 직접 쓰는 부분 레지스터 최적화
  - 5개의 높은 우선순위 전략 파일에 추가적인 하드코딩된 배드 바이트
- **구현된 솔루션**:
  - 3단계 대체(표준 → DISP8 → PUSHPOP)를 사용한 중앙 집중식 프로필 인식 SIB 생성
  - 배드 바이트를 피하기 위한 조건부 점프 건너뛰기 오프셋의 동적 NOP 패딩
  - 분해를 사용한 부분 레지스터 값의 지능형 바이트 구성
  - 하드코딩된 바이트를 프로필 인식 대안으로 체계적으로 대체
- **영향**: **79.1% 실패 → 35.4% 실패** (성공률: **20.9% → 64.6%**)
- **수정된 파일**: 이제 102개 파일이 성공적으로 처리됨 (+69개 파일, 3.09배 개선)
- **전략 성공률**:
  - 부분 레지스터 최적화: 25% → **100%** (12/12 변환)
  - mov_mem_disp_enhanced: 0% → **98.5%** (1605/1629 변환)
  - indirect_call_mem: 0% → **98.5%** (135/137 변환)
  - indirect_jmp_mem: 0% → **98.5%** (134/136 변환)
- **성능**: 지능형 캐싱을 통한 제로 오버헤드, 평균 크기 2% 미만 증가

### 성능 지표

184개의 다양한 셸코드 샘플 처리에 대한 실제 성능 데이터:```
📊 Batch Processing Statistics:

Success Rate:            184/184             █████████████████████████   100.00%
Files Processed:         184                 █████████████████████████   100.00%
Failed:                  0                   ░░░░░░░░░░░░░░░░░░░░░░░░░   00.00%
Skipped:                 0                   ░░░░░░░░░░░░░░░░░░░░░░░░░   00.00%

각 테스트가 끝나면 대상 시스템이 재부팅되며, 결과는 사용자가 지정한 이메일로 전송됩니다.``` 🧠 ML Strategy Selection Performance:

Processing Speed: Instructions/sec: 19.5 inst/sec ████████████░░░░░░░░░░░░░ Total Instructions: 20,760 Session Duration: 1,067 seconds

Null-Byte Elimination: Eliminated: 18,636/20,760 ██████████████████████░░░ 89.77% Strategies Applied: 20,129 Success Rate: 92.57% ███████████████████████░░ 92.57%

Learning Progress: Positive Feedback: 18,636 ███████████████████████░░ 92.57% Negative Feedback: 1,493 █░░░░░░░░░░░░░░░░░░░░░░░░ 07.43% Total Iterations: 40,889 Avg Confidence: 0.0015 ░░░░░░░░░░░░░░░░░░░░░░░░░ 00.15%

root@kitploit:~
[빌드](https://github.com/chaitin/xray/tree/master/source)를 소스로부터 하는 것도 옵션입니다.```
🏆 Top Performing Denullification Strategies:

Strategy                                  Attempts    Success%    Confidence
--------                                  --------    --------    ----------
ret_immediate                                  134    █████████████░░░░░░░░░░░░   50.00%
MOVZX/MOVSX Null-Byte banishment              162    █████████████░░░░░░░░░░░░   50.00%
transform_mov_reg_mem_self                     774    █████████████░░░░░░░░░░░░   50.00%
cmp_mem_reg_null                                96    ████████████░░░░░░░░░░░░░   46.88%
cmp_mem_reg                                    264    ████████████░░░░░░░░░░░░░   46.97%
lea_disp_null                                 3900    ███████████░░░░░░░░░░░░░░   45.38%
transform_add_mem_reg8                        2012    ███████████░░░░░░░░░░░░░░   43.49%
Push Optimized                                4214    ███████░░░░░░░░░░░░░░░░░░   29.31%
ModRM Byte Null Bypass                          82    ██████░░░░░░░░░░░░░░░░░░░   25.61%
conservative_arithmetic                       5172    █████░░░░░░░░░░░░░░░░░░░░   21.37%
arithmetic_addsub_enhanced                    1722    ████░░░░░░░░░░░░░░░░░░░░░   18.12%
PUSH Immediate Null-Byte banishment          3066    ████░░░░░░░░░░░░░░░░░░░░░   16.54%
SIB Addressing                                9560    ████░░░░░░░░░░░░░░░░░░░░░   16.03%
generic_mem_null_disp_enhanced               22130    ███░░░░░░░░░░░░░░░░░░░░░░   15.52%
SALC-based Zero Comparison                    1654    ███░░░░░░░░░░░░░░░░░░░░░░   12.88%

루트 키 탐지

KeyCheck가 이 방식으로 도구를 사용하려면 암호화된 데이터 파일 내의 알려진 위치에 있는 알려진 평문 바이트 쌍이 필요합니다. 현재 이 도구는 이것이 파일의 첫 번째/마지막 블록이라고 가정합니다.``` ⚡ Processing Efficiency:

Learning Rate: 1.97 feedback/instruction Weight Update Avg: 0.042650 Weight Update Max: 0.100000 Total Weight Updates: 1724.68

Strategy Coverage: Total Strategies: 153+ Strategies Activated: 117 ████████████████████████░ 95.90% Zero-Attempt: 5 █░░░░░░░░░░░░░░░░░░░░░░░░ 04.10%

root@kitploit:~
### 난독화 계층
`--biphasic` 모드는 디널링 전에 분석 방지 난독화를 추가합니다:
- 제어 흐름 평탄화
- 디스패처 패턴
- 레지스터 재할당
- 상태 난독화
- 데드 코드 삽입
- NOP 슬레드
- 명령어 대체
- 동등 연산
- 스택 프레임 조작
- API 해석 숨기기
- 문자열 인코딩
- 상수 인코딩
- 안티 디버깅
- VM 탐지 기법

### ML 기반 전략 선택

> **성숙도: 베타 v2.0** — 널 바이트 제거 데이터셋으로 훈련됨. 일반적인 배드 바이트 사용 사례를 위해 재훈련 필요.

**아키텍처**:
- **원-핫 명령어 인코딩** (51차원)이 스칼라 명령어 ID를 대체합니다
- **컨텍스트 윈도우**는 4개 명령어(현재 + 이전 3개)의 슬라이딩 버퍼를 사용합니다
- **고정 특징 추출**은 명령어당 안정적인 84차원 레이아웃을 사용합니다
- **안정적인 전략 레지스트리**로 일관된 NN 출력 매핑 보장
- **전체 역전파**를 모든 레이어(입력→은닉→출력)에 적용
- 소프트맥스 + 교차 엔트로피 손실에 대한 **올바른 그래디언트 계산**
- **출력 마스킹**이 소프트맥스 전에 유효하지 않은 전략을 필터링합니다
- 적절한 가중치 초기화를 위한 **He/Xavier 초기화**
- 3층 피드포워드 신경망 (336→512→200)
- 성공/실패 피드백으로 적응형 학습
- 예측, 정확도, 신뢰도 추적
- 결정적 순서로의 정상적인 대체

> [!WARNING]
> ML 모드는 실험적이며 새로운 아키텍처로 추가 훈련/검증이 필요합니다.

### 배치 처리
- 재귀적 디렉토리 탐색 (`-r`)
- 사용자 정의 파일 패턴 (`--pattern "*.bin"`)
- 구조 보존 또는 평탄화
- 오류 시 계속 또는 엄격 모드
- 모든 옵션(이상성, PIC, `XOR` 등)과 호환 가능
- **향상된 출력**:
  - 파일별 크기 변환 및 비율
  - 실패 시 상세 배드 바이트 식별
  - 요약에서 성공/실패 비율
  - 실패한 파일 목록 (처음 10개 인라인 표시)
  - 엄격한 성공 정의: 남은 배드 바이트가 있는 파일은 실패로 표시

**배치 처리 출력 예시:**```
===== BATCH PROCESSING SUMMARY =====
Total files:       8
Successfully processed: 1 (12.5%)
Failed:            7 (87.5%)
Skipped:           0

Total input size:  650 bytes
Total output size: 764 bytes
Average size ratio: 1.18x

Bad bytes:    5 configured
Configured set:    0x00, 0x09, 0x0a, 0x0d, 0x20

FAILED FILES (7):
  - shellcode1.bin
  - shellcode2.bin
  ...

[!TIP] 대규모 셸코드 컬렉션을 배치 처리할 때는 --no-continue-on-error를 사용하여 문제가 있는 파일을 조기에 식별한 후, --pattern으로 실패를 제외하고 성공적으로 처리하세요. --verbose 플래그는 진행 상황을 추적하고 특정 셸코드 코퍼스에 가장 적합한 전략을 식별하는 데 도움이 됩니다. 파일은 남은 배드 바이트가 0개일 때만 성공으로 간주됩니다. 부분 성공은 실패로 처리됩니다.

출력 옵션

  • 형식: raw binary, C 배열, Python bytes, 16진수 문자열
  • XOR 인코딩(디코더 스텁 포함) (--xor-encode 0xDEADBEEF)
  • 위치 독립 코드 (--pic)
  • 자동 출력 디렉터리 생성

통계

--stats 플래그를 사용하면 byvalver가 상세 분석을 제공합니다.

전략 사용 통계:

  • 적용된 변환 전략 표시
  • 각 전략의 성공/실패율
  • 전략별 적용 횟수 및 평균 출력 크기

파일 복잡도 분석:

  • 가장 복잡한 파일(명령어 수 기준)
  • 입력 크기별 가장 크고 작은 파일
  • 가장 큰 확장 비율을 가진 파일
  • 파일별 배드 바이트 제거 통계

배치 처리 요약:

  • 성공/실패 비율
  • 상세 배드 바이트 구성
  • 실패한 파일 목록(전체 목록 저장 옵션 포함)

출력 예:``` ===== BATCH PROCESSING SUMMARY ===== Total files: 162 Successfully processed: 131 (80.9%) Failed: 31 (19.1%) Skipped: 0

Total input size: 35772920 bytes Total output size: 81609 bytes Average size ratio: 0.00x

Bad bytes: 3 configured Configured set: 0x00, 0x0a, 0x0d

FAILED FILES (31):

  • ./winwin.bin
  • ./stairslide_secure.bin ...

📊 DETAILED STATISTICS

STRATEGY USAGE STATISTICS: ┌─────────────────────────────────────────┬─────────┬─────────┬──────────────┬────────────────┐ │ Strategy Name │ Success │ Failure │ Applications │ Avg Output Size│ ├─────────────────────────────────────────┼─────────┼─────────┼──────────────┼────────────────┤ │ push_immediate_strategy │ 45 │ 3 │ 48 │ 12.34 │ │ mov_reg_mem_self │ 32 │ 1 │ 33 │ 8.21 │ │ ... │ ... │ ... │ ... │ ... │ └─────────────────────────────────────────┴─────────┴─────────┴──────────────┴────────────────┘

FILE COMPLEXITY ANALYSIS: Most Complex Files (by instruction count):

  • ./complex_payload.bin: 1245 instructions, 4096 -> 5201 bytes (1.27x)

Largest Files (by input size):

  • ./large_payload.bin: 8192 bytes input, 10485 bytes output (1.28x)

Smallest Files (by input size):

  • ./tiny_shellcode.bin: 64 bytes input, 89 bytes output (1.39x)

Largest Expansion (by size ratio):

  • ./expanded.bin: 512 -> 1024 bytes (2.00x expansion)
root@kitploit:~
### 검증 스위트
검증을 위한 Python 도구:
- `verify_denulled.py`: 잘못된 바이트가 없음을 보장합니다 (사용자 정의 검증을 위해 `--bad-bytes` 지원)
- `verify_functionality.py`: 실행 패턴을 확인합니다
- `verify_semantic.py`: 동등성을 검증합니다

## 아키텍처

`byvalver`는 모듈식 전략 패턴 설계를 사용합니다:
- 패스 1: (선택 사항) 분석 방지를 위한 난독화
- 패스 2: 널 바이트 제거를 위한 Denullification
- 전략 최적화를 위한 ML 계층
- 확장 가능한 처리를 위한 배치 시스템

<div align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/9982/8d3a1e20481460fedecaecda6f87bc21355fbbb1f1ef58d7fef4427eda36a381.png" alt="전략 카테고리 분류" width="700">
</div>

## 시스템 요구 사항

- **운영체제**: Linux (Ubuntu/Debian/Fedora), macOS (Homebrew 사용), Windows (WSL/MSYS2 경유)
- **CPU**: 최신 명령어를 지원하는 x86/x64
- **RAM**: 1GB 여유
- **디스크**: 50MB 여유
- **도구**: `C` 컴파일러, Make, Git (권장)

## 종속성

- **핵심**: GCC/Clang, GNU Make, `Capstone` (v4.0+), `NASM` (v2.13+), xxd
- **선택 사항**: Clang-Format, Cppcheck, Valgrind
- **ML 학습**: 수학 라이브러리 (포함됨)

### 설치 명령어

**Ubuntu/Debian:**```bash
sudo apt update
sudo apt install build-essential nasm xxd pkg-config libcapstone-dev clang-format cppcheck valgrind

macOS (Homebrew) — macOS Tahoe 26 (그 이상):```bash

Core build deps

brew install capstone nasm pkg-config

xxd is typically already present at /usr/bin/xxd on macOS.

If it isn't available for some reason, install Vim (xxd is bundled with it):

brew install vim

root@kitploit:~
### macOS/Homebrew 빌드 수정 사항 (저장소 변경 사항)
최근 macOS/Homebrew 호환성을 개선하기 위해 변경 사항이 적용되었습니다 (특히 Apple Silicon 및 Homebrew 접두사 `/opt/homebrew`에서):
- `Makefile` 및 `makefile`을 업데이트하여 **컴파일 시 `CPPFLAGS` 사용** 및 **링킹 시 `LDLIBS` 사용**을 적용하도록 하여, `pkg-config`로 발견된 Capstone 플래그가 적용되도록 했습니다.
- Homebrew의 `pkg-config`가 생성하는 Capstone include 경로를 `.../include/capstone`에서 `.../include`로 정규화하여, 프로젝트의 `#include <capstone/capstone.h>`가 올바르게 해석되도록 했습니다.

변경 사항 요약 (높은 수준):
- `$(CC) $(CFLAGS) -c ...` → `$(CC) $(CFLAGS) $(CPPFLAGS) -c ...`
- `$(CC) $(CFLAGS) -o ... $(LDFLAGS)` → `$(CC) $(CFLAGS) $(CPPFLAGS) -o ... $(LDFLAGS) $(LDLIBS)`
- `CAPSTONE_CFLAGS := pkg-config --cflags capstone` → `<capstone/capstone.h>`와 호환되는 include 경로로 정규화됨

### 문제 해결 (macOS)```bash
# Verify xxd is available (macOS usually ships /usr/bin/xxd)
command -v xxd

# Verify Capstone is discoverable via pkg-config
pkg-config --cflags capstone
pkg-config --libs capstone

# Clean rebuild
make clean
make

Windows (WSL): Ubuntu/Debian과 동일합니다.

빌드

빌드에는 Makefile을 사용하세요:

  • 기본: make (최적화된 실행 파일)
  • 디버그: make debug (심볼, 샌타이저)
  • 릴리스: make release (-O3, 네이티브)
  • 정적: make static (자체 포함)
  • ML 트레이너: make train (bin/train_model)
  • 정리: make clean 또는 make clean-all

사용자 정의:```bash make CC=clang CFLAGS="-O3 -march=native" CPPFLAGS="$(pkg-config --cflags capstone)"

root@kitploit:~
설정 보기: `make info`

## 설치

전역 설치:```bash
sudo make install
sudo make install-man

제거:```bash sudo make uninstall

root@kitploit:~
GitHub에서:```bash
curl -sSL https://raw.githubusercontent.com/umpolungfish/byvalver/main/install.sh | bash

사용법```bash

byvalver [OPTIONS] [output]

root@kitploit:~
- 입력/출력은 파일 또는 디렉토리(자동 배치)입니다.

**주요 옵션:**
- `-h, --help`: 도움말
- `-v, --version`: 버전
- `-V, --verbose`: 상세 출력
- `-q, --quiet`: 조용히
- `--bad-bytes BYTES`: 제거할 쉼표로 구분된 16진수 바이트(기본값: "00")
- `--profile NAME`: 미리 정의된 배드바이트 프로필 사용(예: http-newline, sql-injection)
- `--list-profiles`: 사용 가능한 모든 배드바이트 프로필 나열
- `--biphasic`: 난독화 + null 제거
- `--pic`: 위치 독립적
- `--ml`: ML 전략 선택
- `--xor-encode KEY`: 스텁과 함께 `XOR`
- `--format FORMAT`: raw|c|python|hexstring
- `-r, --recursive`: 재귀적 배치
- `--pattern PATTERN`: 파일 글로브
- `--no-preserve-structure`: 출력 평탄화
- `--no-continue-on-error`: 오류 시 중단
- `--menu`: 대화형 TUI 메뉴 실행

**예시:**```bash
# Default: banish null bytes only (well-tested, recommended)
byvalver shellcode.bin clean.bin

# v3.0 NEW: List available bad-byte profiles
byvalver --list-profiles

# v3.0 NEW: Use predefined profile for HTTP contexts (eliminates 0x00, 0x0A, 0x0D)
byvalver --profile http-newline shellcode.bin clean.bin

# v3.0 NEW: Use profile for SQL injection contexts
byvalver --profile sql-injection shellcode.bin clean.bin

# v3.0 NEW: Use profile for URL-safe shellcode
byvalver --profile url-safe shellcode.bin clean.bin

# v3.0 NEW: Manual bad-byte specification (experimental - not extensively tested)
byvalver --bad-bytes "00,0a,0d" shellcode.bin clean.bin

# Combined with other features
byvalver --profile http-newline --biphasic --ml input.bin output.bin

# Batch processing with profile
byvalver -r --profile http-whitespace --pattern "*.bin" shellcodes/ output/

# Launch interactive TUI mode
byvalver --menu

난독화 전략

byvalver의 난독화 패스(--biphasic 옵션으로 활성화)는 분석 방지 기술을 적용합니다:

핵심 난독화 기술

  • MOV Register Exchange: XCHG/push-pop 패턴
  • MOV Immediate: 산술 분해
  • Arithmetic Substitution: 복잡한 등가 변환
  • Memory Access: 간접 참조 및 LEA
  • Stack Operations: 수동 ESP 처리
  • Conditional Jumps: SETcc 및 이동
  • Unconditional Jumps: 간접 메커니즘
  • Calls: PUSH + JMP

우선순위는 단순 대체(낮음)보다 분석 방지(높음)를 선호합니다.

자세한 전략 문서는 OBFUSCATION_STRATS를 참조하세요.

NULL 제거 전략

핵심 NULL 제거 패스는 170개 이상의 전략을 사용합니다:

MOV 전략

  • 원본 통과
  • NEG, NOT, XOR, 시프트, ADD/SUB 분해

산술

  • 원본, NEG, XOR, ADD/SUB

점프/제어

  • CALL/JMP 간접
  • 일반 메모리 변위
  • 조건부 오프셋 제거

고급

  • ModR/M 우회
  • 플래그 보존 TEST
  • SIB 주소 지정
  • PUSH 최적화
  • Windows 전용: CALL/POP, PEB 해싱, SALC, LEA 산술, 시프트, 스택 문자열 등.

최신 x64 기능

  • RIP 상대 최적화: 오프셋 분해, 이중 RIP 계산, 스택 기반 방법
  • 비트 조작: BSWAP 바이트 재정렬, BSF/BSR 2의 거듭제곱 구성, POPCNT 비트 카운팅, BMI2 PEXT/PDEP
  • 플래그 누적: SETcc 기반 조건부 점프 제거 (선형 플래그 연산)

난독화 강화

  • 다중 바이트 NOP 인터레이스: 산술 NOP, 레지스터 회전, 조건부 NOP, FPU 연산
  • 레지스터 종속성 체인: 다중 명령어 패턴 최적화, 명령어 재배열
  • 음수 변위 주소 지정: 베이스 레지스터 조정, 대체 주소 지정 모드

메모리/변위

  • 변위 NULL 처리
  • LEA 대체

전략은 ML 또는 결정론적 순서로 우선순위가 지정되어 선택됩니다.

모듈식 레지스트리를 사용하면 새로운 전략을 쉽게 추가하여 새로운 셸코드 패턴을 처리할 수 있습니다.

자세한 전략 문서는 DENULL_STRATS를 참조하세요.

ML 훈련 및 검증

훈련

빌드 트레이너: make train

실행: ./bin/train_model

  • 데이터: ./shellcodes/
  • 출력: ./ml_models/byvalver_ml_model.bin
  • 구성: 10k 샘플, 50 에포크, 20% 검증, 학습률 0.001, 배치 32

모델은 런타임에 경로 해석과 함께 자동 로드됩니다.

ML 모드 테스트```bash

Smoke test

./bin/byvalver --ml shellcodes/linux_x86/execve.bin output.bin

Check registry initialization

./bin/byvalver --ml test.bin output.bin 2>&1 | grep "ML Registry"

Expected: "ML Registry] Initialized with XXX strategies"

Batch processing with learning

./bin/byvalver --ml --batch shellcodes/linux_x86/*.bin output/

View metrics

cat ml_metrics.log

root@kitploit:~
**권장 사항:** ML 모드는 프로덕션 사용 전에 다양한 bad-byte 데이터셋으로 재훈련이 필요합니다. 현재는 널 바이트 제거에만 최적화되어 있습니다.

## 에이전트 메나저리

`byvalver`는 **AI 기반 에이전트 파이프라인** (`agents/`)을 제공합니다. 이 파이프라인은 전략 레지스트리의 격차를 자율적으로 발견하고, 새로운 bad-byte 제거 기술을 제안하며, 완전한 C 구현을 생성하고, 이를 프로젝트에 통합할 수 있습니다. 이 모든 것이 단일 명령으로 이루어집니다.

이 파이프라인은 [AjintK](https://github.com/umpolungfish/byvalver/blob/main/AjintK) 다중 공급자 에이전트 프레임워크를 기반으로 구축되었으며, **Anthropic**, **DeepSeek**, **Qwen**, **Mistral**, **Google**을 LLM 백엔드로 지원합니다.

### 빠른 시작```bash
# Requires API key for your chosen provider
export ANTHROPIC_API_KEY="..."   # or DEEPSEEK_API_KEY, QWEN_API_KEY, etc.

# --- Specialized Generators ---

# 1. General Technique Generator (discover → propose → generate → implement)
python3 run_technique_generator.py

# 2. Obfuscation Technique Generator (specifically for anti-analysis/evasion)
python3 run_obfuscation_generator.py

# 3. Bad-Byte Removal Generator (targeting restricted byte elimination)
python3 run_badbyte_generator.py

# 4. Profile-Specific Strategy Generator (targeting a specific bad-byte profile)
python3 run_profile_generator.py --profile alphanumeric-only

# --- Common Options ---

# Dry-run: discover and propose only, no files written
python3 run_technique_generator.py --dry-run

# Target a specific architecture
python3 run_technique_generator.py --arch x64

# Use a different provider / model
python3 run_technique_generator.py --provider deepseek --model deepseek-chat

파이프라인 단계

옵션```

--dry-run Stop after Stage 2 — print proposal, write nothing --arch x86 | x64 | both (default: both) --provider anthropic | deepseek | qwen | mistral | google (default: anthropic) --model Model ID (provider-specific default applied if omitted) --verbose Print full LLM responses at each stage

root@kitploit:~
### 요구 사항```bash
# Install Python dependencies (uses AjintK framework)
pip install anthropic tenacity httpx pyyaml

# Or with uv (faster)
uv pip install -r AjintK/requirements.txt

파이프라인은 DeepSeek (deepseek-chat) 및 Anthropic (claude-sonnet-4-6)으로 검증되었습니다. 일반적인 실행에서는 340개 이상의 전략을 발견하고, 기법(예: SSE/AVX 명령어에 대한 VEX 접두사 재인코딩)을 제안하며, 약 200줄의 C 코드를 생성하고 완전히 자동으로 깔끔한 빌드를 생성합니다.

아키텍처 세부 정보 및 새 에이전트로 파이프라인 확장에 대해서는 docs/AGENT_MENAGERIE.md를 참조하세요.

DEVELOPMENT

  • 모듈성을 갖춘 최신 C
  • 테스트 스위트: bash tests/run_tests.sh (tests/README.md 참조)
  • 코드 스타일: Clang-Format (설정: .clang-format), make format 실행
  • 분석: Cppcheck, Valgrind
  • Docker: docker build -t byvalver . (Dockerfile 참조)
  • 기여: CONTRIBUTING.md 참조
  • 로드맵: ROADMAP.md 참조

DOCUMENTATION

전체 문서는 docs/ 디렉터리에서 확인할 수 있습니다:

TROUBLESHOOTING

  • 종속성: Capstone/NASM/xxd 확인
  • 빌드: PATH_MAX, 헤더 확인
  • ML: 모델 경로 확인
  • Nulls: 입력 형식, 종속성 확인

지속적인 문제가 발생하면 상세 모드를 사용하고 로그를 확인하세요.

특정 셸코드에서 나쁜 바이트 제거가 실패하면 전략 레지스트리에 대상 전략을 추가하는 것을 고려하세요.

LICENSE

byvalver는 UNLICENSE에 따라 지구 위에 자유롭게 풀려났습니다.

도구 다운로드
아키텍처성숙도전략 수비고
x86 (32비트 Intel/AMD)안정 v4.2150+프로덕션 테스트 완료, 전체 커버리지
x64 (64비트 Intel/AMD)안정 v4.2150+기본 아키텍처, 프로덕션 테스트 완료
ARM (32비트)실험 v0.17개 핵심제한적 테스트, 핵심 명령어만
ARM64 (AArch64)실험 v0.1기본프레임워크 준비 완료, 최소 전략
  • Control Flow Flattening: 디스패처 상태
  • Instruction Substitution: 등가 연산
  • Dead Code: 무해한 삽입
  • Register Reassignment: 데이터 흐름 숨기기
  • Multiplication by One: IMUL 패턴
  • NOP Sleds: 가변 패딩
  • Polymorphic NOP Insertion: 다양한 NOP 등가물(XCHG EAX,EAX, LEA, MOV)
  • Constant Unfolding: 즉시값을 산술 연산으로 분해
  • Register Renaming: XCHG 기반 레지스터 대체
  • Stack Spill Obfuscation: 스택 기반 산술 연산
  • Instruction Reordering: NOP 삽입 명령어 재배열
  • Runtime Self-Modification: 자체 수정 코드 생성
  • Overlapping Instructions: 다중 해석 바이트 시퀀스
  • Jump Decoys: 가짜 대상
  • Relative Offsets: 계산된 점프
  • Switch-Based: 계산된 흐름
  • Boolean Expressions: 드 모르간 등가 변환
  • Variable Encoding: 가역 변환
  • Timing Variations: 지연
  • Register State: 복잡한 조작
  • Stack Frames: 사용자 정의 관리
  • API Resolution: 복잡한 해싱
  • String Encoding: 런타임 디코딩
  • Constants: 표현식 생성
  • Debugger Detection: 난독화된 검사
  • VM Detection: 은폐된 방법
  • 단계에이전트수행 작업
    1StrategyDiscoveryAgentsrc/를 스캔하여 340개 이상의 전략 이름과 카테고리를 추출하고, LLM에게 커버리지 격차를 요약하도록 요청합니다
    2TechniqueProposalAgent카탈로그를 바탕으로 하나의 진정한 새로운 기술을 제안하며, 근거, 대상 지시, 접근 방식을 포함합니다
    3CodeGenerationAgentstrategy.h/utils.h/mov_strategies.c를 참조하여 strategy_t를 준수하는 완전한 .h + .c 구현을 생성합니다
    4ImplementationAgent파일을 src/에 작성하고, strategy_registry.c를 패치하며 (include → forward decl → register call), make를 실행합니다
    문서설명
    docs/USAGE.md예제를 포함한 종합 사용 가이드
    docs/BUILD.md빌드 지침 및 플랫폼별 참고 사항
    docs/TUI_README.md대화형 TUI 문서
    docs/DENULL_STRATS.mdNull 제거 전략 카탈로그
    docs/OBFUSCATION_STRATS.md난독화 기법 문서
    docs/BAD_BYTE_PROFILES.md나쁜 바이트 프로파일 참조
    docs/BADBYTEELIM_STRATS.md확장 제거 전략
    docs/STRATEGY_HIERARCHY.md전략 구성 및 우선순위
    docs/ADVANCED_STRATEGIES.md고급 변환 기법
    docs/WHITEPAPER.md기술 백서
    docs/AGENT_MENAGERIE.md에이전트 파이프라인: 자동 기법 생성