crkme09
http://doomo.xyz/crack/crkme09.exe
前↓
前回と同じく名前とパスワードを入力する問題だったので同じ要領で解析しようと思ったけどなにかおかしい。
DB文がたくさん羅列していて、ラベル名にも関数が少ない。
前にやった問題で似たようなコードがあった。圧縮されているらしいのは確かだが、[右クリック] - [分析(Analysis)] - [コードを分析(Analyse code)]しても変わらない。
↑UPXでアンパックできるみたい。
アンパックした後もう一度Ollyで開くと今度はちゃんとしたアセンブリが表示されている。
00401255 > 83F8 16 CMP EAX,16
今回のパスは0x16(=22)文字。長い。
その後2つのサブルーチンに飛んで、
TEST EAX, EAXによる比較が行われる。この時点でEAXが0なら正解処理に飛ぶため2つのサブルーチンを実行し終わった後のEAXは1でなければならない。
先に下の関数(00401329)から解析していく。
パスワードの先頭4文字のアスキーコード - 0x283A4132 = 0x11111111でないと関数が終了してしまう。
0x283A4132 + 0x11111111 = 0x394B5243 = 9KRC
リトルエンディアンなので逆にしてCRK9。
その次の処理。ECXに5文字目のパスワードを入れて0x2D(-)だったらOK。
それ以降の文字列は「MI5GQ51I-7V9WW2NT」と後ろから比較しているのでこれの逆を当てはめる。
「MI5GQ51I-7V9WW2NT」の部分はNameによって変わると思う。