みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

文字列をxorで埋め込めるソフト

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

文字列をxorで埋め込めるソフト

投稿記事 by みけCAT » 14年前

新・ゲームプログラミングの館の「実行ファイルから盗まれるデータ」
http://dixq.net/g/h_09.html
を見ていて、ふと思い立ったので作ってしまいました。
指定した文字列を、xorしながら配列に格納するコードを吐くことで、
文字列をわかりにくくすることが出来ます。
コードを書いた人にもわからなくなるのでコメントでメモ推奨です。

コマンドラインは
xorer [/a]
文字列:格納する文字列
配列名:格納する配列の名前
分割数:何個の数に分けるか(分割数-1回xorされる)
/a:インラインアセンブリを使用する
です。

結果は標準出力に吐きます。

出力例
[tabs][tabs: 通常]xorer "I like cat." test 3
と入力すると

CODE:

char test[12];
test[0]=0x3C;
test[0]^=0x4C;
test[0]^=0x39;
test[1]=0x00;
test[1]^=0xEB;
test[1]^=0xCB;
test[2]=0x04;
test[2]^=0x5B;
test[2]^=0x33;
test[3]=0xE2;
test[3]^=0x57;
test[3]^=0xDC;
test[4]=0xC9;
test[4]^=0x2D;
test[4]^=0x8F;
test[5]=0x44;
test[5]^=0xE7;
test[5]^=0xC6;
test[6]=0x34;
test[6]^=0xDB;
test[6]^=0xCF;
test[7]=0xAB;
test[7]^=0xA0;
test[7]^=0x68;
test[8]=0x86;
test[8]^=0xB4;
test[8]^=0x53;
test[9]=0xFC;
test[9]^=0x5D;
test[9]^=0xD5;
test[10]=0x7C;
test[10]^=0x8C;
test[10]^=0xDE;
test[11]=0;
こうなります。[tabs: インラインアセンブリ]xorer "I like cat." test 3 /a
と入力すると

CODE:

char test[12];
asm volatile(
	"mov $0,%%eax\n\t"
	"movb $0x36,(%0,%%eax,1)\n\t"
	"xorb $0x53,(%0,%%eax,1)\n\t"
	"xorb $0x2C,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0x70,(%0,%%eax,1)\n\t"
	"xorb $0xED,(%0,%%eax,1)\n\t"
	"xorb $0xBD,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0x6F,(%0,%%eax,1)\n\t"
	"xorb $0xAE,(%0,%%eax,1)\n\t"
	"xorb $0xAD,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0x91,(%0,%%eax,1)\n\t"
	"xorb $0x36,(%0,%%eax,1)\n\t"
	"xorb $0xCE,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0xCA,(%0,%%eax,1)\n\t"
	"xorb $0x35,(%0,%%eax,1)\n\t"
	"xorb $0x94,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0x6C,(%0,%%eax,1)\n\t"
	"xorb $0x8F,(%0,%%eax,1)\n\t"
	"xorb $0x86,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0x3F,(%0,%%eax,1)\n\t"
	"xorb $0x97,(%0,%%eax,1)\n\t"
	"xorb $0x88,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0x4A,(%0,%%eax,1)\n\t"
	"xorb $0x2C,(%0,%%eax,1)\n\t"
	"xorb $0x05,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0x02,(%0,%%eax,1)\n\t"
	"xorb $0xC1,(%0,%%eax,1)\n\t"
	"xorb $0xA2,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0xAF,(%0,%%eax,1)\n\t"
	"xorb $0x94,(%0,%%eax,1)\n\t"
	"xorb $0x4F,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0x4D,(%0,%%eax,1)\n\t"
	"xorb $0x9A,(%0,%%eax,1)\n\t"
	"xorb $0xF9,(%0,%%eax,1)\n\t"
	"inc %%eax\n\t"
	"movb $0,(%0,%%eax,1)\n\t"
:
: "q"(test)
: "%eax"
);
こうなります。[/tabs]
※これは一例です。乱数を使用しているため結果は変わります。

よかったら使ってみてください。
ソースも付いています。
添付ファイル

[拡張子 zip は無効化されているため、表示できません]


コメントはまだありません。