SRM
与えられたファイルを実行すると、下図のような入力ダイアログが表示されます。reverse
The flag is : The valid serial number

「Your E-Mail Address:」と「Your Serial Number:」に適当な内容を入力して「OK」をクリックすると、下図のとおり不正な入力であるとのメッセージが表示されます。

それでは、「IDA Pro Free」で逆アセンブルし、該当部分を見てみます。上図のメッセージは下図の箇所で出力されていることが分かります。この部分をよく見ると、右側のフローで比較、条件分岐しており、全て比較結果がイコールの場合に赤い矢印のフローを流れています。おそらく右側の赤い矢印のフローを通れば正解と思われます。

さて、この比較、条件分岐の箇所を見てみると、入力された文字をそのまま比較している箇所と、入力された文字にある固定値をaddまたはsubした値と比較している箇所があります。それぞれ計算して入力すべき値を下表のとおり、導き出します。
| ebp | cmp | add | sub | 元の値 | 文字 |
| -240 | 43 | 43 | C | ||
| -23f | 5a | 5A | Z | ||
| -23e | 3a | 01 | 39 | 9 | |
| -23d | 64 | 64 | d | ||
| -23c | 6d | 6D | m | ||
| -23b | 44 | 2d | 71 | q | |
| -23a | 34 | 34 | 4 | ||
| -239 | 63 | 63 | c | ||
| -238 | 9b | 63 | 38 | 8 | |
| -237 | 9b | 34 | 67 | g | |
| -236 | aa | 71 | 39 | 9 | |
| -235 | c8 | 81 | 47 | G | |
| -234 | 9b | 64 | 37 | 7 | |
| -233 | 9b | 39 | 62 | b | |
| -232 | 9b | 5a | 41 | A | |
| -231 | 9B | 43 | 58 | X |
この導き出した文字をつなげると、「CZ9dmq4c8g9G7bAX」となりますので、適当なメールアドレスとこの文字列をシリアルナンバーに入力します。

下図のとおりフラグが表示されました。

フラグは、
CZ9dmq4c8g9G7bAXです。
Chris Eagle
No Starch Pr
2011-07-07









