网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
ring0调用Ring3的代码
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
ixi~~~下面的代码里有那个计算~~呵呵~~

)

虽然是这样的,但是我还是劝各位不要用KeUserModeCallBack来传递参数给我们的Ring3代码,要传递也应该使用其它方法——比如Ratter把参数Copy到Ring3代码后面,然后再代码里重定位到地方取参数~返回参数EAX是KeUserModeCallBack的,因而要想要返回参数就要传递outsize为strlen(lpoutbuf)就行了~~
如果非要传递,应该小心一些~因为可能蓝屏~我也不知道为什么~呵呵~

我还有一种方法就是覆盖KeUserCallbackDispatcher为我们Ring3代码的地址----大多数情况下会蓝,然后用KeUserModeCallBack执行,这样我们就可以通过一个常见systemcall_number来执行我们代码,另通过分析ntos/ps/psinit.c
我发现KeUserCallbackDispathcer就是NTDLL里的KiUserCallbackDispatcher~~~习习~~~那样避免蓝屏要用在进程空间改写KiUserCallBackDispatch和插入代码~
内核空间改写的话,要指向内核地址,ring3代码要插入内核的NTDLL空间中~
记得不论在哪里改写都要最后调用原函数~~~!!!!!!!!!~~~~
(这种方法是我最z发现的阿阿----其实是听erx大哥讲的一个思路~)
再多说就成了教唆犯罪了~


在ring0调用Ring3的代码的续
 
  利用建立新的APC方法回调代码——原创者不详~
  这种方法一般应用用户层和内核驱动之间有交互——KeUserModeCallBack的是插入回调,
  Infect是感染进程~
  但是建立新APC的方法更温柔一些,呵呵~~所用到的函数是两个undoc的函数,具体的原始形态实在是简单——感谢Open Source Windows~~~

VOID
KeInitializeApc (
  IN PRKAPC Apc,//我们要自己初始化这个OurApc=ExAllocatePool(NonPagedPool, sizeof(struct _KAPC));
  IN PRKTHREAD Thread,//目标线程——用户层交互的话,直接KeGetCurrentThread()好了
  IN KAPC_ENVIRONMENT Environment,//应该添0,就是CurrentApcEnvironment
  IN PKKERNEL_ROUTINE KernelRoutine,//我们的APC处理函数MyApcRoutine,在APC_LEVEL上运行,很恐怖的高级,kernel mode apc!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL,//添NULL,
  IN PKNORMAL_ROUTINE NormalRoutine OPTIONAL,//添入我们的ring3层的Ring3App代码线性地址,其实是user mode 的APC处理Routine,~~~privalige非常吓人~~~
  IN KPROCESSOR_MODE ApcMode OPTIONAL,//1,使用NormRoutine
  IN PVOID NormalContext OPTIONAL//第一个参数~~~我们ring3层代码的,习习
  )

完成APC初始化后,我们要插入我们的APC了
BOOLEAN
KeInsertQueueApc (
  IN PRKAPC Apc,//OurApc
  IN PVOID SystemArgument1,//Ring3App的第二个参数arg2
  IN PVOID SystemArgument2,//Ring3App的第三个参数arg3
  IN KPRIORITY Increment//0
  )

Ring3层代码的样子::   
void Ring3App(ulong arg1,ulong arg2,ulong arg3);

我们在kernel mode 的APC
//我们也可以在这做点什么,不过APC_LEVEL这个高级别东西,我们最好还是不要做什么大动作~
void MyApcRoutine(struct _KAPC *Apc,//Apc结构不说了吧?
              PKNORMAL_ROUTINE norm_routine,//我们的Ring3App地址
              void *context,//arg1
              void *SysArg1,//arg2
              void *SysAr

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号