exe ファイルのコードを開きます。 リソース エディターで .DLL または .EXE ファイルを開く方法。 リソースエディターで開く意味がないファイルはどれですか?

09.12.2020

ソースコード彼らがセキュリティを確保しようとしているかどうかを明らかにすることは不可能です(特にそれがブランド品である場合)。

ただし、コードを完全または部分的に明らかにする方法はあります。

  • IDA Pro は最高の無料クラッカーです。マクロによってはコードを元に戻すことができる場合があります。 しかし、いつもではありません。 ボーランド製品は特に優れています。
  • Hiew.Exe 無料のユーティリティ非常に小さいため、アセンブリ言語コードを編集できます。 テキストと整数定数を編集できます。 これを使用して、プログラムを別の言語に「翻訳」したり、会社名を消去したりすることもできます。
  • PDB ファイルがある場合、またはファイルにデバッグ情報が添付されている場合、開発環境でコードを取得できます (デバッグ情報が完全であれば) 使用することはほとんどありません。 ソースコードを取得することは不可能ですが、「行番号とソース名」、およびすべての定数の名前/値、ローカル変数を取得でき、「関数の断片化」を回避し、クラス充填を備えたクラスも取得できます(プログラムのテキストを除くほぼすべての構造が含まれているため、プログラムがどのように動作するかについての理解を大幅に簡素化できます。 一部のライブラリ (dll) では、pdb ファイルを個別にダウンロードできます。 自尊心のある企業が、自社の貴重な製品の PDB の漏洩を許すはずはありません。
  • デバッグ情報。exe に組み込まれている DebugInfo 情報があります。 そのような情報と対応するユーティリティ (たとえば、Delphi は Borland でコンパイルされており、利用可能です) があれば、前と同様のことができます。 しかし、自尊心のある企業がそのような「愚かな」間違い(pdb と同様)を犯す可能性は低いです。
  • ファイルが C# で書かれている場合は、disSharp を使用してコードでほぼ完全に表示できます (そのようなプログラムでは、インポート テーブルに mscorlib のみが「含まれ」、それだけです)。 DisSharp はプログラムの一部の部分を逆アセンブルするのが苦手ですが、おそらくその有料バージョンまたは同様のユーティリティの有料バージョンの方がコードをよりよく明らかにできます。
  • ファイルが FoxPro、clipper、およびその他の同様のバイトコード言語で書かれている場合、そのファイルは特別なユーティリティ (Refox など) によって開かれます。
  • exescope.exe ユーティリティ ResourceHacker.exe および同様のユーティリティを使用すると、ヘッダーや接続されたライブラリを表示できます (これらを使用すると、 理解するプログラムの記述内容) を確認し、プログラム リソース (Delphi、アイコン、画像、リソース文字列のテーブルなどのリソース フォーム) を編集します。
  • コードがどのように作成されたかを知っている場合は、次があると思います 特別なユーティリティそれを明らかにすることができます(有料でアクセスできません)。

繰り返しますが、これはコード パッカー (その場合は最初にデパッカーを適用する必要があります)、暗号化/自己変更コードがないことが前提です。 難読化ツールで解読しないと解読できません。 コードが大きくなるほど、理解するのが難しくなります。

追伸 私の個人的な意見は、すべてが明らかにされ、ハッキングされるということですが、それには非常に長い時間がかかります。 おそらく 1 年以上 (経験とツールに応じて、無料で利用可能) 良い道具ありません)。

助けを借りて リソースチューナー.EXE、.DLL、.OCX、スクリーンセーバー (.SCR) などの実行可能ファイルを開くことができます。 ファイルを開くと、ファイルのリソースにアクセスし、アイコン、カーソル、グラフィックをさまざまな形式で置き換えたり、メニューの行を変更したり、 ダイアログボックスおよびその他のユーザー インターフェイス要素。

ただし、実行可能ファイル内のリソースは、 プログラムコード、プログラム インターフェイスを変更しても、プログラム コードにアクセスできなくなります。 リソース エディタを使用して、プログラム コントロールを変更できます。 リソースエディタを使用してプログラムコードを変更することはできません。

より重大な変更を行う場合 (ただし、Windows 用アプリケーションのプログラミングに関する十分な経験がなければ、良い結果は得られません)、PE Explorer (PE ファイル構造エディタ) または FlexHex (バイナリ ファイル用の 16 進エディタ) を使用することをお勧めします。

Resource Tuner で EXE または DLL ファイルを開く

ファイルを開く複数の方法をサポートします。 表示および編集するためにファイルを開くには、 ボタンをクリックします。 ファイルを開くツールバーの をクリックするか、コマンドを選択します ファイル > 開けるメニューから。 ツールバーのボタンの横にあるドロップダウン メニューを使用すると、最近開いたファイルのリストに簡単にアクセスできます。 同じリストは次のコマンドでも取得できます。 ファイル > 最近のファイルプログラムメニューから。 リスト内のファイルの数はダイアログで設定します。 カスタマイズ.


Resource Tuner を使用してファイルを直接開くこともできます。 Windows エクスプローラーファイルを右クリックして選択することで、 リソースチューナーで開くコンテキストメニューから。

または、Windows エクスプローラーからデスクトップ上のリソース チューナー アイコンまたは実行中のリソース チューナーのウィンドウにファイル アイコンをドラッグ アンド ドロップすることもできます。

コマンドラインからファイルを開くこともできます。
例えば: Restuner.exe ファイル名.exe

ファイルを開くとき、Resource Tuner はいくつかの自動操作を実行します。ファイルが UPX を使用してパックされたことを検出した場合はファイルを解凍し、ファイルの構造とリソースをチェックします。 考えられるエラーそして最後にフォーマット仕様に従って破損したリソースを再構築します。 実行可能ファイル.

ファイルを開くときのエラー

ファイルを開くときにエラーが発生する場合は、ファイルが保護されている、ファイルが 16 ビットである、またはまったく実行可能ファイルではないという 3 つの理由が考えられます。

1. エラー: ファイルが破損しているか、パッカーによって圧縮されているか、プロテクターによって保護されています。

サイズを減らすためにファイルが圧縮されている可能性が非常に高くなります。 実行可能ファイル用のパッカーやプロテクターは数多くあり、常に新しいものが登場しています。 Resource Tuner は、最も一般的なパッカーである UPX の解凍のみをサポートします。 他のパッカーはサポートされていないため、ファイルを開いて表示または編集するには、自分でファイルを解凍する必要があります。

この状況はプログラム エラーとはみなされません。 私たちは、他のプログラム作成者が自身の作品をハッキングから保護しようとする試みに対抗するつもりはありません。また、商用製品と自家製製品の両方を含む数十の異なるパッケージャーの解凍をサポートするつもりもありません。

2. エラー: ファイルは 16 ビット NE 実行可能ファイルとして定義されています。 この形式はサポートされていません。

当社のプログラムは、32 ビットおよび 64 ビットの PE ファイルでのみ動作します。 NE フォーマット (「New Executable」の略) は、従来の 16 ビット アプリケーション フォーマットです。 Windowsのバージョン 3.xx。 と Windowsの出現 95 この形式は時代遅れとみなされ、使用されていませんが、Microsoft の最新のプラットフォームで実行できます。 16 ビット ファイルはサポートしておらず、サポートする予定もありません。

3. エラー: ファイルが EXE または DLLファイル。 全然!

Resource Tuner は拡張子によってファイルを検出しません。 実行可能ファイルの拡張子の名前を変更した場合 (たとえば、.EXE を .TXT に修正するか、拡張子を完全に削除した場合)、Resource Tuner はこれに騙されません。ファイルを開くときに、プログラムはファイル内のファイル ヘッダーを分析し、拡張子はまったく見ていません。

したがって、Resource Tuner がファイルが実行可能ではないと通知した場合、それは実行可能です。 誰かが何らかの理由で供給した場合 テキストファイルゲームが拡張子 .DLL で配信されている場合、ファイルがテキスト ファイルになることはなく、ダイナミック ライブラリにはなりません。 ファイル拡張子に騙されないでください。

リソースエディターで開く意味がないファイルはどれですか?

Resource Tuner は 32/64 ビットの実行可能ファイルを開いて編集できるように設計されていますが、一部の種類の EXE ファイルには実質的にリソースがありません。

1. Visual Basic を使用して作成されたファイル。

このようなファイルでは、リソース セクションにはアイコンとバージョン情報以外は何もありません。 Visual BASIC で書かれたプログラムのセリフやダイアログは独自の形式で保存され、標準のリソース セクションは使用されません。

2. サイズがギガバイト以上の EXE ファイル。

Resource Tuner は 32 ビット プログラムであるため、仮想メモリ内で開かれているファイルのイメージを最初のギガバイト以内に配置するには当然の制限があります。 ギガバイト以上のサイズのファイルはそこには収まりません。

3. EXE ファイル形式の自己解凍アーカイブ。

このようなファイルでは、リソースにはアイコンとバージョン情報、さらにはそれさえも含まれます。 基本的に、これは解凍用のサブルーチンを備えたアーカイブ データです。

4. 他のプログラムのインストーラー。

このようなファイルでは、リソースにはアイコンとバージョン情報以外は何も含まれません。 ポイント 3 と非常に似ています。 インストーラー ファイルは、圧縮形式の別の .EXE ファイルとそれを抽出するためのサブルーチンを含むコンテナーと考え​​ることができます。 さらに、インストーラーを作成するプログラムは、さまざまなアルゴリズムを使用して、アーカイブされたデータをプログラム内に保存します。

無料トライアル版をダウンロードしてください!


リソースチューナーの実行環境 Windows のすべてのバージョン
2000 と XP から 8 と 10 まで。

最小システム要件:
Intel Pentium® または AMD K5 166 MHz プロセッサ
16MBのRAM


時々 CODE.EXE およびその他のエラーが発生する システムエラー EXE は、Windows レジストリの問題に関連している可能性があります。 いくつかのプログラムで CODE.EXE ファイルを使用できますが、それらのプログラムがアンインストールまたは変更されると、「孤立した」(不正な) EXE レジストリ エントリが残ることがあります。

基本的に、これは、ファイルの実際のパスが変更された可能性があるにもかかわらず、その誤った以前の場所が Windows レジストリに記録されたままであることを意味します。 Windowsが不正なファイル参照(PC上のファイルの場所)について調べようとした際に、CODE.EXE エラーが発生する場合があります。 さらに、マルウェア感染により、Game Cracker に関連付けられたレジストリ エントリが破損した可能性があります。 したがって、ルートで問題を解決するには、これらの破損した EXE レジストリ エントリを修正する必要があります。

PC サービスの専門家でない限り、Windows レジストリを手動で編集して無効な CODE.EXE キーを削除することはお勧めできません。 レジストリの編集時に間違いを犯すと、PC が動作不能になったり、修復不可能な損傷を与えたりする可能性があります。 オペレーティング·システム。 実際、カンマが 1 つでも間違った場所に配置されていると、コンピュータが起動できなくなる可能性があります。

このリスクがあるため、次のような信頼できるレジストリ クリーニング ツールを使用することを強くお勧めします。 %%製品%%(Microsoft ゴールド認定パートナーによって開発) CODE.EXE 関連の問題をスキャンして修正します。 使用する レジストリのクリーニングを使用すると、破損したレジストリ エントリ、欠落しているファイル参照 (CODE.EXE エラーの原因となるものなど)、レジストリ内の壊れたリンクを見つけるプロセスを自動化できます。 各スキャンの前に、 バックアップを使用すると、ワンクリックで変更を元に戻すことができ、コンピュータへの損傷を防ぐことができます。 一番いいのは、 レジストリ エラーのトラブルシューティングシステムの速度とパフォーマンスを大幅に向上させることができます。


警告:そうでない場合は、 経験豊富なユーザー PC では、Windows レジストリを手動で編集することはお勧めしません。 レジストリ エディタを誤って使用すると、重大な問題が発生する可能性があり、 Windowsの再インストール。 レジストリ エディターの誤った使用に起因する問題が修正されることは保証されません。 レジストリ エディタはご自身の責任で使用してください。

手動で復元する前に Windows レジストリの場合は、CODE.EXE に関連付けられたレジストリの一部 (たとえば、Game Cracker) をエクスポートしてバックアップを作成する必要があります。

  1. ボタンをクリックしてください 始める.
  2. 入力 " 指示「V 検索バー...まだクリックしないでください 入力!
  3. キーを押したまま CTRL-Shiftキーボードで、 を押します 入力.
  4. アクセス用のダイアログボックスが表示されます。
  5. クリック はい.
  6. ブラック ボックスが開き、カーソルが点滅します。
  7. 入力 " 登録編集を押してください 入力.
  8. レジストリ エディタで、バックアップする CODE.EXE 関連のキー (Game Cracker など) を選択します。
  9. メニューにある ファイル選択する 輸出.
  10. リストに載ってる 保存先 Game Cracker キーのバックアップを保存するフォルダーを選択します。
  11. フィールドで ファイル名バックアップ ファイルの名前を入力します (例: 「Game Cracker Backup」)。
  12. フィールドを確認してください 輸出範囲選択された値 選択したブランチ.
  13. クリック 保存.
  14. ファイルが保存されます 拡張子 .reg 付き.
  15. これで、CODE.EXE 関連のレジストリ エントリのバックアップが作成されました。

レジストリを手動で編集するための次の手順については、システムに損傷を与える可能性があるため、この記事では説明しません。 レジストリの手動編集の詳細については、以下のリンクを参照してください。

*** 書かれたものはすべて教育目的のみに使用してください。 ***

-ツール-
OLYDBG
コードを挿入するアプリケーション。
そうなる メモ帳.EXE.
ファイルのコピーを作成することをお勧めします。
これですべてです

-始める-
私たちの目標は、コードを Notepad.EXE に貼り付けることです。
簡単なものを貼り付けていきます メッセージボックス打ち上げ用に メモ帳.
起動しましょう ノート、正常に起動することを確認します。

オリジナルであると確信している場合 メモ帳.exeで開きます オリー.
次のウィンドウが表示されます。

コードを挿入するには、プログラム コード内にコードを挿入する場所が必要です。
exeファイルには色々なものが入っています コードケイブ。 これらはバイトです ( DB00).
プログラムコードを最初の少し下までスクロールするだけで、次のことがわかります。 コードケイブ:


赤い四角形は部分を強調表示します コードケイブ「アミ?
ここに任意のコードを挿入しても、プログラムはクラッシュしません。
呼び出す API 関数がわかっている場合 メッセージボックスこれらの行は飛ばしてください。

***** WIN32 プログラマ マニュアルから引用を開始

MessageBox 関数は、メッセージ ボックスを作成、表示、操作します。
メッセージ ボックスには、アプリケーション定義のメッセージとタイトルが含まれます。
さらに、事前定義されたアイコンとプッシュ ボタンの任意の組み合わせも可能です。

Int メッセージボックス(
HWND hWnd, // オーナー ウィンドウのハンドル
LPCTSTR lpText, // メッセージ ボックス内のテキストのアドレス
LPCTSTR lpCaption, // メッセージ ボックスのタイトルのアドレス
UINT uType // メッセージボックスのスタイル
);

***** WIN32 プログラマ マニュアルからの引用終了

クリックして展開...

知っておくべきことはこれだけです メッセージボックス.
で何かやってみよう コードケイブ.
使用するには メッセージボックスに表示するテキストを作成する必要があります。
メッセージボックス。 次の図では、いくつかの行を強調表示しています。 コードケイブそして
メニューを見せた バイナリ編集あなたのために(私たちはそれを必要とします)。


押したら バイナリ=>編集または (CTRL+E) 次のウィンドウが表示されます。
私と同じ方法で上のフィールドに入力するだけです。
[OK] をクリックすると、変更されたコードが表示されます (赤で強調表示されています)。
ここで CTRL+A を押してコードを再分析します。
わかりました! ここで、メッセージのタイトルを異なるものにしたい場合は、この行を複製します。
(これはプロシージャ呼び出しの 2 番目のパラメータに似ています)。

-アセンブラを少し-

時が来た A.S.M.
ここに良い例があります!

0 を押します。 ボタン =<ТОЛЬКО КНОПКА OK>
プッシュ 1008751 ; キャプション = 私たちの住所「注入されたメモ帳」
プッシュ 1008751 ; メッセージ = 同じ。
0 を押します。 アイコン =<БЕЗ ИКОНКИ>
メッセージボックスAを呼び出します; 指定されたパラメーターを使用して MessageBoxA を呼び出します。

クリックして展開...

に入力されたこれらの行は、 オーリー次のようになります:

矢印が見えますか? これは非常に重要です!
結局のところ、プログラムを実行するだけでは何も起こりません。 なぜ?
なぜなら、私たちの小さなプロシージャはまだどこにも呼び出されていないからです。
その先頭のアドレスを書き留める必要があります。 住所 " プッシュ0「ジャンプする必要があるから」
私たちの手続きに戻ってください
素晴らしい。 ここでプログラムの最初に戻ります ( ボタンCツールバー上 オーリー、または図のように)。

今、私たちは実行される最初の行にいます。
私たちの目標はコードを挿入することであることをまだ覚えていますか?
それでは続きます!
先頭から数行を選択し、クリップボードにコピーします。


これらを任意のテキスト リアクターに貼り付けます。後で役立ちます。
もう一度プログラムの先頭に戻ります。
(上の写真は プッシュ70).
この行をダブルクリックすると、次のウィンドウが表示されます。
「」を入力する必要があります。 JMP<адрес PUSH 0, который мы записывали ранее> "
「アセンブル」ボタンをクリックすると、プログラムコードが再び変更されます。 変更は赤色で強調表示されます。

赤い四角を見てください! これは、コードが完成したときにジャンプする必要があるアドレスです。
しかし、注入後にここにジャンプすると、プログラムは注入がないかのように実行されます。
そこで、やるべきことがもう 1 つあります。
プログラムの新しい始まりと、テキスト エディタにコピーした古いプログラムを比較してください。
2 行が書き換えられていることがわかります。 しかし、私たちにはそれらが必要なのです 通常動作
エラーのないプログラム。 上書きされた行を見つけます。
私の場合、それは次のコードでした。

プッシュ70
メモ帳を押してください。01001898

クリックして展開...

コードの最初の行をクリックします ( JMP)を押して、 入力.
挿入された MessageBox 呼び出しコードが表示されます。
メッセージボックスAに電話をかけるこれらの 2 行を挿入して、元に戻る必要があります。


それだけです!
(ジャンプが正しく機能しているかどうかを簡単に確認できます - クリックしてください 入力!)
「変更した」メモ帳を保存するには、図に示す手順に従います。
次に、 を押します すべてコピー。 表示されるウィンドウで右クリックする必要があります マウスボタン,
メニュー項目を選択 ファイルの保存そして新しい名前で保存します。 ファイルを実行します。

追加された関数は、記事に書かれているように直接呼び出す必要はありませんが、少し異なる方法で呼び出す必要があります。

まず、インポートにプロシージャを追加した後、それを知っておく必要があります FT (ファーストサンク「IAT」)。 ここに表示されます:

覚えておいてください!(彼に電話します TrueAddress)​


次に、コードを記述する場所に進みましょう ( コードの洞窟).
次に、関数に正しい呼び出しを追加しましょう メッセージボックスA。 これを行うには、次のように書きます。

JMP [[B]TrueAddress]

もし オリー新しいコードがプロシージャ呼び出しとして自動的に識別されました。これは非常に優れています。 したがって、さらに簡単になります。 そうでない場合は、インポートアドレスの計算が間違っています。 ダブルチェックしてください!
このアドレスを書き留めてください JMP(彼に電話します TrueCall).

ここで、記事と同じようにすべての操作 (行の挿入、PUSH など) を実行しますが、代わりに次のことを行います。

メッセージボックスAを呼び出す

次のように書く必要があります:

コール[B]TrueCall

残りは同じままです。

クリックして展開...