問題タブ [api-hook]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1438 参照

winapi - 自身のプロセスに ExitProcess をフックする IAT

自分のプロセスへの IAT フックについて質問したいのですが。

現在、ExitProcess をフックして、ExitProcess 呼び出しの前に特定の関数を実行しようとしていますが、いくつかの問題に直面しています。

実行時に PE をトラバースし、 IMAGE_IMPORT_DESCRIPTOR を通過し、kernel32.dll (最初の .dll) を見つけた後、THUNK_DATA-s を名前でトラバースし、そこに ExitProcess を見つけようとしていますが、運はありません。

関数のログ、それらはそこにある関数です -

ExitProcess は 内のどこにもありませんが。

同様に失敗しましたが、名前の代わりに関数ポインターで列挙しようとしました(originalthunkdataの代わりにthunkdataを使用)。

ExitProcess の GetProcAddress は PE 内のポインターを返します。結果は同じですが、loadlibrary によって強制的に (自動的に読み込まれるはずですが) kernel32.dll を読み込もうとしました。

何が問題なのですか?

どうもありがとうございました。素晴らしい一日を!

0 投票する
2 に答える
908 参照

c# - .net実行可能ファイルで関数呼び出しを傍受/上書きする方法は?

デバッグ目的で、.net 実行可能ファイル (ソース コードにアクセスできないサード パーティの実行可能ファイル) で CLR 関数呼び出しをインターセプトしたいと考えています。私はいくつかのフック API (deviare、easyhook、mhook) などを見てきましたが、それらは xxx.dll!functionname などの dll 内の単純な関数へのフックのみをサポートし、オブジェクトなどのコンストラクター呼び出しをログに記録することはできないと思います。プロセスが関数を呼び出す場合など、.net実行可能ファイルで関数呼び出しを簡単にログに記録できるライブラリであるかどうかを知るにはFile.ReadAllText(@"C:\name.txt");、関数File.ReadAllTextを引数c:\name.txtでログに記録します。

ここに私が試した/見たが、私が望んでいたことをしなかったことがいくつかあります。

デビアレ

ムフック

イージーフック

マイクロソフトモグラ

Redgate Ants Profiler (これは非常に近いものです。すべての clr 関数の呼び出しをログに記録します。引数をログに記録するために必要なだけです。それが私の問題をほとんど解決する方法を知っていれば)

0 投票する
1 に答える
1327 参照

c++ - Application Crashes when hooked with MS Detours and Injected with Withdll.exe

I am hooking FindNextFile() using MS Detours. I have configured the Detours library successfully and wrote a dll named "Detuors.dll" and an application named "FNFSend.exe". The following is the code:

DLL:

Both the codes compiled successfully with no errors. The application calls FindNextFile() recursively and the dll hooks it and write the counter to a file.

I then used the tool named "withdll.exe" that is provided by detours library itself to create a process with a dll injected in it. So I injected my dll into the application using command:

withdll /d:Detuors.dll "C:\FNFSend.exe"

After injection, the function is hooked successfully, i.e. the file is made in the dirctory but suddenly the application crashes. After debugging in visual studio, I saw the exception in "output.c" as follows:

Kindly help in rectifying the problem.

0 投票する
4 に答える
1443 参照

c++ - MessageBeep システム API にフックしようとしています

クライアントから、次の厄介な問題を解決するように依頼されました。彼らは、明らかな理由もなく「左右」にメッセージボックスを表示する傾向があるカスタムソフトウェアを持っています。たとえば、ソフトウェア自体が会計プログラムであり、顧客の支払いを受け取ると、メッセージ ボックスが 3 ~ 4 回連続して表示されることがあります。各メッセージ ボックスは、Windows の既定のサウンドを再生します。残念ながら、このソフトウェアがプログラムされた方法、それが再生するサウンドのタイプは完全に間違っています。たとえば、メッセージ自体が単なる情報である場合、警告メッセージ ボックスを表示し、警告システム サウンドを再生することがあります。これはすべて、ソフトウェアを使用するスタッフにとって非常に煩わしいものです。

ソフトウェアを配布しているベンダーに連絡を取ろうとしましたが、行き詰まりました。だから今、私はこの問題を軽減する方法を探しています。

私の最も簡単な解決策は、スピーカーをミュートすることを提案することでしたが、残念ながら、受信メールを聞くことができるようにするために、そして最も重要なことに、後でボイスメールを再生できるようにするために、スピーカーが存在する必要があります. したがって、私の解決策は、単一のプロセスだけでメッセージボックスの音をミュートすることでした。

私の経験から、これらの音を生成している可能性のある 2 つの API があることを知っています: MessageBeepと古いBeepです。

AppInit_DLLs を使用してシステム API にフックする方法を説明しているこの記事も見つけました。著者が示唆するように、カーネル32.dllではなくUser32.dllからフックする必要があるAPIの両方を除いて、それはうまく機能します。

質問セクションには、User32.dll から API にフックするためのおおよその手順を示すこの投稿もありますが、それらを実装しようとすると、十分な情報がありません (私の知識ではそれを実行するための情報がありません)。

私の質問は、User32.dll モジュールの API にフックする方法を知っている人はいますか?

編集:追伸。言及するのを忘れました。このソフトウェアは、UAC と互換性がないため、UAC を無効にして Windows 7 Professional にインストールされます :)

0 投票する
1 に答える
484 参照

winapi - Win 7、8 でウィンドウ タイトルを描画するためのウィンドウ API

WindowsがWin 7(Aeroテーマ)とWin 8でウィンドウタイトルを描画するために使用するAPIを知っている人はいますか? API Monitor ツールで確認しようとしましたが、タイトルを描画する API が表示されません。

お知らせ下さい。

ありがとう。

0 投票する
0 に答える
469 参照

c++ - ExtTextOutW をフックしてテキストの場所を抽出する

Windows API のRedrawWindowExtTextOut、および BitBltについて質問があります。パラメータ lprcUpdate = NULL および hrgnUpdate = NULL を指定して RedrawWindow を呼び出すと、画面上のテキストの位置を抽出するために ExtTextOut をフックしています。

フックされた関数 ExtTextOut で、LPToDP API を呼び出して、場所をデバイス コンテキストの場所に変換します。その後、正常に動作します。テキストの位置は正しいです。

でも、電話したら

その後、失敗します。場所が正しくありません。LPToDP を使用して間違った場所に変換されていることがわかります。

誰でもこの問題について知っていますか? どうすれば修正できますか?

ありがとう。

0 投票する
1 に答える
700 参照

c++ - セッションを保存するためにコンピューターがシャットダウンしているかどうかを検出する方法

C++/x86 asm で RPG ゲームを作成しています。私の質問は C++ コンポーネントに関連しています。C++/win32 では、ゲーム セッションを保存できるように、コンピューターがシャットダウンしているか、電源が切れているか、またはその他のものをどのように検出しますか。私のゲームには「保存」オプションがありますが、ユーザーまたは別のプログラムがコンピューターをシャットダウンすることを決定した場合、何らかの API フックを使用してこれを検出し、ゲーム セッションをテキスト ファイルに即座に保存するにはどうすればよいでしょうか。

ファイルサイズを最小限に抑えたいので、パッシブに実行するスレッドを作成するオプションを提案しないでください。何らかの種類の WM_ フックを提案できれば、それは素晴らしいことです。MSDN を参照したいのですが、WM ディレクトリを何時間も検索したくありません。