ご挨拶! これは原則としてHabréの最初の投稿ですが、ハッキングソフトウェア全般に関する最初の記事ではありません。そのため、初心者クラッカーのために、最初からすべてを段階的に書くスキルがあります。 この記事では、 PVS-Studioのトライアルからどのように学んだかについて説明します。
準備する
始める前に、覚えておいてください:あなた自身の危険とリスクで実行するすべてのアクション。 プログラマーの仕事を尊重してください!
まず、プログラムをダウンロードしてインストールします。 ここではすべてが簡単です。
私たちは何を扱っていますか?
プログラムが何に書かれているのか、そして「 扱う 」必要があるものを見つけましょう。 StardersはこれにPEiDを使用していますが、現在は非常に古く、データベースは更新されておらず、多くのコンパイラーは理解していません。 通常、 ExeInfo PEを使用します。
プログラムと共にディレクトリに移動し、「 目で 」最初の実験ファイルがPVSStudioStandalone.exeになることを決定します。 起動は、それがメインの実行可能ファイルであることも示します。 ExeInfo PEを設定して、以下を取得します。
Microsoft Visual C#/ Basic.NET | .NET Reflectorを使用して.NETアセンブリを探索、閲覧、分析する
ExeInfo PEウィンドウ
液浸。 EXE No. 1
.NET Reflectorをインストールし、その中の実験テーマを開くことをお勧めします 。 やってみましょう。
.NET Reflectorの画面
クラス名は難読化されていないことがわかります(通常のように見えます)。 また、これらのクラスのメソッドのコードを使用すると、それらの上を歩くことができます。 最初の結論を導きます。メインの実行可能ファイルは保護されていません。 わかった さらに来て。
ライセンスチェックとそれに関連するすべてを見つけましょう。
PVS-Studioを起動し、 ツール->オプション...->登録メニューに移動します。 ユーザー名とランダムキーを入力してみましょう(著者に連絡せず、キーを要求しなかったため、形式がわかりません)。
ランダムな登録データを入力してください
これで、 .NET Reflectorでエラーメッセージのテキストを検索できます。 F3 ( 検索 )を押してから、 Ctrl + S ( 検索文字列または定数 )を押します。 「 不正な登録情報 」を入力してください。 取得するもの:
間違った登録情報を探しています
見つかったリンクをダブルクリックして、次のコードを取得します。
Get_LicenseType()メソッドコード
このメソッドの呼び出し元を調べてみましょう。 Ctrl + R ( Analyze )を押して、リストを展開し、その中のUsed Byリストを展開します。
get_LicenseType()メソッドへの参照のリスト
見つかった方法に従って[RMB]をクリックすると、[ メンバーに移動]が表示されます。
ResetRegistrationInformation()メソッドコード
画面で、エラーメッセージが表示される場所を強調表示しました。 ifステートメントの条件で、 無効なライセンスタイプのチェックが表示されます。 そのため、このタイプはコードのどこかにインストールされました。 疑わしいものが見つかるまで、すべての方法を順番に実行します...そして、ここにあります:
メソッドProgramVerificationSystems.PVSStudio.LicenseInfo.Reload()
GetLicenseInfo()メソッドに喜んで行きます!
GetLicenseInfo()メソッドコード
ここで何が起こっていますか? 引数--checkreg = yesを使用して 、何らかの種類のexeファイルが起動され、コンソールへの出力が解析され、結果に基づいてライセンス情報が提供されるようです。 どのファイルが実行されていますか? 簡単に見つけることができます。GetPVSStudioExePath()メソッドにアクセスすると、次のことがわかります。
GetPVSStudioExePath()メソッドコード
exe PVS-Studio.exeがあり、 x86またはx64ディレクトリにあるようです。 プログラムでディレクトリを確認した後、はい-そのようなフォルダ、およびそのような実行可能ファイルがあることを確認します。 いいね!
そのため、彼は、ライセンス要求に関する特別なパラメーター( --checkreg = yes )を渡すときに、ライセンスに関する情報をあなたに吐き出す必要があります。
さらに深く。 EXE No. 2
コマンドラインからPVS-Studio.exeを個別に起動し、ライセンスについて知りたいという要望を伝えましょう。
ライセンスをリクエストする
非常に適切な検索文字列:「 不明なライセンスタイプ 」。 Olly Debugger v2で彼女を探します。 OlkaでPVS-Studio.exeを開き、RMB- > Search for- >すべての参照文字列をクリックします 。
すべての参照テキスト文字列
Ctrl + F ( テキストの検索)を押して、「 不明なライセンスタイプ」と入力します。 そして、1つのリンクを見つけます。
検索結果不明なライセンスタイプ
リンクをダブルクリックすると、コードが表示されます。
興味深いコード
画面上で、興味深い機能を長方形で強調表示しました。
まず、呼び出しの直後に、 EAXレジスタ内の値が0から3までの数でチェックされます( 0- 試行 、 1- 無効 、 2- タイムアウト 、 3- 有効 )。
次に、バイトはアドレスBYTE PTR SSでチェックされます:[LOCAL.12 + 3] ( Olkaが呼んだように)0から3( 0- 不明なライセンスタイプ 、 1- シングルユーザーライセンス 、 2- チームライセンス 、 3- サイト)ライセンス )。 このアドレスは、 EAXレジスタの関数への入力で提供されます 。
さらにどこかにコンソールへの日付出力がまだありますが、私はそれに対処しませんでした、なぜなら ライセンスの種類が有効な場合 、日付は関係ありません。
パッチ適用。 EXE No. 1
最も興味深いのは、 CALLが指すアドレス(私の場合は0xA88570 )でコードにパッチを適用して、必要なライセンスとモードのタイプが表示されるようにする必要があることです。 コードをコンパイルしましょう:
まず、ライセンスの種類を担当するバイトを「 修正 」します。 サイトライセンスを選択しました(これは3です )。 入手した情報から判断すると、 Olkaに次のようなコードを記述します(アドレス0xA88570で Spaceを押します)。
movバイトptr [eax]、3
次に、 EAXで返される値を修正します 。 また、 3 ( 有効 )を選択しました:
mov eax、3
さて、最後に、関数を終了します。
retn
作業結果
それだけです! 変更を実行可能ファイルに保存し、完全に機能するライセンスをお楽しみください!
パッチ適用。 EXE No. 2
今回は、実行可能ファイルは64ビットなので、Olkaはコードを見つけることができません。 ただし、 x64dbgを使用して見つけることができます。 少し忍耐力を見せて、パッチを当てることもできます!
PSご覧のとおり、30分間の研究の力から、良い結果を待っています。
終わり
みんなありがとう!