nikolatesla20
April 16th, 2002, 10:13
Just a couple quick questions here.
Okie, I've been reading some of the threads about Revirgin, and about ImpREC. What I am wondering is I read Revirgin uses Ring0 tracer I believe. SO first my question is how? I mean doesn't a ring 0 need to be a system driver? Or is the program (perhaps in a dll) somehow making a transition to ring 0 ?
If this is so, how is something like that done, and how safe is it.
Going further, I notice that programs like OllyDbg say they use only Win32 APIS for debugging - and it has a tracer built in. From what I know of the API for debugging, couldn't the app just check IsDebuggerPresent() and kick you in the *nuts*
The reason I am interested is because of the new OEPFinder tool, I thought perhaps we could add a basic tracer to it, that can start the target and simply watch the EIP register and when it hits the OEP jump point, it can log the eax register (or maybe even script it what to log for example), so now you have the real oep.
What I want to know for sure is, is it only possible to get to the register values of a process thru debugging it?
And how does a ring0 tracer like Revirgin actually work - I only see two dll's..is there something else fancy going on (I'm not a driver programmer, I think I will ask the driver guys a work some questions today
)
I see on Win32 you can get a handle to a current thread with OpenThread() and then you can get the registers I think with GetThreadContext() but of course you have to call SuspendThread first and it says these functions supposedly work even when not debugging a process...hmmmm.
Thanks for hearing my rant !
-nt20
Okie, I've been reading some of the threads about Revirgin, and about ImpREC. What I am wondering is I read Revirgin uses Ring0 tracer I believe. SO first my question is how? I mean doesn't a ring 0 need to be a system driver? Or is the program (perhaps in a dll) somehow making a transition to ring 0 ?
If this is so, how is something like that done, and how safe is it.
Going further, I notice that programs like OllyDbg say they use only Win32 APIS for debugging - and it has a tracer built in. From what I know of the API for debugging, couldn't the app just check IsDebuggerPresent() and kick you in the *nuts*

The reason I am interested is because of the new OEPFinder tool, I thought perhaps we could add a basic tracer to it, that can start the target and simply watch the EIP register and when it hits the OEP jump point, it can log the eax register (or maybe even script it what to log for example), so now you have the real oep.
What I want to know for sure is, is it only possible to get to the register values of a process thru debugging it?
And how does a ring0 tracer like Revirgin actually work - I only see two dll's..is there something else fancy going on (I'm not a driver programmer, I think I will ask the driver guys a work some questions today

I see on Win32 you can get a handle to a current thread with OpenThread() and then you can get the registers I think with GetThreadContext() but of course you have to call SuspendThread first and it says these functions supposedly work even when not debugging a process...hmmmm.
Thanks for hearing my rant !
-nt20