
셸코드의 bad-bytes를 받아 제거하고, 기능이 보존된 정리된 셸코드를 반환합니다.
쉘코드의 배드바이트 추방자
개요 • 빠른 시작 • 대화형 TUI • 타겟 배드바이트 제거 • 배드바이트 프로파일 • 기능 • 아키텍처 • 시스템 요구 사항 • 의존성 • 빌드 • 설치 • 사용법 • 난독화 전략 • 널바이트 제거 전략 • ML 학습 • 에이전트 컬렉션 • 개발 • 문제 해결 • 라이선스
byvalver는 C로 작성된 CLI 도구로서, x86/x64/ARM/ARM64 쉘코드에서 배드바이트를 자동으로 제거(또는 "추방")하면서 완전한 기능적 동등성을 유지합니다.
v4.0의 새로운 기능: 크로스 아키텍처 지원
| 아키텍처 | 성숙도 | 전략 수 | 비고 |
|---|---|---|---|
| x86 (32비트 Intel/AMD) | 안정 v4.2 | 150+ | 프로덕션 테스트 완료, 전체 커버리지 |
| x64 (64비트 Intel/AMD) | 안정 v4.2 | 150+ | 기본 아키텍처, 프로덕션 테스트 완료 |
| ARM (32비트) | 실험 v0.1 | 7개 핵심 | 제한적 테스트, 핵심 명령어만 |
| ARM64 (AArch64) | 실험 v0.1 | 기본 | 프레임워크 준비 완료, 최소 전략 |
--arch 플래그를 통한 자동 Capstone 모드 선택v4.0.1 버그 수정:
can_handle 로직 수정 (패스스루 전략 대상)v4.2의 새로운 기능: 향상된 x64 지원
is_64bit_register(), is_extended_register(), build_rex_prefix()이 도구는 Capstone 역어셈블 프레임워크를 사용하여 명령어를 분석하고, 175개 이상의 순위가 매겨진 변환 전략을 적용하여 배드바이트가 포함된 코드를 동등한 대안으로 교체합니다.
일반적인 배드바이트 추방 프레임워크는 2가지 사용 모드를 제공합니다:
--bad-bytes 옵션을 통해 임의의 바이트를 추방하도록 지정할 수 있습니다 (예: 개행 문자에 안전한 쉘코드를 위한 --bad-bytes "00,0a,0d")--profile 옵션을 사용하면 일반적인 익스플로잇 시나리오에 대한 사전 구성된 배드바이트 세트를 사용할 수 있습니다 (예: --profile http-newline, --profile sql-injection, --profile alphanumeric-only)Windows, Linux, macOS를 지원합니다.
핵심 기술:
C 구현CapstoneNASM[!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
**옵션 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
**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
byvalver --bad-bytes "00,0a,0d" input.bin output.bin
**고급 기능:**```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
python3 verify_denulled.py --bad-bytes "00,0a,0d" output.bin
python3 verify_functionality.py input.bin output.bin
### 크로스 아키텍처 지원
`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
**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
**참고:**
- 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/