您的位置首页生活百科

街头篮球HackShield内存

街头篮球HackShield内存

的有关信息介绍如下:

街头篮球HackShield内存

简单的,直观的看hs钩了ntwriteprocessmemoryntreadprocessmemoryntopenprocess3个操作进程内存的函数.他们在ring3(用户态,就是一般程序员制作的程序运行的环境)的对应api是writeprocessmemory<-zwwriteprocessmemoryfreadprocessmemory<-zwreadprocessmemoryopenprocess<-zwopenprocess然后在说下内存修改流程zwopenprocess获得句柄(这里可以理解成一个访问许可值,有了他就可以访问他代表的对象)然后就可以使用writeprocessmemoryreadprocessmemory写/读内存了。ok,这里我们看到了,hs在最上层钩住了这个函数(其实准确的说是函数的实际工作体)。那怎么做才可以操作内存呢?这里hs使用的是在ssdt 里对函数做的hook(钩子)ssdt是一张表,他保存了函数的入口地址,和函数的序号(通过修改他保存的函数入口地址就可以实现hook了,要查看这个表可以下载hips软件[小小做个广告,可以下载葡萄守护者查看])而这张表是在从用户态向内核态切换时才有效的,也就是说你在用户态下调用被hook的函数就被会被截获,导致调用失败。 哦?这里出现了一个问题,如果我是从内核态直接调用呢?哈哈,hs并没有做进一步的hook(比如inline),所以你可以放心的使用了而fs1.3没有写驱动是如何做到的呢?这里有2种方法1、通过工作区\\Device\\PhysicalMemory操作内存2、windows里存在一个可以从用户态直接操作内核态内存的函数->SystemDebugControl用法自己baidu,我就不说了,这里只说原理.恩,好了,再说说ce是怎么做的,他用了驱动,但是却没有调用任何以上列出的3个函数中的任何一个,这么做就可以实现即便是保护程序进一步对那3个函数做了hook也是没效果的。而实现起来其实我下面说起来你就会发现,非常简单有效,而且比调用系统函数效率要高很多,毕竟要少走个nt的acl环节,呵呵。首先KeAttachProcess,切换到目标进程环境这里就可以想使用自己进程内内存那样使用目标进程啦,想干什么就干什么,呵呵最后KeDetachProcess,把进程环境切换回来要突破内存保护,方法大体如此