ご挨拶! これは原則としてHabréの最初の投稿ですが、ハッキングソフトウェア全般に関する最初の記事ではありません。そのため、初心者クラッカーのために、最初からすべてを段階的に書くスキルがあります。 この記事では、
PVS-Studioのトライアルからどのように学んだかについて説明します。
準備する
始める前に、覚えておいてください:あなた自身の危険とリスクで実行するすべてのアクション。 プログラマーの仕事を尊重してください!まず、プログラムをダウンロードしてインストールします。 ここではすべてが簡単です。
私たちは何を扱っていますか?
プログラムが何に書かれているのか、そして「
扱う 」必要があるものを見つけましょう。 StardersはこれにPEiDを使用していますが、現在は非常に古く、データベースは更新されておらず、多くのコンパイラーは理解していません。 通常、
ExeInfo PEを使用します。
プログラムと共にディレクトリに移動し、「
目で 」最初の実験ファイルが
PVSStudioStandalone.exeになることを
決定します。 起動は、それがメインの実行可能ファイルであることも示します。
ExeInfo PEを設定して、以下を取得します。
Microsoft Visual C#/ Basic.NET | .NET Reflectorを使用して.NETアセンブリを探索、閲覧、分析する
液浸。 EXE No. 1
.NET Reflectorをインストールし、その中の実験テーマを開くことをお勧めし
ます 。 やってみましょう。
クラス名は
難読化されて
いないことがわかります(通常のように見えます)。 また、これらのクラスのメソッドのコードを使用すると、それらの上を歩くことができます。
最初の結論を導きます。メインの実行可能ファイルは保護されていません。 わかった さらに来て。ライセンスチェックとそれに関連するすべてを見つけましょう。
PVS-Studioを起動し、
ツール->オプション...->登録メニューに移動します。 ユーザー名とランダムキーを入力してみましょう(著者に連絡せず、キーを要求しなかったため、形式がわかりません)。
これで、
.NET Reflectorでエラーメッセージのテキストを検索できます。
F3 (
検索 )を
押してから、
Ctrl + S (
検索文字列または定数 )を
押します。 「
不正な登録情報 」を入力してください。 取得するもの:
見つかったリンクをダブルクリックして、次のコードを取得します。
このメソッドの呼び出し元を調べてみましょう。
Ctrl + R (
Analyze )を押して、リストを展開し、その中の
Used Byリストを展開します。
get_LicenseType()メソッドへの参照のリスト 見つかった方法に従って[RMB]をクリックすると、[
メンバーに
移動]が表示されます。
ResetRegistrationInformation()メソッドコード 画面で、エラーメッセージが表示される場所を強調表示しました。
ifステートメントの条件で、
無効なライセンスタイプのチェックが表示されます。 そのため、このタイプはコードのどこかにインストールされました。 疑わしいものが見つかるまで、すべての方法を順番に実行します...そして、ここにあります:
メソッドProgramVerificationSystems.PVSStudio.LicenseInfo.Reload() 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分間の研究の力から、良い結果を待っています。
みんなありがとう!