::::::::::::::::::::: m E X / c 4 N T U T O R I A L D I V I S I O N ::::::::::::::::::::::::::
Tutor : CoRN2
Editor : Notepad (fullscreen wit' wordwrap on)
Audience : Beginners an' Newbies :)
Greets : All members of C4N/mEx'97... and everyone else I know :)
Target : SoftIce for Newbies, r4
Rev Date : 17/12/97
Introduction
-=-=-=-=-=-=
皆、どちらのデバッガがよいか?と尋ねる。SoftICEを使いなさいと答える。
次の質問は、どうやってSoftICEを使うか?
SoftICEにアクセスするには[CTRL-D]を押下。もちろん変更も出来る。
EXTERNALS
-=-=-=-=-
初めて、[CTRL - D]とコンビネーションを打鍵したときの悩める外観を思いだす。。
私の最初の質問は(#Crackingで。)なぜ"GETDLGITEMTEXT "をブレークポイント(
あるいは類似の機能)を定義できないのか?と言うことだった。
それは誰かが答えてくれるまで、私に1週間を要した。それは本当に非常に容易であった。
私はこれが同じく c4n - mex faq でカバーされると思う:
WINICE.DATを君のお気に入りのエディターで開きファイルの最後の方ににある行を見つける。
;exp=c:\windows_directory\kernel32.dll
;exp=c:\windows_directory\user32.dll
もし君が始めの2行以上のセミコロンを取り除きWINICE.DATを保存し、Windows/SoftICEを
リスタートさせる。
君は、シンボルローダの設定も同様にできる。
我々が WINICE.DAT の主題の上にいる間に、私は君が SoftICEのためにいっそう有用な
* デフォルト * キーボードを知る必要があると思った。
F1 - Helpの表示
F2 - レジスタ窓のトグル(On/Off)Toggle Register Window
F5 - Windowsに戻る。Drop back to Windows
F8 - Trace To Next Instruction (will dive into all CALLS)
F10 - Step To Next Instruction (executes and steps over CALLS)
F12 - Run up until the next RETurn instruction
ショートカットは数多くある。しかし、君が使うであろういっそう有用なものである。
Now to the fun stuff...
楽しんでくれ・・・。
-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=
本当に私の説明を理解するには、ASM についてのラフな考えを持つ必要がある。
もしそうでなければ、ASM For Crackers'を mExeLITE '97 ホームページから得るとよい。
それは基本をカバーすることが出来る。
それは基本をカバーするべきである。
-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=
SoftICEの窓を自在に制御することを知るために以下のコマンドを記憶する。
WR -- レジスタ窓の表示/非表示
WD -- データ窓の表示/非表示
WC -- コードの表示/非表示
続けて数字を打鍵することにより行数を変えることが出来る。
例:WR 10
WD 7
これらは最も重要である、しかしあなたは同じくあなたが、Watchを含んで表示/非表示する
ことができる他の窓などがあることに気付くであろう。
これらのウインドウは個々にスクロールすることができる。
それぞれが、次のキーボードコンビネーションを使って、独立してスクロール可能である:
[CTRL-UP/DOWN/PGUP/PGDN] レジスタ窓のスクロール
[SHIFT-UP/DOWN/PGUP/PGDN] コマンド窓のスクロール
[ALT-UP/DOWN/PGUP/PGDN] データ窓のスクロール
-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=
スクリーンの一番上の3つのラインはあなたのコンピュータレジスタとそれらの中身を専門に
行なっている。
2行目の右端に8つの文字がある。これはフラグである。
大文字で青色の文字はセットを意味する。
O D I S Z A P C
| | | | | | | |
| | | | | | | +------- Carry Flag(キャリーフラグ)
| | | | | | +--------- Parity Flag(パリティーフラグ)
| | | | | +----------- Auxiliary Carry Flag(キャリー補助フラグ)
| | | | +------------- Zero Flag( VERY USEFUL! ) (ゼロフラグ)(使える!)
| | | +--------------- Sign Flag(サインフラグ)
| | +----------------- Interrupt Flag(インターラプトフラグ)
| +------------------- Direction Flag(ディレクションフラグ)
+--------------------- Overflow Flag(オーバーフローフラグ)
真に一つだけZero Flagをクラッキングの間は見ること。
(JZ/JNZ/JE/JNE commandsが見えたとき)
次は別の最下部の窓だ。これはデータ窓である。
君の必要なメモリーアドレスの値を見れる。例えば、 d F9D2Bとタイプする。
バイトアドレスを見れる。
'd'はメモリーを表示させるコマンドである。
これの後に従って我々はコードの窓を持っている。これは我々が見ているプログラムの部分を
含んでいる。第一にあなたは部分を持っている:コード、そして次に opcode のオフセット、
そして次に我々がすべて好きである asm コマンド :)
(あなたが opcode を見るために 'CODE ON'とタイプするためにあるかもしれない。)
そして最終的に底にあなたのインプット/インフォメーションの窓がある。
オーダーすればあなたがSoftICEが回答を答えてくれる。
BREAKPOINTS IN GENERAL
-=-=-=-=-=-=-=-=-=-=-=
ブレイクポイントはCrackerの兵器庫を加えるのに役に立つ(基本ではない。)なくてはならない。
ブレークポイントは満たされている条件(我々は今詳細でこれを見るであろう)のためにただそれ、
プログラムがブレイクされるであろうポイントである。
BREAKPOINT ON EXECUTE
-=-=-=-=-=-=-=-=-=-=-
構文: bpx [api function name]
これがメインのクラッキングだ。
ああ。すまない。プログラムのエントリーポイントを見つけるデバックだ。(笑)
とても容易で、そして最も効率的な方法はブレークポイントを持っている。
基本的にあなたがする必要があるすべては SoftIce にいつ、あなたが何が起きているのを
見ることができるように、プログラムに「入る」べきか言うことである。
あなたが使うであろうブレークポイントのタイプは、あなたが「デバッグしよう」としている
プログラムについて、タイプに頼る。
例を示そう。
1. SoftIceに落ち ( CTRL-D ) 'bpx GetLocalTime'とタイプする。
2. タイプが終わったらwinに戻る。 ( CTRL-D )
3. win95のシステム時計をダブルクリックしてみる。(TaskBarにある。)
'GetLocalTime'を始めに呼び出している所でSoftICEがポップアップする。
もし君が F11 を押下すれば呼び出しているファンクションに戻ることが出来る。
違ったファンクションコールをブレイクポイントにすることが役に立つ。
シリアルナンバープロテクトの場合には'GetWindowTexta'か 'GetDlgItemTexta'だ。
1. Startbottonをクリックしてファイル名を指定して実行するをだす。
2. なんでもよいのでタイプする。'lalalalalalalalalaa'
まだENTERは押してはいけない。
3.SoftICEに落ちる。( CTRL-D )
4. BPX GetWindowTextAとタイプする。
5. Winに戻る。( CTRL-D )
ENTERを押下
SoftICEは始めに 'GetWindowTexta' でポップアップする。
そうしたら F11 を押下しコードを呼び出す。
GetDlgItemTextaは経験上使えない。
しかしGetWindowTexta.で何も起こらない時には試す値打ちがある。
SEARCHING MEMORY.
-=-=-=-=-=-=-=-=-
構文: s [start] l [finish] '[string]'
コレは簡単だ。
登録を入力しコードをどこかに失ったときメモリーの中から探しだす助けになる。
どこにあるのか探すのには私は主にこのように使う。
s 0 l ffffffff 'mystring'
メモリーの中から見つけることが出来たらデータ窓にアドレスが変る。
更に探すのは s とタイプする。
BREAKPOINTING ON MEMORY ACCESS
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
構文: BPM [address] R/W
これは、先程と共に役に立つ検索だ。君の文字列を見つけたらどう使うか?
見つけることが出来たらプロンプトで得られる。
Pattern Found at 0157:0009AC2D
Ok,文字列を0157:0009AC2Dの位置に見つけることが出来た。
ブレイクポイントを使う。
BPM 0157:0009AC2D
アドレスに、R/WされたときにSoftICEはポップアップする。
デフォルトはRW ( read & write )
BREAKPOINTING ON A RANGE OF MEMORY ACCESSES
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
構文: BPR [start address] [end address] R/W
時に多くのファンクションが役に立つ。
君が広範囲なメモリーアドレスの領域に足跡を望む場合。例えば、ユーザー名の文字を、
あるいは解除コードを追跡したいと言うことを想像しなさい。
例を挙げる。
もし私のユーザー名, 'mExeLITE'97 cracked bY CoRN2を見つけることが出来てそこ
が 0157:00643345. で見つけたと言われる。
もし私がこのストリングによってとられたメモリアドレスの全部の範囲を見張り続ける
ことを望んだなら、私はこのように使う。:
構文:
BPR 0157:00643345 0157:00643345+(Length of string in hex)
これは領域の中で読まれるか、あるいは書かれるた時にいつでも SoftIce をポップ
アップする。
あなたがクラッキングを終えた後に、我々は、ブレークポイント巧みな操縦者を見る
であろう。
LIST BREAKPOINTS
-=-=-=-=-=-=-=-=
構文: bl
ブレイクポイントのリストを表示する。
ナンバー)ブレイクポイントタイプ パラメータ カウント
例えばこのようになる。
00) BPX #0028:09876543 C=01
CLEAR BREAKPOINT
-=-=--=-=-=-=-=-
構文: bc [breakpoint(s)]
特定のブレークポイントをクリアする。例題
BC 0 <-- (Label 0のブレークポイントをクリア)
BC 1,4 <-- (Label 0と4のブレークポイントをクリア)
BC * <--(全てのブレークポイントをクリア)
DISABLE BREAKPOINT
-=-=-=-=-=-=-=-=-=
構文: bd [breakpoint(s)]
時に、すこしばかりブレークポイントをコンピュータから無効にすることが有益になる。(もしくは役に立つ)
BD 1,2,3,5 <-- (Label 1,2,3,5のブレークポイントを無効)
BD 1 <-- (Label 1ブレークポイントを無効)
BD * <-- (全てのブレークポイントを無効)
ENABLING BREAKPOINTS
-=-=-=-=-=-=-=-=-=-=
構文: be [breakpoint(s)]
分かり切っているだろうが、もし君が無効化できるのであれば再び有効化することが必要になる。
例はこれ以上あげない。
::::::::::::::::::::: m E X / c 4 N T U T O R I A L D I V I S I O N ::::::::::::::::::::::::::
Heh, didn't think anyone would bother reading down here......
YOU'VE FOUND THE SECRET PART OF THIS TUTE! Congratulations! :)
wow you've won a years supply of spam.
|