001() - リバース160 CrackMeを破ります

CrackMe - 001

事前知識の導入:

  • 160 CrackMe CrackMeのコレクションは160の合計は逆のプログラムを割ったことが、逆の休憩を学ぶ初心者に適しています

  • CrackMe:小さなプログラムを解読しようとする他の人のためのいくつかの公共の、人々はcrackmeプログラマを作ることも、彼らのソフトウェア保護技術をテストしたい、それがクラッカー可能性があり、私は亀裂に他のクラッカーの強さに挑戦したい、だけでなく、いくつかのかもしれ誰が彼らの休憩に、自分の小さなプログラムをクラックするために学んでいます。

  • CrackMeはCMと呼ばれる、クラッカーは楽しい人々のために、さまざまな暗号化や限られた商用ソフトウェアをクラックすることです。

プログラム情報:

番号 著者 保護
001 酸の熱傷 名前/シリアル、シリアル

ツール:

  • ollyDbg(ODと呼ばれます)

  • Exeinfo、IN

割れ起動します。

1.ツールExeinfo PEプログラム001との最初のチェック(ツールが開かれ、プログラムがドラッグを見に行きます)、以下に示すような情報を得るためには、プログラムが充填されないことを理解が、Delphi言語です。

 

別々に書かれ2.Delphi書かれたコードVC ++コードを以下のように、二つの最も明らかな違いは以下のとおりです。

  • モードレジスタを通過するパラメータの関数呼び出しは、主に過剰プッシュにより渡され、パラメータ1は、一般的にパラメータレジスタECXに2、3に、EAXレジスタのパラメータレジスタEDXに配置され、使用されています

  • 文字列処理は、DelphiとVC ++文字列関数が異なる、減算される4列の最初のアドレスは、抽出された4バイトは、この文字列の長さです。注意を払うを分析するとき。

3.次に、我々は、おそらくあなたは彼をハックするために歓迎されることを意味し、ウィンドウをポップアップ表示されます最初のプロンプト、このソフトウェアは、酸火傷によって生成されたプログラムを実行します

 

4.今、私たちはそれがソフトウェアメーカーは、我々はそうプロンプトウィンドウが表示されない、最初の目標を持って、プロデューサーが誰であるかを私に思い出させるために、このポップアップダイアログボックスにそれぞれの実行を望んでいないが誰であるか知っています。「OK」ボタンをクリックして、我々は、認証メカニズムの2種類が、1ユーザー名とシリアル番号の確認、ちょうど別のシリアル番号であることがわかりました。我々は簡単から難しいの二つの新しいタスクを取得するので、私たちの第二の目標はただのシリアル番号、姓とシリアル番号の取得ユーザーの検証を確認することです

 

 

 

5.目标一:去掉烦人的提示对话框(一般软件设计者用来提醒用户购买正式版本的窗口),要完全去除提示窗口,只需要找到创建该窗口的代码并将其跳过。显示窗口的常用函数有:

  • MessageBoxA(W)

  • MessageBoxExA(W)

  • DialogBoxParamA(W)

  • ShowWindow

  • CreateWindowExA(W)

6.我们用OD打开,然后用Ctrl+G跳转到上面常用函数处

 

7.或者用命令bp MessageBoxA在指定函数处下断,bp表示下断点,后面跟着要下断点的函数名,(bp与函数名之间有个空格)

 

8.下完断点后,按F9让程序运行起来,发现程序会在函数MessageBoxA处断下,观察栈区,会发现就是我们要去除的窗口信息,即此时MessageBoxA函数执行完,就会弹出提示窗口,我们转到调用这个函数的位置(方法见下图2)

 

 

9.本来我们只要nop掉调用MessageBoxA的代码就可以实现目标一,不过后面验证后的结果提示窗口也会调用此处,所以我们还要继续向上找

 

10.终于来到最终的关键处,此时我们采用第二种,直接将push 0x0改为retn(有兴趣的两种都可以试试)

 

11.直接选择要修改的那行,按空格键,输入改后的指令,然后保存修改好后的程序,选择覆盖原程序,会在原程序目录下生成个.bak文件,其实就是修改前的文件改了后缀。

 

 

 

12.今天就到这里,明天完成第二个目标

おすすめ

転載: www.cnblogs.com/ndyxb/p/12412064.html