如何检查存储在寄存器中的值是代码段中的有效地址

时间:2015-05-10 18:48:31

标签: windows assembly x86

我正在Windows机器上编写一个小型x86汇编程序。有一次,我想检查存储在EDX寄存器中的值是否是指向同一程序的代码段的有效地址。任何人都可以告诉我如何做到这一点?

1 个答案:

答案 0 :(得分:1)

在程序开始时,添加这样的标签......

 The_Code_Starts_Here:

在程序结束时,添加这样的标签......

 The_Code_Ends_Here:

在您想要质疑该地址有效性的部分中,请执行以下操作......

 Cmp    Edx, The_Code_Starts_Here   ; Is it in the code segment ?
 Jb     Bombs_Away                  ; No, bomb out

 Cmp    Edx, The_Code_Ends_Here     ; Is it in the code segment ?
 Jae    Bombs_Away                  ; No, bomb out

                                    ; Else, good stuff, go on

如果我搞砸了JbJa命名法,那就转换它们。