tag: keygen  1/1

キージェネレータの作成で役立つ知識

No image

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

  •  0
  •  0

キージェネレータの作成で役立ったツール - x32dbg

キージェネレータを作成するうえで役立ったツールがx32dbgです。このデバッガはollydbgとは違って、関数をグラフ化できるので複雑な条件分岐を分析するのに大変便利です。 グラフ化はディスアセンブラ画面上でキーボードのGを押すか、右クリックからのコンテキストメニューに「グラフ」とあるので、それをクリックします。すると、グラフタブに飛びます。右クリックからグラフの画像を保存できるので、それを見ながら解析する...

  •  0
  •  0

キージェネレータの作成でつまずいたところ2 - lea命令

lea命令はgoogleで検索すると、メモリ上のアドレス値をレジスタに格納する命令と出てきますが、 ただ計算するだけの命令としても使われます。 上記の場合、足し算をしているだけです。なので、eax+eaxの答えをecxレジスタに格納しています。C言語に変換すると、ecx = eax + eaxになりますね。...

  •  0
  •  0

キージェネレータの作成でつまずいたところ1 - アセンブラでの配列参照

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

  •  0
  •  0