根据在15PB所学的知识,做了一个简单的反汇编引擎,简记如下:
一、查手册时遇到的问题
1.sib表中的[*]列(手册的Table 2-3):
在modrm的第一部分为00B时,此列相当于disp32
否则,此列相当于EBP,代码如下
if (getMod () != 0x0)
{
assert (getMod () == 0x1 ||getMod () == 0x2);
addr->base = getRegName (getBase (), 4); //normal
}
else
{
if (getBase () != 0x5)
addr->base = getRe