-1

ゲームランチャーであるアプリケーションがあります。アプリケーションの実行中に、そのファイルにロードされている dll をループして、特定の関数がエクスポートされているかどうかを確認したいと考えています。

どうやってやるの?

ネットリフレクターの使用について話しているのではありません。ゲームランチャーからメモリにロードされたdllによってエクスポートされた関数をチェックし、それらをループして特定の関数が呼び出されているかどうかを確認したい.

4

3 に答える 3

1

ジャックス、このStackOverflowの質問を見てください。それはあなたが必要とすることを正確に行うことができるはずです。物事を単純にするために、使用するように言っているコメントを具体的に見てくださいDumpbin.exe /exports。それはおそらくそれを行う最も簡単な方法でしょう。どうしてもプログラムで行う必要がある場合は、代わりにこのStackoverflowの質問をご覧ください。

Dumpbinメソッドを使用すると、次のようなことができます。

        // The name of the DLL to output exports from
        const string dllName = @"C:\Windows\System32\Wdi.dll";
        string output = string.Empty;
        var info = new ProcessStartInfo();
        var process = new Process();

        info.CreateNoWindow = true;
        info.RedirectStandardOutput = true;
        info.UseShellExecute = false;
        info.EnvironmentVariables.Remove("Path");
        // DumpBin requires a path to IDE
        info.EnvironmentVariables.Add("Path", Environment.GetEnvironmentVariable("Path") + @";c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\");

        // Your path might be different below.
        info.FileName = @"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\dumpbin.exe";

        info.Arguments = string.Format("/exports \"{0}\"", dllName);

        process.OutputDataReceived += (senderObject, args) => output = output + args.Data;
        process.StartInfo = info;
        process.Start();
        process.BeginOutputReadLine();

        process.WaitForExit();
        // output now contains the output
于 2012-09-28T20:21:59.743 に答える
0

.net リフレクションを使用します。これを行う方法の良いサンプルを次に示します。

http://towardsnext.wordpress.com/2008/09/17/listing-types-and-methods-of-assembly-reflection/

于 2012-09-28T19:58:56.057 に答える
0

次のようなものを見たいかもしれません

リフレクションを使用して、C# で実行時に参照されていないアセンブリを読み込む

リフレクションの例 [C#]

于 2012-09-28T20:00:09.017 に答える