私は、Windowsで文書化されていないAPIを見つける方法について興味がありました。
私はそれらを使用することに伴うリスクを知っていますが、この質問はそれらを見つけることに焦点を当てており、それらを使用するかどうかではありません。
ツールを使用して、共有ライブラリ(たとえば、kernel32.dllなどの.dll)からエクスポートテーブルをダンプします。名前付きエントリポイントおよび/または序数エントリポイントが表示されます。通常、ウィンドウの場合、名前付きエントリポイントはマングルされていません(外部「C」)。ほとんどの場合、アセンブリコードを少し覗いて、スタックフレーム(存在する場合)からパラメーター(タイプ、番号、順序、呼び出し規約など)を導き出し、使用法を登録する必要があります。スタックフレームがない場合は少し難しくなりますが、それでも実行可能です。参照については、次のリンクを参照してください。
エクスポートセクションを調査するには、 dumpbin などのツールを確認してください。
文書化されていないWindowsAPIの更新されたリストを保持しようとするサイトや本もあります。
編集:これらの同じ原則は、多数のオペレーティングシステムで機能しますが、エクスポートテーブルをダンプするために使用しているツールを置き換える必要があります。たとえば、Linuxでは、 nm を使用してオブジェクトファイルをダンプし、そのエクスポートセクションを(とりわけ)リストすることができます。 gdb を使用してブレークポイントを設定し、エントリポイントのアセンブリコードをステップ実行して、引数を決定することもできます。
ここではIDAProが最善の策ですが、2倍にしてください実際には何にも使用しないでください。
それらは変化するため、内部にあります。ホットフィックスの結果として変更される可能性もあります(実際に変更される可能性もあります)。そのため、文書化されていないAPIが、作成した特定のOSバージョンおよびサービスパックレベルで機能することさえ保証されません。あなたがそのような製品を出荷するならば、あなたは借りた時間に生きています。
これまでのところ、Windows OSの文書化されていない部分[〜#〜] rpc [〜#〜]を構成するいくつかの実質的な機能が不足しています。 RPC(rpcrt4.dll、lsass.exe、csrss.exeなど)操作は、LPCポートまたは他のインターフェイスを介して、すべてのサブシステムで非常に頻繁に発生します。それらの機能は、さまざまなタイプ/サブタイプの神秘主義の呪文に埋もれています。/struct-typedefなど...非同期の性質またはプロセスの運命にあるため、デバッグが大幅に困難になります。シングルステップでデバッグする場合、またはシステム全体を見つけることができます。キーボードまたは他のI/Oの通過をブロックすることによるロックアップ;)
ReactOS は、文書化されていないAPIを調査するためのおそらく最も便利な方法です。彼らはかなり成熟したカーネルと他の幹部が構築されています。 IDAはかなり時間がかかり、ReactOSの人々がまだ持っていないものを見つけることはまずありません。
リンク先のページの宣伝文です。
ReactOS®は、Windows®XP/ 2003の設計に基づいた無料の最新のオペレーティングシステムです。完全にゼロから作成されており、ハードウェアレベルからアプリケーションレベルまで、Microsoftによって設計されたWindows®アーキテクチャに従うことを目的としています。これはLinuxベースのシステムではなく、UNIXアーキテクチャを共有していません。
ReactOSプロジェクトの主な目標は、Windowsとバイナリ互換のオペレーティングシステムを提供することです。これにより、WindowsアプリケーションとドライバーをWindowsシステムと同じように実行できるようになります。さらに、Windowsオペレーティングシステムのルックアンドフィールが使用されているため、Windows®の使い慣れたユーザーインターフェイスに慣れている人は、ReactOSを簡単に使用できます。 ReactOSの最終的な目標は、エンドユーザーが変更に気付くことなくWindows®を削除してReactOSをインストールできるようにすることです。
私がめったに見られないWindows構造を調査しているとき、ReactOSが唯一の信頼できるリファレンスであることがよくあります。
システムdllとそれらがエクスポートする関数を確認してください。文書化されているかどうかに関係なく、すべてのAPI関数はそれらの1つ(ユーザー、カーネルなど)にエクスポートされます。
ユーザーモードAPIの場合、Kernel32.dll User32.dll Gdi32.dll、特にntdll.dllを dependancy walker で開いて、エクスポートされたすべてのAPIを見つけることができます。ただし、ドキュメントのオフコースはありません。
Native APIS by MarkRussinovichに関する良い記事を見つけました