exeファイルのみを分析することにより、デルファイアプリケーション内でmadexceptが使用されているかどうかを検出できますか?
私のアプリケーションに数行のコードを追加し、madshi madexcept が使用されているかどうかを最終的な exe ファイルのユーザーに通知する簡単な方法はありますか?
Delphi アプリケーションで使用する場合は、その実行可能ファイルにmadexcept
リソース エントリが必要です。MAD->EXCEPT
外部アプリケーションをテストするには:
var
h: HMODULE;
h := LoadLibraryEx('c:\foo\bar.exe', 0, LOAD_LIBRARY_AS_DATAFILE);
if h <> 0 then
begin
if FindResource(h, 'EXCEPT', 'MAD') <> 0 then
ShowMessage('madexcept Found!');
FreeLibrary(h);
end;
独自のアプリケーション内でテストするには:
if FindResource(HInstance, 'EXCEPT', 'MAD') <> 0 then
ShowMessage('madexcept Found!');
ただし、Whis は、どのオプションmadexcept
が使用されるかを通知しないことに注意してください。たとえば、アクセス違反の例外をフィルター処理する例外フィルター セットや、凍結されたスレッドをチェックしない設定などがあります。
テキスト「madexcept」のプレーンテキスト検索を実行できます。私が知っている最も簡単な方法は、コマンド ライン ユーティリティを使用することです。次のように文字列と grep ユーティリティを組み合わせます。
C:\mydir>strings MyApp.exe | grep -i madeexcept MadException MadExceptionT madExcept madExcept U9v;1 madExcept5 狂った例外 madExcept madException1 c madExceptL c madExcept c madExcept c madExceptL c madExcept c madExcept madExcept c madExceptH この方法では、madExcept はスレッド フックをインストールできません。 .........
私は個人的にこれらの不可欠なユーティリティのソースとしてGnuWin32を使用しています。
コマンド ラインが苦手な方は、Process Explorer を使用してください。実行可能ファイルを実行してから、Process Explorer を実行します。プロセスを見つけてダブルクリックします。Stringsという名前のページを含む Process Explorer プロパティ ダイアログが表示されます。そのページを選択し、保存ボタンをクリックします。これで、検索可能な実行可能ファイルのすべての文字列を含むテキスト ファイルが作成されました。
これだけで、madExcept コードをプログラムにコンパイルしたことがわかります。実際にアクティブかどうかはわかりません。
madExceptを有効にしてプロジェクトオプションを調べると、たとえばプログラムで実行できる場所であればどこでも、定義madExceptが使用されていることがわかると思います。
{$IFDEF madExcept}
....
{$ENDIF}