crkme08
http://doomo.xyz/crack/crkme08.exe
※前
実行
名前とパスワードを聞かれる。もちろんどちらもわからないので今回は2つの情報をリバースエンジニアリングで見つける必要がある。
解析
「GetDlgItemTextA」にBPを仕掛けて、適当に名前とパスワードを入力して実行する。
上図のアセンブリから分かることは
・正解パスワードは8文字であること
・入力したNameを引数として関数004012A8を呼び出していること
その返り値をEDXに格納していること
・パスワードを引数として関数004012D0を呼び出していること
・EAXとEDXが等しいなら正解処理(0040128F)へ進むこと
004012A8の解析
①EAXに入力した1文字のASCIIコードを足す
②EAXを2乗する
③①~②を入力文字分やる
だいたいこんな感じ。
EAXの値は入力するNameの値によってさまざま。
004012D0の解析
見た感じ、
・パスワードが16進数で使う文字(0~9とA~F)
その数値がそのままEBXに代入される
・それ以外の文字が入ってたらEBXを0xFFFFFFFFにする。
最終的にEBXはEAXに代入されて戻り値になる。
このEAXが関数004012A8で生成された値と同じになればよい。NameがAの時に生成される値は
0x183FB4ACなので、これが正解のパスワード。