On Friday 24 March 2006 18:26, Jeff Dike wrote:
> On Fri, Mar 24, 2006 at 03:34:01PM +0100, Blaisorblade wrote:
> > The EIP is inside the stub code page, and the two pages are one near the
> > other.

> I think you're going to have to talk more slowly and use shorter words.

Yes, I've been a bit too fast :-)

> The problem is that we need to figure out at runtime where to put the
> stub pages, correct?  And we can't use the code stub page to figure out
> where it is, because we haven't mapped it yet, because we don't know where
> to put it, correct?

That is problem #1, and exists; but when answering I thought to problem #2, 
i.e. that the stub code currently hardcodes the location of the stub data 
page, and that this must be fixed; I didn't notice that we must first put the 
stubs somewhere.

So I remembered that trick to get EIP which I read time ago (the purpose was 
to make some code Position-Independent exactly injecting some code into 
another process address space).

Btw, PIC library are another story because they're told their location (IIRC, 
I forget the details).

Actually, we need to figure were to place the pages, so we could _maybe_ as 
well pass the address to the stub in a register. I'm quite unsure of this 
however as at least clone.c for i386 uses _all_ available registers for the 
6-param syscall call.

> How much can stack randomization vary?  If it can vary more than the
> split varies, which I would expect, then rounding the stack pointer
> isn't going to work.

Dunno, but even if it currently works, we'd better find a solution without the 
assumption that stack randomization doesn't create problem.

> Another approach is to start with the current top of stack

How do you get that?

> and try 
> mapping pages at increments equal to the smallest split granularity
> that we think we are going to see, until one fails.

I don't like the idea of parsing /proc/XXX/maps, but I must mention it too; 
however, the format changed slightly in the various kernels, so it's 
particularly a bad idea.

bfff9000-c0000000 rwxp bfff9000 00:00 0 [stack]

-- 
Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!".
Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894)
http://www.user-mode-linux.org/~blaisorblade

        

        
                
___________________________________ 
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB 
http://mail.yahoo.it



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
User-mode-linux-user mailing list
User-mode-linux-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user

Reply via email to