Back Next Crack

クラック?

例えば、キーを入力して登録ボタンを押すアプリケーションがあるとする。 デタラメの値を入れてボタンを押せば当然 "違います" と怒られてしまう。 普通に考えたらこれは当たり前のことだ。 しかし、このアプリケーションがシェアウェアであるならば、 このメッセージボックスはクラックにおいて非常に重要なことを示している。 "こいつは正解を知っている" そう、正解を知っているから "そのパスは違う" と言えるのである。 入力したパスと正解を示す値とをどこかで照らし合わせて比較した結果、 異なるものであったので、"パスが違います" というメッセージボックス出す。 ならば比較する瞬間に処理をストップさせて、その値を覗いてみたりできないだろうか、 あるいは "パスが違います" というメッセージボックスを出さないように改造したら、 その場合はどうなるのだろうか。 レジスト作業の際プログラムは何かしらゴソゴソとやる。 このゴソゴソを覗いてみたり、またはゴソゴソ自体させないように 弄ったりすることを"ソフトウェアクラック"という。

何をすればいい?

逆アセコードを追いながら主にレジスタへ入る値とメモリの変動を見ていくことになります。 まず以下の最も基本の用語を2つを覚えましょう。
アセンブリ / アセンブラ / アセンブル / ディスアセンブル(逆アセ)
アセンブリとは、CPUに依存した低級言語のこと。 CPU依存ということは異なるCPUでは当然違う表記になりますが、 Intel 8086系プロセッサ アーキテクチャの仕様が業界標準になっているので あまり深く考えなくても良いです、問題ないですので。 アセンブラとはアセンブリ言語で書かれたソースを実行プログラムにする、 いわゆるコンパイラのこと。 アセンブルはコンパイルのことで、ディスアセンブル(逆アセ)は逆コンパイル。
レジスタ
CPUが値を取り出す最終的な記憶装置のこと。 CPUは演算に必要な数値をこのレジスタから取り出します。 イメージ的な順番で行くと HDD → メモリ → レジスタ → CPU といった感じです。 CPUへ値を直接渡すことは出来ません、必ずレジスタより取り出します。


Crack Time!! それではいきなりですがクラックをしてみましょう。 実践で砕ける前にまずはNewBieの練習用に作られたcrackmeを使って 必要と思われる項目を一つ一つ段階的に説明していきます。 それでは、まず始めに解析に必要なツールを揃えてください。 OllyDbg(デバッガ)、お好みのHEXエディタ(バイナリエディタ)の2つです。 ツールを揃えたらOllyDbgの初期設定をしましょう。 これをしないと日本語の表示が出来ません。 あと文字列参照を日本語表示させるために、日本語化パッチをDLしてきて下さい。 必要なのはアーカイブ中にある"J10n.dll"だけです、これをOllyと同じディレクトリにぶち込んでください。 日本語化パッチはあてても構いませんが、このリファレンスでは英語バージョンで説明します。 どうしても気になる場合は最初にパッチをあてて日本語化し、 意味が分かる項目の設定をしてから、英語バージョンに戻すといいかも知れません。 (オプション設定はollydbg.iniに保存されます)

Back Next Crack