関数を含むバイト配列に仮想メモリを割り当て、メモリに配列を書き込んだり、何らかの形で仮想メモリ内の関数を実行することはできますか?メモリにまっすぐにバイト配列の機能?
0
A
答えて
0
実行しようとしているバイトが本当に有効なCPU命令であることを確認する必要があります。そうしないと、「違法命令」、「アクセス違反」などの例外が発生するなど、
次の作業は、問題のバイトが実行権限を持つメモリ内にあることを確認することです。 VirtualProtect
とPAGE_EXECUTE
を入力してください。
次に、実際にコントロールを自分の関数に渡す必要があります。これはアセンブリコードとすることができる。 push <address>; ret;
または変数のアドレスを持つ静的関数のC++スタイルの呼び出し。
"fuctionを含むバイト配列"は、非常に広い仕様です。どのような表現ですか?どのオペレーティングシステムですか?どのようなハードウェアアーキテクチャですか?あなたの質問は、大きな説明がなければ答えられません。 –
特定のプログラミング言語はありますか? – GolezTrol
C++。 Windows。表現は機械コード(またはこれまでのもの)にあります。 x86とx86-64の両方 – replicant