2016-05-12 6 views
-2

を返すためにコンパイルされたバイナリで呼び出します。変更のWinsock APIは、私は1つの点で、私はインターネットにアクセスするためにコンパイルされたバイナリの機能を無効にするために持っていたし、私はそれをやったか忘れてしまったことを覚えておいてください0または-1

Winsock呼び出しをインポートテーブルから削除することはできません。致命的なエラーが発生するためですが、指定された関数が常に0または - を返すようにする方法がありました。 1。たとえば、WSAStartupが常に-1を返すと、アプリケーションによってインターネットにアクセスしようとする試行はすべて終了します。

それは私がこれを誤思い出しています、と私は実際にメモリにロードされたバイナリを変更したことは可能ですが、私は何とかAPI呼び出しをネットワーキング拒否するディスク上の静的なバイナリを変更したと思いました。これどうやってするの?

+1

コード内のネットワークへのアクセスを停止するだけでは簡単ではないでしょうか。 –

+0

@DavidHeffernan私はこのバイナリのソースコードにアクセスすることはできませんし、ソースコードを持っていてもコンパイルに必要な依存関係はありません。 –

+1

OK。その場合、ファイアウォールを使用しないのはなぜですか? –

答えて

0

おそらく、インポートテーブルがWSAStartupではなくWs2_32.dll : WSAStartup, ...であることがわかります。後者の部分(WS2_32.dllには便利な機能はありません)にパッチを当てることはできませんが、DLL名そのものを修正することは間違いありません。

さて、これはそのDLLからのすべての機能に影響を与えますが、それはあなたの交換用DLLは、すべての機能を交換しなければならないという意味ではありません。ほとんどの機能は、Ws2_32.Dll:Fooに、すなわちWsprox.Dll:Foo前方にを転送することができます。

しかし、この場合には、あなたはおそらく、すべての機能をスタブことができます。ファンクションシグニチャは、ファンクションとは無関係ですが、WSAStartupです。ローダーにはエントリが必要です。いくつかのハッキングを使って、すべての関数名の同義語をWSAStartupにすることができます。エクスポートリストにFoo=WSAStartupと入力してください。

+0

右ですが、私はスタブ関数やws2_32.dllの置き換えを避けることを望んでいました。 WSAStartupと同じ引数の幅をとり、常に-1を返す別の関数があった場合は、明らかにその関数へのインポートテーブルを指すことができますが、ws2_32.dllの代替バージョンを作成しているとは思いませんそのような輸出を含むことは迷惑になるだろう。 –

+0

代替DLLを書き込んだり、ネットワークフィルタドライバを書き込んだり、ファイアウォールを使用したりしない場合は、インポートテーブルをパッチするだけで残っています。あなたはソースコードを持っていないので、スタートアップ時にテーブルにパッチを当てるために、メインアプリを起動してコードを注入する別々のランチャーアプリを作成します。 –

関連する問題

 関連する問題