逆アセンブルされた dll を分析していて、行でスタックしてしまいました
mov ebx,fs:[00000004h]
この命令でebxに書き込まれるデータの正確な物理アドレスを知りたいです。gdbは私にそれを教えてくれますfs = 0x53.
アドレスがモード (保護またはリアル) に依存することは既にわかっており、CPU が保護モードになっていることは確かです ( *を参照)。セグメント fs の開始は、GDT のどこかに格納する必要がありますよね? のアドレスもわかりましたGDT-register (0x009bd5c0007f)
が、gdb ではレジスタにアクセスしたり読み取ったりすることができないため、fs (したがって、のfs:[00000004h]
) の物理アドレスを調べる方法がわかりません。
誰でも私を助けてもらえますか?
私は命令を使用し、smsw ax
その後eax
は0x280031でした。したがって、最後のビットは 1 であり、これは保護モードを意味します。私はそれを正しく理解しましたか?