邪恶八进制信息安全团队技术讨论组's Archiver

sudami 2008-2-6 16:26

[原创]俺来看个KernelExec.sys-->KernelExec.idb

文章作者:sudami [[email=xiao_rui_119@163.com]xiao_rui_119@163.com[/email]]
信息来源:邪恶八进制信息安全团队([url=http://www.eviloctal.com]www.eviloctal.com[/url])

[table=98%][tr][td]嘿嘿,IDA初学:cry:  ,俺在CodeProject上下了份从内核启动一个R3程序的例子.想学下逆向,于是直接拿IDA看了下这个sys:[b]KernelExec.sys[/b],注释了一下,终于明白了这个驱动的作用啦:

从内核启动一个R3程序.大致是遍历EPROCESS找到explorer.exe, 在其中找到一个alertable的线程,插个用户APC. 这个用户APC就是简单调用WinExec去执行一个指定的程序, 期间要在内核中attach到explorer.exe进程中,为My_Func分配一个MDL,然后映射到explorer.exe的虚拟进程空间中.返回时APC就可以执行啦.

不过这个sys好像有点儿毛病, 它简单的设置ApcState.UserApcPending = TRUE, 好像不调用[b]KeForceResumeThread[/b]的话APC不会执行,俺电脑上一直就没有出效果o(*.*)O

哈哈,原来逆向蛮好玩儿的(俺还没还原成C代码,不算逆向[img]http://bbs.pediy.com/images/smilies/124.gif[/img] ).

btw: 好像真正的在内核中启动一个R3程序,MS是要拦截掉[b]_KiSystemService[/b],在里面jmp到我们指定的代码处,一般是找kernel32.dll的空隙插, 找到[b]CreateProcessA[/b]的地址,弄到kernel32.dll在内存中的空隙里, 然后再XXX就产生了一个R3程序.... 嘿嘿,学习学习:tongue: ~~
[/td][/tr][/table]

[[i] 本帖最后由 sudami 于 2008-2-6 19:22 编辑 [/i]]

页: [1]
© 1999-2008 EvilOctal Security Team