全体表示

[ リスト ]

クラッキングバイブルのCD内にあるcackme 0x01の
シリアルナンバーのチェックをクラックしてみる。

OllyDBGで開けば、「隠す気が無いのか」という程に
シリアルナンバーが簡単に見つかる。
本の通りにするのは面白くないし、起動するたびに
正規のシリアルナンバーを入力しなければならないのは面倒。
そこで、シリアルチェックをクラックして回避してみる。

注意:一応クラック対象のファイルをコピーしておくこと。


取り敢えず実行してみる

イメージ 1
イメージ 2

シリアルナンバーが分からないのだから、当然弾かれる。

OllyDBGで開く
イメージ 3

F9キーを押して取り敢えず1回実行してみる
イメージ 4

入力画面が出てくる。
ここでAPI関数を調べる。
ウィンドウにテキストという事は
get~text系のAPIである事は容易に推測できる。
そこで、Googleで "get text windows" で調べる。
すると、GetWindowText 関数が出てくる。
Ctrl+nを押し、GetWindowTextと入力
ウィンドウのタイトルに入力した文字が大文字で表示される。
下の画像では GETW と書いてるところ。

イメージ 5

GetWindowsTextAを選択し、右クリックで
"全ての参照にブレークポイントをセット"を選択する。

イメージ 6

crackme 0x01にシリアルナンバーを適当に入力し、登録を押す。

イメージ 7

すると、GetWindowTextA で処理が止まる。
イメージ 8
すぐ下にシリアルナンバーらしき文字が書いてあるが気にしてはいけない。
解析者を妨害する為のダミーのシリアルナンバーに違いない。

・・・・
F8を押して進めてみる。
イメージ 9
弾かれる。

ここで重要なのは、
ユーザーが入力したシリアルナンバーと
正規のシリアルナンバーの比較が
今までの処理のどこかにある という事。
つまり、比較を行いその結果に応じて
どこに処理を飛ばす(ジャンプする)べきか
を決める処理がある。
という事は
0x004011DE の TEST EAX,EAX
0x004011E0 の JNZ SHORT CrackMe0.004011F8
が怪しい。
イメージ 10

もし、比較もジャンプせずにこのまま処理を進めちゃえば
シリアルナンバーのチェック回避できそう。
という事で、先ほどの2つをNOP(0x90)で書き換えてみる。
該当箇所を右クリックして、バイナリI の 全てをNOPに をクリック。
イメージ 11

するとNOP(0x90)に書き換えられる
イメージ 12

そして、"シリアルナンバーが違います"のウィンドウの"OK"
をクリック。
するとまた入力を求められるので、これまた適当に入力。
イメージ 13

"登録"をクリック。
ブレークポイントを解除していない場合は止まるが、
気にせずにF9を2回押し、処理を進めてみる。
すると、"登録ありがとうございます"と表示され、
クラックに成功した事が分かる。
イメージ 14

先ほどNOP(0x90)に変更した処理を選択し、
右クリックで、実行ファイルへコピーの全ての変更箇所をクリック。
イメージ 15
本当にするのかどうか聞いてくるが、全てをコピーをクリックしてコピーする。
その後、NOP(0x90)を選択し、右クリックのファイル保存をクリック。
イメージ 16

OllyDBGを終了させ、クラックしたCrackMe0x01.exeを起動してみる。
イメージ 17
何も入力せずに登録のボタンを押しても、
何か入力して登録のボタンを押しても
"登録ありがとうございます。"と表示されるようになった。
これで、シリアルナンバーのチェックを回避する事に成功した。
クラック完了。


補足
今回は処理の順番的にNOPで書き換えるだけで大丈夫だった。
あくまでも偶然なので「他のソフトウェアでもうまくいくのか?」と
聞かれるとうまくいかないと思われる。

この記事に

閉じる コメント(0)

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

開く トラックバック(0)


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事