第三部分 R0 to R3
这部分有教主非常精彩和实用的分析,我就不瞎说了。
http://bbs.pediy.com/showthread.php?t=104918
r3 to r0 是常规系统调用倒过来
中断或者sysenter的东西:
http://hi.baidu.com/andriy_aolala/blog/item/0ce3ebbf137db11a18d81fac.html
NTSTATUS
KeUserModeCallback (
INULONGApiNumber,
INPVOIDInputBuffer,
INULONGInputLength,
OUTPVOID *OutputBuffer,
INPULONGOutputLength
)
这个函数设置好栈的布局后调用KiCallUserMode
KiCallUserMode调用_KiServiceExit
返回到ring3的_KeUserCallbackDispatcher
KeUserCallbackDispatcher从_PEB.KernelCallbackTable取得函数,执行,NtCallbackReturn返回