2016-04-12 31 views
0

私は、Windows 10のpeファイル(この場合はmy proxy.exe)にセクションといくつかのコードを追加することに成功しました。また、エントリポイントを新しいセクションの先頭に変更しました。私がパッチを当てた.exeを実行すると、私のスタブが呼び出され、高音域のビープ音が鳴ります。PEヘッダ - 新しいセクション - メモリ内のOEPアドレスを計算するには?

今、私はOEPに戻りたいと思います。しかし、私のお宅にはメモリのアドレスを計算する方法はありますか? 私はその問題について考えましたが、解決策は思いつきましたか?:

新たに追加されたセクション以外のすべてのセクションのRsizeをカウントして、メモリ内のスタブのアドレス(デルタオフセット)を取得し、そこからの全断面サイズ。今私はメモリの.textセクションの始めにいるはずです。その後、私はoepのためのオフセットを追加し、それをthats。

私は間違いを犯しましたか?おそらく簡単な方法がありますか?そして、DLLについては、プロシージャ全体に違いはありますか?

http://i.imgur.com/tpUH8x4.png < - 事前にスタブの写真

本当にありがとうございました! ;)

+0

どのオペレーティングシステムですか?私の理解は、実行可能ファイルの配置は、O.S(もしあれば)に依存するということです。 –

+0

ああ、私はそのことを忘れてしまった。 - Windows 10. *編集した投稿 –

答えて

0

OEPを使用すると、IMAGE_OPTIONAL_HEADERを修正することを意味すると思います。 AddressOfEntryPoint。

もし私が正しく理解していれば、予想されるRVA(関連する仮想アドレス)を使ってオフセットを減算し、モジュールのロードされたアドレスを取得し、OEPのRVAに追加してエントリポイントの実アドレス。 数学が正しいとすれば、これはうまくいくはずです。

私は特権をまだコメントしていませんが、私はこれを正確に試してみませんが、コンパイラがバイナリのために何をするのかに似ている提案です。

OEPはRVAです。注射中には、あなたが置き換えたORIG_RVAとinject_RVAがあります。あなたの注入ロジックにちょうど

オフセットを追加してください:押しorig_rva。

オフセットの場合は、再配置エントリをPEの再配置テーブルに追加します。ローダーが残りの作業を行います。

関連する問題