category: キージェネレータ 1/1
キージェネレータの作成で役立つ知識
No image
ソフトウェアを解析していてよくあるアセンブラコードが、シリアルナンバーを一文字ずつ読み込んで、無意味なシフト演算や排他的論理和(xor)をしてハッシュを生成している命令群。int i = 0;char serial[20] = "1021-33565536";while(serial[i]) { // ここにハッシュ生成コードが記述される i++; };C言語だとこんな感じになります。これで文字列終端までループできますね。...
- 0
- 0
2019/05/08 (Wed) 12:39
キージェネレータの作成でつまずいたところ2 - lea命令

lea命令はgoogleで検索すると、メモリ上のアドレス値をレジスタに格納する命令と出てきますが、 ただ計算するだけの命令としても使われます。 上記の場合、足し算をしているだけです。なので、eax+eaxの答えをecxレジスタに格納しています。C言語に変換すると、ecx = eax + eaxになりますね。...
- 0
- 0
2019/05/08 (Wed) 10:08
キージェネレータの作成でつまずいたところ1 - アセンブラでの配列参照

esiにはインデックスが格納されていて、* 2は2バイト、C言語でいうところのshort int型になります。6500A8はベースアドレスで、ここを起点としてesi * 2というオフセットを使用して配列を参照しています。C言語に変換すると以下のようになります。unsigned short int data[] = { 0x0000, 0x1021, 0x2042 };...
- 1
- 0
2019/05/08 (Wed) 09:57