exe暗号化ネタ
こんなの見つけた。
http://e-words.jp/a/polymorphic20virus.html
こんな感じねぇ。へぇへぇへぇ。
dkutil filepacking library 原案
いつだか、ファイルパッキング機構を考えた事がある。*1
http://studiokingyo.fc2web.com/dxlib/kowaza/k4.html#k16
で、作ったはイイが、ちょっとコンパイルに面倒なdkutil 1.0x仕様と言う事で実際に使っている人は皆無だと思う。(私も含めて)
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/dkingyoutility/dkutil/algo/dkutilFilePack.h
なので、ちょっともう一回設計を考えてみたいと思う。
一つのデータ(ファイル)を書き込む際の処理フロー
- # シグネチャ生成
- # 圧縮
- # 暗号化
- # ファイルに書き込み
擬似コード (alldata:すべてのデータ allsize:すべてのデータのサイズ)
void encode_write(BYTE *alldata,size_t allsize){
シグネチャ生成関数の計算(alldata,allsize)
圧縮処理(alldata,allsize);
暗号化処理(alldata,allsize);
ファイルに書き込み(シグネチャ生成());
ファイルに書き込み(alldata,allsize);
}
てなわけで、一塊のデータを書き込むにはこんなフローがいる訳です。
*2
で、シグネチャ生成、圧縮処理、暗号化処理のところはやっぱりとっかえひっかえしたいですよね^^;
圧縮、暗号化のとっかえひっかえができるように作ったのが例の*3ファイルパック機構なのだが、イカンセンちょっと使いにくかった。し、メンテもしにくかった。
http://www.c3.club.kyutech.ac.jp/~sukiyaki/の精神論の設計の所で語られているように
もう少し、仕様をきめてからコーディングをしようと思う。
昔から、ここらへんの設計に時間を割いていないので一応動くけど、条件が重なるとミスる物や
やっぱり使いにくかったと言ったものが多々ある。
とりあえず、考えてみたもの
polymorphic encoder
- encodeする際にメモリ領域の先頭にヘッダ値を書き込む
- decodeする際はencodeした時に書き込んだヘッダを元に復元
- ヘッダにはシグネチャとdecode時に必要なバッファサイズ、encode済みのバッファサイズを記憶しておく
続く
*1:タイトルのように、考察と呼べないものかもしれないが・・・
*2:ちなみに、これらの処理を メモリを少なく、速くするには 分割してデータを書き込めるようにして、かつ、一回のループですべてをこなすようにコーディングする。
*3:http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/dkingyoutility/dkutil/algo/dkutilFilePack.h
ファイルパッキング機構、ファイルシステムについて扱っているサイト
前、私が考えたセーブデータを改竄されないようにするための考察
http://d.hatena.ne.jp/studiokingyo/20040714#p4
ゲーム用ファイルシステムの考察
http://homepage3.nifty.com/moha/prog_file.html