
자체 복호화 바이너리 생성기
+------------------------------------------------------------------------------+
SDC - 자체 복호화 바이너리 생성기
저작권 (C) 2006 Claes M Nyberg <[email protected]>
+------------------------------------------------------------------------------+
SDC 프로그램은 일반적인 운영 체제 및 아키텍처용 자체 복호화 바이너리를 생성합니다.
대상 파일은 Blowfish 암호문 피드백 모드(CFB)로 암호화되어 실행 파일에 추가되며,
실행 파일은 실행 시 자신을 읽고 추가된 데이터를 복호화하려 시도합니다.
src 디렉토리에서 'make'를 실행하면 몇 가지 옵션이 표시됩니다:
$ make
make <target>
SDC generator targets:
linux_x86
windows_x86
openbsd_x86
openbsd_arm
openbsd_sparc64
freebsd_x86
netbsd_x86
solaris_sparc
Self decrypt targets:
selfdecrypt_linux_x86
selfdecrypt_windows_x86
selfdecrypt_openbsd_x86
selfdecrypt_openbsd_arm
selfdecrypt_openbsd_sparc64
selfdecrypt_netbsd_x86
selfdecrypt_freebsd_x86
selfdecrypt_solaris_sparc
SDC 생성기 대상은 해당 플랫폼용 sdc 바이너리를 빌드하며, 이 바이너리를 사용하여
모든 자체 복호화 대상에 대한 자체 복호화 파일을 생성할 수 있습니다.
"자체 복호화 대상"을 빌드하면 해당 대상에 대한 실제 자체 복호화 바이너리가 빌드됩니다.
심볼을 제거하고 결과 selfdecrypt 바이너리와 그 길이에 대해 genhex.pl 스크립트를 실행하여
이스케이프된 문자열을 출력하고, 이를 리디렉션하여 헤더 파일을 생성합니다.
이는 targets 디렉토리 내의 헤더 파일과 동일한 방식입니다.
그런 다음 include 파일을 targets.h에 추가하여 다음 빌드 시 sdc 바이너리에 포함시킵니다.
제시된 대상들은 이미 헤더 파일로 존재하며 sdc 바이너리에 포함되어 있습니다.
* 암호화 전 파일 압축을 추가하여 혼란을 증가시킴.
* OpenBSD ARM 지원
* MacOSX 지원
elf_offset() 루틴이 작동하려면 ELF 파일(selfdecrypt)이 스트립되어야 합니다
(문자열 테이블 크기를 계산하기 귀찮아서).
./sdc /etc/services
Encryption key:
Verify key:
Writing self decrypting file services.sdc for Linux x86 (ELF)
./services.sdc
Encryption key:
Decrypting to services
$
Linux에서 Windows용 자체 복호화 파일 생성
$ ./sdc -t Windows_x86 /etc/services
Encryption key:
Verify key:
Writing self decrypting file services.sdc.exe for Windows x86 (PE-COFF)
services.sdc.exe를 더블 클릭하면 복호화 키를 입력하기 위한 대화 상자가 나타납니다:
