Re: [v6 PATCH 11/21] insn/eval: Incorporate segment base in address computation

From: Ricardo Neri
Date: Wed Apr 26 2017 - 21:31:32 EST


On Fri, 2017-04-21 at 16:55 +0200, Borislav Petkov wrote:
> On Tue, Mar 07, 2017 at 04:32:44PM -0800, Ricardo Neri wrote:
> > insn_get_addr_ref returns the effective address as defined by the
>
> Please end function names with parentheses.

Will do.
>
> > section 3.7.5.1 Vol 1 of the Intel 64 and IA-32 Architectures Software
> > Developer's Manual. In order to compute the linear address, we must add
> > to the effective address the segment base address as set in the segment
> > descriptor. Furthermore, the segment descriptor to use depends on the
> > register that is used as the base of the effective address. The effective
> > base address varies depending on whether the operand is a register or a
> > memory address and on whether a SiB byte is used.
> >
> > In most cases, the segment base address will be 0 if the USER_DS/USER32_DS
> > segment is used or if segmentation is not used. However, the base address
> > is not necessarily zero if a user programs defines its own segments. This
> > is possible by using a local descriptor table.
> >
> > Since the effective address is a signed quantity, the unsigned segment
> > base address saved in a separate variable and added to the final effective
>
> ".. is saved..."

I will correct this.

Thanks and BR,
Ricardo