Windows のメモリ セグメンテーションに関するいくつかの質問。
Windowsのすべてのプロセスは、独自の仮想メモリを持っていました。各プロセスには独自のタスクがあるということですか(つまり、独自のタスク記述子またはタスクゲートを意味します)?
ollydbg で単純な exe を開いたところ、dll 関数への CALL 命令ごとに、ジャンプ テーブルに移動していることがわかりました。ジャンプ テーブルには、次のような DLL へのジャンプ命令がありました。
JMP DWORD PTR DS:[402058]
私の質問は、ベース アドレスに CS セレクターではなくデータ セグメントを使用する理由です。メモリ マップを開いて 402058 に保存されているものを見つけると、リソースが含まれていることがわかります。DS に格納されている DLL 関数のアドレスを正しく理解している場合は?
メモリ マップが所有者ごとに整理されていることに気付きました。すべてのコードがDSのCSデータなどにあるように、セグメントで編成する必要はありませんか?
ありがとうございました