
+------------------------------------------------------------------------------+ SDC - 自己復号バイナリジェネレータ Copyright (C) 2006 Claes M Nyberg [email protected] +------------------------------------------------------------------------------+
SDCプログラムは、一般的なオペレーティングシステムとアーキテクチャ向けの自己復号バイナリを作成します。
対象ファイルはBlowfishのCiphertext Feedback Mode(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バイナリが作成され、
任意の自己復号ターゲット向けの自己復号ファイルを生成するために使用できます。
"Self decrypt target"をビルドすると、そのターゲット向けの実際の自己復号バイナリが作成されます。
シンボルを削除し、生成されたselfdecryptバイナリとその長さに対してgenhex.plスクリプトを実行すると、
エスケープされた文字列が出力され、リダイレクトしてヘッダファイルを作成できます(targetsディレクトリ内のものと同様です)。
その後、そのインクルードファイルを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をダブルクリックすると、復号キーを入力するためのダイアログウィンドウが表示されます:
