PVS-Studioのセキュリティ調査

PVS-Studio






ご挨拶! これは原則として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 + RAnalyze )を押して、リストを展開し、その中の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分間の研究の力から、良い結果を待っています。



終わり










みんなありがとう!



All Articles