私は実行可能ファイルを持っています。私はそれをプロセスとして実行し、その標準出力からライブ入力を読みたいと思う。しかし、出力はバッファリングされており、プロセスの終了時にしか取得できません。64ビットVisual C++実行可能ファイルに関数呼び出しを追加する
setbuf(stdout, NULL)
コールをmain()メソッドに挿入したいとします。
IDAを使用しており、C STL関数がMSVCR120.DLLからインポートされていることがわかります。機能setbuf()
/setvbuf()
はインポートされておらず、flush()
/fflush()
もありません。 LoadLibrary()
/GetProcAddress()
はインポートされません。
バイナリにパッチを当てて、バッファされないようにするにはどうすればいいですか?stdout
、どうすればいいですか?あるいは、私はMSVCR120.DLL
について何かできることがあり、すべてのプリントを一掃することができますか?
もっと簡単な方法は、元のdllにすべての呼び出しを転送するmsvcr120.dllの代わりに、最初のIO呼び出しでsetvbufを追加する方法です。 –