問題タブ [apimonitor]
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.
c# - バッファから読み取ると、認識できない (中国語) 文字が表示される
Buffer を読んでいるときにP/Invoke
、認識できない文字が表示されます。変更なしで別のエンコーディングを試しました。また、API Monitor を使用してプロセスを監視しているため、取得しようとしている正しい値が表示されます。誰でもこの問題に遭遇しますか?Ntdll.dll!NtWriteFile
(PVOID)
Rohitab
出力例:
笍^稌ƭ덾塾 錦浽ꭼɿ
sockets - IE11 で WSARecv を正しくフックする方法
私は現在、TCP データを監視するために IE で TCP send および recv API をフックする必要があるプロジェクトに取り組んでいます。IE9 と IE10 で問題なく動作します。しかし、IE11では動かなくなりました。いくつかの調査の後、IE11 は WSASend と WSARecv を使用してデータを送受信することがわかりました。そこで、WSASend と WSARecv をフックすることにしました。
WSARecv は重複した操作です。オーバーラップした操作の結果を取得するには、3 つの方法があります。オーバーラップ操作が使用される場合、関連するイベント、完了ルーチンがあるか、または I/O 完了ポートに関連付けられています。IE11 が WSARec を呼び出したときにオーバーラップした構造を確認したところ、イベントと完了ルーチンの両方が NULL であることがわかったので、IE11 は IO 完了ポートを使用してオーバーラップした操作の結果を取得していると思います。
問題は、GetQueuedCompletionStatus または GetQueuedCompletionStatusEx が IE11 によって呼び出されないことです。API モニターを使用するか、これら 2 つの関数を直接フックしますが、これら 2 つの関数が呼び出されることはありません。IE11 が別の API セットを使用して WSARec の結果を取得するかどうかはわかりません。誰かが同様の問題に遭遇したのだろうか。どの API をフックする必要がありますか? 同じ目標を達成する別の方法がある場合。基本的にやりたいことは、IE11でTCPデータを監視することです。
smartcard - WinScard SCardConnect は SCARD_E_NOT_READY を返します
javax.smartcardio.* を使用して、スマート カード リーダーを備えた Java スマート カードと正常に通信する Java のプログラムがあります。APIモニターを使用すると、java.exeウィッチが実行され、実際にWinSCard winAPIを使用していることがわかりました(通信を開始するとすぐにwinscard.dllがロードされます。実際の呼び出しをまだ見つけることができませんでした)
私の問題は、WinSCard ライブラリを使用して Qt フレームワーク C++ プログラムに同じことを実装しようとしたことです。リーダーが USB に接続されてから 10 秒以内にプログラムを実行すると、すべてがうまく機能しますが、その後、リーダーは省電力状態であると思われる状態になり、数秒後に USB パイプを撃ち落とします。リーダーに接続しようとすると、Java プログラムは自動的にリーダーを「起動」しますが、私が書いた C++ はそうではなく、何が間違っているのかわかりません。
最初にSCardEstablishContext()
call でコンテキストを確立し、次にリーダーをSCardListReaders()
でリストします。これは実際にリーダーをリストする質問です。最後にSCardConnect()
接続するために呼び出しSCARD_E_NOT_READY
、スマート カード リーダーがこの「スリープ」状態にある場合はリターンを返します。
スマート カード リーダーがこの「スリープ」モードでない場合、同じコードで問題なくカードと通信できることに注意してください。
winAPI の説明には、この場合に何をすべきかについてのヒントはなく、何をすべきかの痕跡も見つかりませんでした。誰かがこれに対する解決策を知っている場合は、共有してください!
windows - Windows プログラムは、再起動または CreateService を呼び出さずにカーネル ドライバーをロードする方法
Sysinternals の Process Explorer が というデバイス ドライバーをサイレント モードで読み込むことは知っていますPROCEXPxxx.SYS
。私はそれがこれをどのように行うのか疑問に思っています。私には、アプリケーションにカーネル モード コンポーネントを静かにバンドルする良い例のように見えます。
まず、ドライバーは exe から (おそらくリソースとして) 動的に作成されます。
Process Monitor を使用してレジストリを確認すると、PE がRegCreateKey
キーをHKLM\System\CurrentControlSet\Services\PROCEXPxxx
手動で作成するために使用していることがわかります (その後すぐに削除して、ドライバーの実行後に何も残らないようにします)。
" " を使用するdumpbin /imports procexp.exe
と、PE がまったくインポートされないことがわかりましたCreateService
。また、API Monitor ( http://www.rohitab.com/apimonitorCreateService
) を使用して、実行時に呼び出されないことを確認しました。
では、Process Explorer はどのようにして再起動や呼び出しを行わずにドライバーをサイレント モードでエレガントにロードするのCreateService
でしょうか?
winapi - シェル拡張フォルダーが空のときに「このフォルダーは空です」という背景を表示する
私のシェル拡張機能では、エクスプローラーの動作を模倣し、実際にフォルダーが空であるときに「このフォルダーは空です」というメッセージを表示したいと考えています。
しかし、私はそれを達成することはできません。
API Monitor を使用すると、エクスプローラーが空のフォルダーを更新するIEnumIDList::Next()
と、次のものが返されることがわかります。
つまり、返される「次の」アイテムはNULL
で、アイテムの数は0
で、結果はS_FALSE
です。
前述のように、戻り値を模倣しようとしましたが、実際にはフォルダーにアイテムは読み込まれませんが、メッセージも表示されません。
では、どの API がこのメッセージをトリガーするのでしょうか?
vsto - Windows XP SP3 上の VSTO 2010 ランタイム
Visual Studio 2010 で Excel VSTO アドインを開発しました。Windows 7 以降と Excel 2007 以降のさまざまな組み合わせで正常に動作しますが、Windows XP と Excel 2007 では読み込みに失敗し、情報を提供しない「実行中にランタイム エラーが発生しました」というメッセージが表示されます。 COM アドインの読み込み」メッセージ。VSTO_SUPPRESSDISPLAYALERTS=0
データをVSTO_LOGALERTS=1
生成しません。
API Monitor と Dependency Walker でデバッグしたところ、以下のことがわかりました。アドインを読み込むために、Excel は を読み込みますC:\Program Files\Common Files\Microsoft Shared\VSTO\10.0\VSTOLoader.dll
。このライブラリは、Vista 以降でのみ使用できるGetFileVersionInfoEx
から関数をインポートします。C:\Windows\System32\Version.dll
したがって、VSTO ランタイムのロード中にプロセスが非常に早い段階で失敗するため、アドイン DLL のロードは試行されません。
これを修正する方法についてのアイデアはありますか? 依存関係がありませんか?これまでにインストールしたものは次のとおりです。
- .NET 2.0 SP2
- .NET 3.5 SP1
- .NET 4.0
- オフィス SP3
- http://www.microsoft.com/en-us/download/details.aspx?id=48217の VSTO 2010 ランタイム
- http://www.microsoft.com/en-us/download/details.aspx?id=18346の PIA
c# - 画像が読み込まれて描画されるタイミングを知るには、どのフックを実行する必要がありますか? EasyHook/DLL インジェクション
easyHook を使用して DLL インジェクションを実行し、テキストがいつサードパーティ アプリケーション ウィンドウに書き込まれたかを認識しています。
このアプリケーションは、ウィンドウに画像も描画します。この画像のパス/名前を知っています (パスを次のようにしましょう: C:\ImageLoadedByExternalProgramAndDrawnInTheWindow.png)
ただし、この画像がいつ呼び出されてペイントされるかを知るために、何をフックすればよいかわかりません。どの関数をフックしますか?
API Monitor を調べたところ、次のことがわかりました。
しかし、私はそれを適切に使用する方法がわからないので、どの関数がこれを呼び出しているのかわかりません。それとも... RtlIsDosPath...をkernelbase.dllにフックする必要がありますか?
サミー
c++ - Microsoft Core Audio API: 既定のエンドポイントから WAVEFORMATEX 情報を取得する
ゲームのオーディオ エンジンと、呼び出される Microsoft Core Audio API との間の相互作用を研究しています。ゲームがデフォルトのエンドポイントから「WAVEFORMATEX」情報を取得した方法を理解しようとしています。ゲーム開始時のある時点で、 IsFormatSupported() [ https://msdn.microsoft.com/en-us/library/windows/desktop/dd370876(v=vs.85).aspx]が * で呼び出されることがわかりますpFormat (IsFormatSupported の 2 番目のパラメーター) には、既定のエンドポイントの形式情報 (つまり、チャネル、ビット/サンプル、サンプリング レートなど) が入力されます。これより前に、ゲームが GetMixFormat() [ https://msdn.microsoft.com/en-us/library/windows/desktop/dd370872(v=vs.85).aspx]を呼び出していないこともわかります。
ただし、IMMDeviceEnumerator (EnumAudioEndpoints、QuryInterface、AddRef など)、IMMDeviceCollection (GetCount、Item)、および IMMDevice (QueryInterface、AddRef など) に関連する一連の呼び出しがあります。これらのドキュメントを見ると、「フォーマット」(WAVEFORMATEX) 情報を直接取得する方法はないようです。MMDevice::OpenPropertyStore() が呼び出され、続いて 'GetId()' が呼び出されますが、'PKEY_AudioEngine_DeviceFormat' パラメーターを使用した 'GetValue()' の呼び出しが見られません。これにより、'format' 情報が提供される可能性があります。したがって、ゲームが「フォーマット」情報をどのように取得したかについては、少し困惑しています。前述の呼び出しのいずれかで、間接的に「フォーマット」情報を取得できますか?
「オーディオとビデオ」フィルターを有効にして分析するために、API モニター アプリケーション [ http://www.rohitab.com/downloads]を使用しています。
c# - Windows ローカル ファイル システム アクセス API
私は、オーディオ ファイルのスキャン アルゴリズムのいくつかの種類を構築しています。ファイルの割り当てられたセグメントを処理している複数のスレッドを使用しています。パフォーマンスは非常に優れていますが、Microsoft Media Foundation トランスコード API と比較すると、依然としてはるかに低速です。そこで、オーディオ フレームの処理を削除したので、IO アクセスのみが残ります。ただし、MediaFoundation よりもはるかに低速です。そのため、FileStream を使用してファイル全体を読み取るだけで、MediaFoundation を使用してファイル全体を処理するよりも遅くなる可能性があると考えていました。API モニターを使用して処理を確認しましたが、結果は非常に奇妙です。
API モニターにファイル システム アクセスが表示されません (モニターですべてのデータ アクセス API をオンにしました)。
では、開発者が使用できない、より高速な API はありますか? 私は何が欠けていますか?