本套课在线学习视频(网盘地址,保存后即可免费观看):
https://pan.quark.cn/s/6b2453214176
声明:所有发布内容来自网络,仅供用户学习交流测试网速使用,部分影片如有内嵌广告,请勿上当受骗。获取的所有内容请在24小时内删除,禁止非法恶意传播或商业用途。如有侵权,请联系删除,个人微信:sumith,防失联。
好了,都能看到屏幕。各位,那不是接项目的,不是接项目的,就是有一些东西要跑来跑去的。因为我我姐夫开那个学校,开了小学生培训的那个东西的,完了让我给他去搞一点东西去好了,不是,我们来看一下各位咱们的去进到这里边,各位进到这里边,进到这里这个虚拟机里面,我们来打开一下,各位打开一下这个PC hunter。那么在这个PC hunter这里边,我们找到这个驱动模块,各位,这种软件不会用没关系,到时候我再教你们怎么用,是吧?这种软件为什么会不会用呢?你学完内核,你哪你怎么可能不会用,是不是?
好了,各位打开这个驱动模块,各位我们的整个驱动的模块,各位就是。在这个上面各位可以看到全部便利在这个上面,包括我们PC hunter加载的这个驱动也在这个上面。看到吧?各位,包括我们TC handle的加载这个驱动也在这上面。这个是所有的驱动,所有的驱动基本上都在这个上面。这个还需要我分享一下吗?PC行的还需要我分享一下吗?他这个各位他这个我说句实话,他这个便利跟我们这个跟我们常规的这种便利,就是这个PC行的的便利,跟我们这个常规的便利都不是太一样。
董伟是吧?是的,但是这个东西你还是得学一下,也不能说不行,因为我们后面会讲这个另外一种隐藏这种方式,不能基本上在win 10以上都会挂掉的。好,我这个只能在win七下跑,我这个只能在温七下跑。那个API断不了的,不要想着API断了,win十下会蓝屏的,知道吧?就算你把这个驱动断了,它还是会蓝屏。
好了,各位他的我说一下,各位PG它的这个驱动,各位它的这个驱动我讲一下,他的这个便利和我们的便利是不一样的。知道吧?他的这个便利是通过查询模块,通过API来查询模块,他查他还查了目录,什么目录呢?就我们打开这个object的object的这种工具,打开这个工具,打开这个工具,各位在这里边有一个driver能看到吧,有个driver的目录。这个driver的目录里面有所有的这种驱动,它便利了一下。
在这里边还有一应该还有这种file的目录,也就是这个file system对吧?这个目录它也去辨认了一下,它是由这个driver和file sym两个组合起来,一共有多少?所以如果是你我们去便利的话,铁定的情况下是没有他这么多的。也就是我们可能的病例的驱动只有130多,知道吧?他便利的你可以看到有148个。原因是因为它是这个system这个system下面的这种驱动,我们便利的时候并没有去便利这种目录下的,而只是便利了驱动链表。所以就只有这么一点驱动知道吧?
只有这上面的区动这能理解吧?除非你也去便利,你也去把这个便利和这个便利两个加起来,总功能有多大,是这么个意思。对,所以你们去便利的时候发现比这个少一点没有关系,不是你出错了,各位不是你出错了。在三环下还有专门查询驱动的API,有媒体驱动的API对吧?但是你一断电之后就没了,或者是我们用内存加载的方式,它也没了,知道吧?
各位好了,我们现在还要来认识一个结构,这个结构我以之前稍微的讲了一下是吧,但是我们并没有仔细的去看这里面的东西,所以我们断下来先断下来。断下来之后,我们找到这个结构来解析一下各位。在这个结构中它一共各位他一共有这么多一点成员。这上面的大体上的我类似的都介绍过了。各位除了这个东西这个东西,还有这个flag我们没有去看。还有我们是讲去通信的时候是吧?就常规通讯的时候我会讲到。
那么今天我们主要看哪个地方呢?各位我们主要是要看这个,各位这里有一个什么叫做driver sedition的一个东西,有这么一个成员,那么这个成员各位这个成员他是一个类似三环下的PD的列表,这个能理解吗?各位类似三管家那种TB的列表,这个TTB大家知道不?PB在这个PB中,PBPB里边有这么一个东西有这么一个东西。这个东西里面又有我们的模块列表,对吧?这个我相信各位百度一下应该就知道了。因为你都学到内核了,按理说这种东西应该没有问题才对好了,所以但是这个结构他没有给我们显示出来,但是这个结构没有给我们显示出来,所以我们打开这个打开这个,我们把这个结构的复制过来,稍等一下。
哎。老子今天晚上被打了吗?
没有,怎么这么慢呢?
好了,我们点击叉86,注意点击叉86,没有下片。我这个上面都我这上面这个网站里面就放了一就放了这么一个东西,我都没有上别的。
带宽不够大这个带宽不够大,这个只有5,这个只有五兆,这个贷款不够大,知道吧?好了,我们打开这个win 7。
稍等一下。这个着实有点慢了,有可能我很久没关机了,我的电脑起码有半个多月到快一个月没关机了。看看他。而且我好像发现今天这个好像有问题。
我这边有什么东西没加载不上。我来看一下,妈的,这个样式没有。又不给我了不给我权限了。你看到他妈的这些鸡巴不行了,这些鸡吧老是他妈的把这个权限不给我是吧?这国外的有时候他妈老是封是吧?看来在这个服务器上也要装一个VPN才行,对不对?不然的话都不行。
稍等一下好了,在这里面有这么一个结构,L点。
没有,居然没有,各位,居然没有,没有关系。
我们把它复制一下。你记一下,把它复制过来。它的这个是三环的结构,但是三但是凝华我们照样可以用的,用作于它只是它底下有一些成员,可能名字不一样,但是上面是没有问题的。但是这个K这个K我来看一下有没有。像这个,其实你复制过来就够了,知道,因为我们仅仅是需要这上面的这个几个东西,还有这一串是对的,懂我意思吧?就是这么一串的是对的,下面的这一些有可能不一样,懂我意思吧?各位,下面的这一节可能不一样,但是上面这一节到这个位置是对的,所以我们依然可以用它,我们把它复制过来,如果没有找到的话,我们还是要用它一下。
复制过来之后,把这些给去掉。WDK有吗?WDK好像有啊。对,但是达摩的DK我还我们还没有讲到,对吧?我突然之间从这上面蹦一个出来,也是挺神奇的。
好吧,我这个后面我会发的,各位。我们来搜索一下,如果有这个结构,当然用自己的这个最好。这个没有变过各位,因为我win 10的时候也是这么用的,这个没有变过,把它复制过来。这是六十四的。我们到底算啥为止。把它说的稳。
好了,把这个我们去掉了。对。这个还是不行,这些我们留着留在这里,这个32的我们把它去掉。好了,基本上够了,兄弟们基本上我们够了。好,把它我们进行了一个复制过来。首先不要着急的锻炼,各位,因为你放到64下,它还可以用,懂我意思吧?这无所谓,你不取消也可以。
这个不是导出的,不是导出的,懂我意思吧?这个东西不是导出的。如果导出的话,各位如果你是导出的话,那么我们用debug在做调试的时候,这个地方就有对应的它的这个结构。你要我们写的这个驱动面对的系统,你是自己是知道面对的是32位还是64位的,知道吧?除非你要写一个32位、64位兼容的这个东西,那么你可以写两份32和64,那我这里就给他干掉了,这个随你们自己好吧。
好了,我们首先各位首先不要着急的锻炼,先把它给指向改过来,注意先把它的指向改过来。好了让它去去等于它。这个时候我们在这里下个断点来看一下,对。先不用着急,先来观察一下,对吧?代码是在常规位置。
把这个人也去掉。
变成问题。
我编一下。你先我们来看一下他是干嘛的,好吧。
把它拿过来。这边是断顶的一个状态,我复制一下。好,各位,我把它去关掉了,我们加载一下。现在我们就断下了,对吧?各位现在我们就断下了。断下之后我们走一步,F10再走一步,打开这个结构,我们把这个窗口转到这边来这样来看好,继续一下。好。
各位看这个。
对吧?这个是我们的加载的一个链表,加载的这个链表就是整它整整个都是穿起来的。那么这个东西就是我们的模块地址,各位看得到吧?这个是我们的模块地址,这个是我们的入口点。
那么我们再过来观察一下,这是打开这个驱动,注意打开这个区动。在这个驱动结构中,各位在驱动结构中,这个是我们的起始地址。各位看得到吧?是不是一样的?兄弟们,我们的P头是吧?是一样的。我们的入口点。各位看一下是不是一样的,没问题。
好,大小,这个我就不说了,各位。不是有三个吗?对,没用,对吧?它是内核结构不一定有三个,懂我意思吧?它是内核结构不一定有三个,这能理解不?像这几个东西它应该是一个这样的结构,各位,这两个应该是个这样的结构,这个应该是什么异常列表,这里是一个flag。这个没有显示出来,没有关系,这个无所谓。
好了,那么各位观察一下你的名字。对,这是我们驱动的名字。兄弟们,这是我们驱动的名字,这个是我们的短名字。好,这个是它的这个flag,我们只被加载了一次。大家注意这个是我们的整个驱动,就是我们的这个PE文件的校验和以及时间说这个都无所谓了。那么我们现在再来我注意这个是双向循环链表?我昨天大概讲了一下,我们选中第一个,在这里进行一个DP。
好,把这个结构我们同样的复制过来,在这个位置走。好,各位我们往上一看,没有关系,我们再来,这个是上一个节点和下一个节点,这是上一个节点和下一个节点,我们再来。现在我们看到内核了?各位,这是我们的下一个模块,对吧?
是不是各位然后再来看到这个了吧。因为我们刚才加的这个放到最后,所以最后的这个属于什么呢?属于这个头头节点对吧?因为他他放到最后,最后指向了一个头节点,他都是这么干的,所以说我们解析到的有一个空,对擦头发是吧?各位可以看到了没有?这是这也就是说当我们遍历这个链表,就可以把这里面的驱动给它便利出来。这个驱动模块这能理解吗?各位?
好了,我们放过去了。现在各位我们就要开始了。先来便利一些,先不用考虑什么一些其他的操作是吧?我们先来便利一下,是不是?不是?如果要删除我们自己的驱动,很简单,要删除我们自己的驱动。各位我是不是上来通过这个已经找到我们自己的驱动了,我都不需要去便利了,是不是?各位?
我们要便利的话,这个是我们的头,那么我们拿他的这个列表。加载的链表,它的这个下一个,它的下一个,我们也知道,还是它是吧?他的下一个还是他。所以我们得强调一下。好了,我们再来一个。因为我们知道下一个它只相当于是个空了,对吧?所以我们。
再来一个。
一二一,22321它的下一个的下一个用它好了,各位我们现在就next的来个负循环,负。
循环。
累死了。不等于这个PRE我们就开始便利,我们把PRE放到这里来,这个名声音好一点。好,就开始便利。那么便利的话就不等于,所以现在我们就用nice,等于nice的是吧?最终便利到它两个相等之后,我们就结束了。这个没问题,各位。
这个没问题不?对,这是环形的这是无所谓的。各位你不管你从头部便利,从尾部遍历都是一样的。反正最终它是一个圈,知道吧?这个还需要画图吗?昨天我都给你们画了这个手拉手。
打开这个是吧?
打开这个我当前的节点在这。假设我这个是PRE,假如说我这个是nice的,各位对不对?各位,我每次走啊走,下一个拿到的是他是吧?我再下一个拿到的是他,最后我又拿到他了。各位可以看到?假设我这个是nice的。
假设我这个是nice的?我每次这么拿,又拿到他了,对不对?这个应该没问题的。昨天让你们做了这个东西,为什么还有问题呢?这个讲和没讲没有区别,我发现。我操。这什么?我打开太多这样的窗口了,这是有毛病吗?
好了,各位。我现在我就是一个便利是吧?便利之后干什么呢?把这个名字我们打印一下,对不对?好了,这个是DD.
我要加个前线。
Driver name.
百分号WC.
是不是?我们再把这个名字给它打印出来。好吧,这个是个尤尼扣的,所以我们取地址。这个我到时候会发的,我们现在还没有讲到这个东西,我们到时候会发的,这个最下面。
我们的这里面有调试,所以我们给它结束掉。把这一个我们继续复制过来。我们再来运行一下走走。我忘记回忘记回车换行了,各位我们放过去,我忘记回车换行了,这样看起来我们看不到,看起来别扭是吧?我让他换一换一下好了。
继续走。各位可以看到我们这么一来,就把所有的驱动基本上便利出来了。是不是各位跑了一圈,对,跑了一圈。好,还有说要加个数量是吧?你加个数量也无所谓,是吧?这个都都没有什么,我们在这个地方根号D对吧?加加。怎么了?
前罪,这个没有什么,你也可以这么讲。这个没有什么意思,这个的意思是什么呢?为什么还有老是有这种问题,这种问题我就觉得有点悬乎了,各位。不是逼格,不是逼格,在win十里面这个东西不停的打印的,跟你说在win十里面这个日志打印的很厉害的。各位,所以哪怕你是不在调试下,这个日志也是刷的很厉害的。所以怎么办呢?在这里有个过滤器,我们在这里选择把我们的前缀给它输入上来。输入上来之后,我们直接在这里就可以变便利的时候,就只会打,只会显示我们自己过滤的日志,知道吧?
好了,各位可以看到了吧?149个是吧?那么对比一下这边我们刷一下。他有150个知道吧?为什么有150个呢?他比我们好像多了一个,对吧?这个无所谓。这没问题,各位这个就便利出来了。
这便利完之后,各位因为我们是从零开始的,它是从一开始的,所以我们也没有做在这个64位下,注意在64位下,我们确实是很难跟他是一样的。除非我们做了两个,一个编辑文件,一个编辑这个,不然的话很难跟他一样。在三三位下,我们好像跟他长得一样,知道吧?好了,各位,我们现在如果想锻炼某一个区动,对不对?如果现在想锻炼某一个驱动,那么就很好办了。我们找到对比这个名字就可以找到对应的这个驱动的这个节点,给它摘除掉对吧?
还有一个说便利文件,在内核中一般的情况下你是不会去扫便利扫描它所有的文件的。就算你便利扫描它所有的文件,本质上来说你和你你也是可瑞的sale。知道吗?各位?
这个也是一样的,你在三环下你也是调create file,去打开这个文件夹,打开怎么去判断?是的,各位在驱动里面它还是一样的,知道吧?它可能它的不一样的是什么呢?不一样的是什么呢?就是参数特别的多,因为它越越偏偏向于底层,知道吧?各位越偏向于底层,所以它的参数特别的多,不像你在三环给你封装了很多,然后可能只有两三个参数是吧?但是在驱动里面的这个参数确实有点多,但是你2F之一就可以了,2F1就可以了。
查文档他的这个跟三方的那个是长得差不多的好了。我们现在只是便利。那么我们假设想把这个PC hunter给它断下来,就是把它给隐藏掉。那么PC hand是这么一个名字,各位可以看到。
就这个PC.
安特3AQ.
是吧,对不对?各位,他说断这个会难平,对吧?难不难?没关系是吧。不会,你肯定是忽悠我。好了,各位,我们现在找到这个就是要来判断这个名字了。那它的这个名字,我们本质上就不要用这个了,对吧?
在这个上面我们来定一个unit code,对吧?我们之前讲过60扣的,直径,这个转弯,对了。这个怎么会难平呢?是吧?好了,我们再来把它初始化一下。
好,那么现在我们就干什么呢?来compare是吧?用力扣的来比较这两个手套,我们把它给藏进来,然后这边也是一样的。把它装进来。当然了前提是啊各位一定要注意这个问题。在这个位置我们在base如果如果不等于零的情况下,也就是这里面有数据,有名字你有名字你才进行判断,没名字你就不要判断了,是不是各位?我们这里写个处。
等于等于零等于等于零就代表我们比对成功了。这个数是狐狸大小姐,现在我们找到的是找到了这个了,找到这个之后怎么办呢?什么曲子,取地址,为什么加取地址?我之前没讲过吗?这个东西他要你取地址。他要求你是一个自我创造的。
我操。换人了,换了一个人。好了,我们我们把这一个闯进来,本质上它就是它,所以我们把它进去。好,各位当我们移除完之后就直接break了,当我们移除完就直接break了,是不是?找到之后,我们打印一下,不打不在这里打印。我们找到之后,进行一个打印,移除完之后就break。他肯定换换了一个人了。
这么奇怪了,怎么这么卡呢?不是我要把它把它结束掉才能编译成功,不然的话,我们编译不成功了。走到。我们跑一下,当然这个过程有点长,所以我们在这里面的下一个断点。好了,找到了是吧?找到了之后,我们进行一个锻炼,锻炼之后,我们过来。放过去之后,在这里面。稍等,这个感觉我的我的这里有点卡。稍等一下。
跟这个VS一样的。不可能死刑还了,怎么还能死循环了,我跳出去了,知道吧?
凉凉了,我操凉凉了是吧?
南坪应该不会。
前后节点没接上,接上的接上的这个函数内部会给我们接上的,看到吧?不需要你去接,是不是?各位这需要我们去接吗?不需要,他内部会给我们接上的,看到没有?
不应该。没有,不是这个循环死掉了,这个奇怪了,怎么卡死了,不应该,他妈的。没了。
他妈狗日的。锻炼不影响,这种是不影响。我来想一下,先重启一下各位。
这个锻炼只能锻炼驱动,还是EXE,我们现在在写驱动。
感觉换了一个人了感觉换了一个人了。好了,不是,这不是他自身的,我操,太恐怖了,我操。
我这么跟你说,PB他也断不了,也开始咬。PPB也装不了EXE,说实话应该可以找到。
我再来一次。
我们把它放回去。
看这个样子又卡死了,他妈的是吧,他妈又卡死了,操你妈的。好了,我们断个点,对,断个点。我看个鸡巴是吧?
找到这个找到它的进程,注意找到它的进程。我们free,我们进行了一个这样的,就是不写这个杠铃了,直接把地址回调在这里,把它所有的线程给它打印出来。我们来看一下它卡死在哪里了,稍等一下。这个不是卡死的状态,因为它一直在切换线程,我们往上走这个都是在切换线程。
再往上。从这个上面来看,我们好像是卡死在这个位置。他还检测了有没有人调试,他妈你检测个毛,是吧,是不是各位?
对不对?各位,这上面是他他他在这里检测是吧?我们往上看一看没有了,就这个线程应该就是这个线程把我们卡死。我们来看一下。
这个主线程我也不能杀他,是不是各位他妈的这个主县城我也不能杀他,因为他是第一个县城。各位第一个县城我们杀不死的,一杀了他就没了。
把它点5.
我们来看一下。
没有吊扣,这个有点奇怪。
稍等我看一下,没有吊铐,被时间打断了。我们是卡死在这个地方了。
我们是卡死在7005这个地方了,当然这个还不一定我先放过去,因为这个地方是可以从这里看到。我们刚才在这里把这把他的这个地址输出来了,输出来之后,这里不是他铐进去的,看到吧?不是他铐进去的,还是那时钟中断下来了,把我们的debug也不是他来检测的。刚才这个是看错,不是他来检测。
这个debug是在这个时间函数里面,但是是它的这个内核线程。然后他在这个函数里面,如果是他调用的,注意如果是他调用的话,他这里面我们把他的地址这么一说,减5。因为他调call的话,调自己的call或者调别人的call至少是5到7个字节1819是吧?所以你可以看到,我们当我们减5的时候,这个地方并没有并不是说掉了call,因为没有看到1819,那么减六看一下也没有调,也没有说在这里面调,靠这个指定是对的。所以也就是在这一行的时候,切换到时间中断里面去了。
但是我们确实卡死在这个位置,他检测了自身,没有检测到自没有自己,他就把自己卡死了。在这里面有个死循环,各位。这他妈的操蛋。
好了,换一个,我重启一下。因为这个工具不能用,我们也看不到效果是吧?可能啊可能,别的可以,我以前是断过的,以前在64位下调DF的时候,因为DD叉F它有一个问题,他会检测这种PC hunter,你必须要把它锻炼下是吧?它不是它的管调试。
内核线程卡住的时候,注意内核线程卡住的时候,他是你这么结束你是没用的。各位还有一个说新闻说我不搞DNA,我现在不怎么搞了,因为现在不用去搞他的调试了,搞他调试干什么都没用是吧?就发现他的检测其实也没有太大的意义,知道吧?也不是不是。现在版本的D叉F他不检测这个P了,他32位的时候,以前是检测的。你开这个PC知道吧?你开这个PCM它就蓝屏或者直接挂了,知道吧?
懂我意思吧?
好吧,到时候你们自己去测试是吧?你们自己去测试这个保护你,看我带你们做读写的能不能过,好吧?好了,现在我们换一个,换成哪一个呢?兄弟们。换成哪一个?当然了,这里面有一些不能乱断的,断断了之后,有一些异常是捕获不到的。HTTP是吧?装这个是吧,HTTP是吧?好,我把它拿过来,他还是可以检测得到的。
好的,还有说,锻炼有什么用?锻炼有什么用呢?实际上就是隐藏隐藏自身。因为现在的都很厉害,不用说现在的这些保护都很厉害,知道吧?他们会专门的去检测你检测你这一些驱动有没有被加载,找到你的驱动,再再把你文件上传。你可能就是十来天左右,你就发现了,你就乱搞了,对不对?他怎么知道你是恶意驱动?
第一个你的签名就有问题,你的签通常你的签名是什么呢?是过期的。第二个,一般的正常驱动是不加VNP的,哪怕360很多驱动它都不加VNP,他自己的都不加P对吧?那你你不加VMP好也可以是吧,但是你不加VMP你不被人家破解了吗?那你写一个驱动白写了是吧,对不对?各位。
我被你们问住了,还有问我问P4什么的。我文件我我问文件名哪里改了,什么什么文件名哪里改了?不是你他你这个你这个地方,你无论你怎么改,你的特征都没有用的。对你需要扣的价格还是可以的,知道吧?你需要扣的价格还是可以的。
好了,各位,在这里各位可以看到,你发现了他还是没有隐藏掉,对不对?各位。对吧?他还是能找到,对不对?本质上来说,有有个东西没有清空,各位有个东西没有清空,所以我们要怎么样呢?
要找到这个驱动,所以要找到这个驱动,知道吧?所以我们在这里只能找到它的节点,我们没法反向的去找到它的驱动对象。这能理解吧?我们没法反向的找到它的驱动对象,不是那个看的,我们得找到这个驱动对象才行。这个结构你你在这个结构你能反向找到它的驱动对象吗?各位你在你用这个结构能反向的找到它的驱动对象没有?算偏移。
好了,又有问题来了,这个哥们说算偏移,我他妈怎么算呢?我这怎么算呢?你不开玩笑吗?这怎么。
算呢?
你怎么算呢?注意,它这个地方是个指针,注意这个地方是个指针。它是你是获取指针里面的值,你怎么给我算偏移,你又不是说获取这个地址,对吧?所以说我。
怎么保存,保存谁的?怎么保存?没有办法。但是各位,windows没这么傻逼是吧?他提供了一个东西,注意他提供了一个东西叫什么呢?有一个叫OB之类的函数。但是好像这个函数没有导出,各位,这个函数是没有导出的。所以我们找到我们之前拿到的这个文件。不是你拿那个都没有用,知道吧?
要么你就搜特征,通过搜索内核中所有的特征,把它导把它找出来。当然了,没不可能说这么干嘛,对不对?所以我们找到内核,对,根据文根据这个驱动名字来找。但是这个函数它是一个导出函数,但是未文档化的各位是未文档化的,所以我们在这里来找一下。
在各位就是这个函数这个函数它是一个导出函数,但是未文档化知道吧?对。所以,我们接着打开这个,把这个声明头文件给他拷过来。搜索一下。好了,把这一部分,我们给它拿过来。我们自己给它文档化一下,知道吧?不然的话我们用不了。
我用我我肯定知道用多了就知道了。而且各位我没有以前的时候最近几个月利的少了。以前的时候我每天都会立一两个函数是吧?在这里我经常会把这个导出函数看一看,你就会发现,我这里面导出的有,但是这里面没有。你就明白了是吧?这能理解吧。
各位如果没有文档那就怎么办呢?你怎么办呢?没有文档怎么办呢?
没有文档你就只能干一件事情,各位你就只能干一件事情,F51下或者不F在这个位置,去分析它的参数,知道吧?兄弟们去分析它的参数,然后有多少个是什么?如果没有文档的话,那你就你就只能这么分析了。再看一下它的这个一共有多少个参数?大概是什么?一个一个的把它搞出来,搞出来之后再来调用知道吗?
对,是他提供的,他提供的是这个公开的,所以他提供的是这种公开的文档,不是私有符号。好了,我们给它传进来,传进来。传进来之后,把这个查哪一个名字呢?这个名字注意是这个名字,启动的名字,这个属性属性写零就可以了,我们我不需要它有什么属性,然后各位我们再来看一下,这个地方是选项,所以写两个no,也可以知道吧。
或者我们给他一个所有权限,文件的所有权限,在这里面写两个零,然后在这个位置它要求有个驱动对象,注意,有一些找不到的,有一些温室上新新增的函数你是看不到的,懂我意思吧?或者win 7 64位里面有一些函数,或者win 3 win 732里面有些函数你是看不到的。好了,我们来写个闹。在这个位置我们是以内核模式的内核模式去查找,也没有没没有上下文,这一个是它的驱动对象。
区那个是描述你自身的驱动对象知道吗?不是描述别人的驱动对象知道吗?好了,我们获取到获取他一下。在这个位置,判断一下我们是否拿到了。好了,如果拿到了之后,反正拿没拿到,我们都要锻炼是吧?所以我们先给它断一下。
好。
拿到之后,我们紧接着就用这个干嘛呢?把这些初始化函数给它干掉,知道吧?把这个三省。给他。
干掉知道吧?
好了,别的暂时不用干了是吧?为啥要干掉,不干掉不隐藏了。
有些哥们问了,为什么不隐藏呢?他的这个便利跟你们跟我们这个便利不一样的。
知道吧?
因他这个便利不是搜索特征的。64 win 10还能不能?不能这么搞了,不能这么搞六四的我们还是得用内存加载的方式好了,我们把它能结束掉。当然了这个我们得换一个?比如说我们断这个KDD8,把它给断了,把这个给断了好吧,把这个断了KD com。
把这个给断了,因为我们不看一下,应该问题不大。对,之前在双击调试里面,你必须给它干掉。在双击调试里面必须要锻炼,不锻炼的话双击不了,就是这种游戏,所以这个断他是初步。好了,我们在这个位置进行了一个。放心,我操我还没到这儿,是吧?看来这个地方是要写的,我们还是要给他一个驱动对象,驱动对象的类型,这个类型后面我还会介绍。没有写他,所以他蓝屏了。也不是不是有一些游戏你是没法双击去双击调试的,各位,游戏游戏你是没法双击调试的,知道吗?各位。
麻烦改一下。
对,就是那种游戏FPS游戏,它是显卡的。看你要干什么看你要干什么,不一定说完全需要调试的。好了,这个东西我们还要来找一个叫做IO什么driver,不是,我忘了是不是这个了,有个这样的类型,我们把它拿过来。在这个是一个导出类型,把它拿过来,这个就是也是一样的,各位打住,把它们拷过来。
他这个导出还是有问题的。
注意,真正的这种对象导出的时候,都它的这个内核给我们导出的时候,都是这种二级指针。为什么是二级指针呢?我们来看一下,比如说我们可以看到这种PS进程的类型,就是进程对象类型。那么你我们点进去它,它都是这么干的,看到了吧?各位他都是这么干的,所以这种对象类型它本质上也是这么干的。他都是给你二级指针,但是我们可以看到,在这个WDK上是有坑的。各位你不能把它瞎过来,瞎先复制一下知道吧?他是个二级职。
双击真调是可以,我操我把这个关双击帧调试是可以的。但是很多时候其实你是不需要双击来调,而且你做在做驱动的时候你在做驱动的时候无论你是做注入也好,或者是做这个读写也好,你调它干什么呢?就没有必要调它,是吧,绕就行了。
因为你调你读个数据,他怎么检测你的,你能调试到吗?你调试不了的。你就读,你就在那里读,读一个数据,你想读一下就断点吗?不可能的,懂我意思吧?能检测到,但是我们得绕过它,你做反截图调反截图的这种类似三环调试器,不是内核调试器,懂我意思吧?那是三环调试器,不是内核调试器。所以你不用想了这么多,对吧?
你怎么知道他拦截了哪些操作呢?首先你的第一步,你就是你的第一步干啥呢?你就是要写一些功能,找到数据写一些功能,或者到人家那里白嫖一点数据也可以。
你把这个功能先写上,你不写出这个功能之后,你怎么来缩小范围呢?你范围都说不小,你难道把整个把它整个64位的内存全部调一遍吗?不可能的,他妈的他他256G你给我调,是不是?所以你会针对你的功能去调,是不是?你不可能说全部给他全部搞一遍,是不是?等你真正的全盘搞完了之后,你会发现操你妈的这个游戏都黄了。
走。
好了。
我们找到了,找到之后调用一下。各位看一下,这个地方报了一个错误,各位报了个错误,这个错误是什么呢?3D所以我们要来检测一下自己的错误。
对着这一个F12跟进去,把这个贴过来。贴过来之后,他说什么呢?对象路径有问题,他说我们的对象路径有问题,也就是我们的这个有点问题。那怎么看?我们在这里不是有一个返回值,对吧?有个返回值,我们F12跟进去知道吧?
F12跟进去,跟进去之后,把我们错误码的贴过来,贴过来知道吧?刚才问你爸爸怎么看的,我在这里看的,我不是把它打印出来了吗?是不是?
好了,那么也就是我们的有问题,这个问题在哪呢?实际上你不能通过这种名字找的,这种名字是找不着的,它们是放在哪个目录的呢?是放在驱动目录下的,知道吧?各位是放在driver目录下的,懂我意思吧?所以我们找不到,只是找查找驱动的,我们是找不到的。我们是要规定我们要在哪个驱动里面的去找。
但是我们又出来一个问题。我们又出来一个问题,是吧?把把这个HTP给断了断了之后,我们我们再找一个,比如说找找个这样的这个看起来好像没有驱动对象,这个是没有驱动对象的,我们找个有驱动对象的,就比如说断了NNDIS,这个API是吧?
没驱动对象的断了又怎么样,就你自己去试一下,对吧,你自己去试一下。
好,我们把它贴过来。还要看一下,刚才他说的好,因为可能我也忘了,这个确实没有没有S,注意,好像是没有S的。我们再过来一下。
他妈的我们不能用这个名字,妈的,我们小的时候不能用这个名字,我操是吧?算了,重启一下。我们找的时候不能用这个名字,找的时候是这个名字,对吧?来给他换一个。我小的时候是这个名字。我们找我们去拿这个驱动的时候,是这个名字,知道吧?
它内部是不需要我们去做大小写的,懂我意思吧?他是分他是不区分大小写的,内部通过这个名字找的话。
这一共才几行代码,没有几行代码。也就是说它的驱动你要通过他的名字找的话,各位这个函数是要指定一个目录的,知道吧?要指定一个目录。
的这能理解吧?
各位没有这个目录你是找不着的。刚才我们看到了,没有这个目录你是找不到的,他一定要有这个目录。所以我们对比的时候是通过这个来对比的,是吧?对比的时候是通过这个来对比的。明我们去找这个驱动对象的时候,要这么来找。
找到他之后,进行一个操作,然后我们把它放在这里面去,放在这个上面。这样的话免得我们等会误操作的时候,锻炼的时候又没有删掉,这个就很烦。对。我们再来打开它,找到HTTP。
在这,他有一个。
他妈这个鬼。好了,我们走一步,FF10走一步,再走一步,再走一步。好,现在我们发现了各位还是没找着是吧?他报了一个34,各位可以看到,现在的错误不一样了。所以我们来看一下三四是什么。我们继续把它贴过来。贴过来之后,他说我们的名字没有找到,名字没有找到,有可能就是他说的这个要加个杠S所以我们把这个贴过来,把这个目录贴过来,放在这里面来看一下,看一下这里面他们是怎么找的,有能不能搜到?好。
搜不到是吧?
好,各位,这个好像也不是,我操,我怎么会搜不到?我加了这个东西,应该是加了这个点SYS,不是,应该是加了点SYS的问题。
因为这个太久了,我也忘了他妈的要不要加这种做个串,我自己都是封装好的是吧,懒得看了这种。过来,再来找一次是吧?依然进来了,跟进去。好,现在我们这个确实是不能加后缀SYS,他就找这个驱动名字。各位找到这个驱动名字,我们给他锻炼。锻炼之后,把这两几个给它擦掉。擦掉之后,我们放过去,放过去之后,我们来刷新一下,来看一下,没了,兄弟们。
对吧?这个没了。这样就全部隐藏掉了。各位你想检测它的话也不是没有办法。当然了这个我是不教你们怎么检测的,是吧?自己去想办法怎么检测。其实有一个法子的,各位,其实有个法子,就是我我并没有抹干净,各位我并没有抹干净。
为什么说没有抹干净呢?像有一些哥们,他有一些东西,他是暴力搜索的,他是把这个东西也给他干掉了,对吧?你为什么要干掉这个tape呢?
干掉这个type的好处是什么呢?就是当人家通过这种暴力搜索的时候,因为他的这个态度和和大size大小,所以time type和size的大小是固定的。所以这个可以用作特征码来搜索,知道吗?各位。懂我意思吧?还有个方法,当然了这个前提就是你便利这个驱动目录,知道吧?来便利这个目录,通过便利目录的方式把这个全部便利出来。懂我意思吧?
因为我们并没有抹掉名字这些东西,你也有些地方是不能听的,各位你不能瞎听,知道吧?有些地方是不能瞎听的。那么现在还有个问题,还有个问题就是我要隐藏自己,那怎么办呢?兄弟们,我要隐藏自己怎么办呢?我我我也这么隐藏,可不可以?
可以,好,我们的驱动叫这个名字,应该。我们接着来。
更简单。这个哥们说的太简单了是吧?那怎么隐藏自己更简单呢?走。夸难听。
是吧?为什么拿呢?为啥拿呢?注意,这隐藏自己有一个致命的问题,各位什么问题呢?就是我们在入口点隐藏自己。我们我们想一下各位在做PE加载的时候,就是我们正常一个加载在三环加载bell的时候,我们三环在加载bell的时候,我们去调用入口点。调用完之后,有可能还会拿着这个入拿着这个入口点或者劈头去做一些事情。是不是就是我们调用完入口点之后,修复好之后,可能在下面还会做一些拿着他的这个image被image base或者是一些它的这个结构做一些事情。
当我我把自己断掉的时候,他就找不到自己了,找不到自己的就难了。所以各位我要隐藏自己的话,我是不可以这么隐藏的,知道吧?还是不可以这么隐藏的那怎么怎么能隐藏呢?对,我们得给把这个时机,各位把时机知道,给弄一下,能理解吧?
我们让他调用完入口点之后,对不对?我们再去把自己给抹掉,可以吧?兄弟们。好了,各位,我把这个给他补一下,我把这个给他补一下。这个叫做什么呢?把。
叫做什么?我来想一下,驱动隐藏是吧?徐州隐藏,我们要求他把这个名字传过来。
这个叫12个内容是吧?还有。当然了,我们写的比写的好一点,我们可以自己来组装这个是吧?但是我就不组装了,这个是就不需要没有我们就我就自己不组装了。对,就是隐藏的太快了,你可以这么理解。
我们首我们这个便利就不需要再便利了,知道吧?其实我们知道这么早进早的话,我们还需要便利吗?各位?我们知道这么早的话还需要便利吗?就不需要了。只要传这个名字就可以了是吧?我们就拿到他的指针了。把它们复制一个复制一个。
这么复制一个。好,各位,我们我们就已经拿到了。拿到之后,我们再取到它什么呢?把这个取出来,把这个取出来。
当然了,我们的这一个就要进行了复制。
好,各位。最后我们。还要做一个事情,因为我们把驱动的引用给它卸载就好。
因为我们通过这种去打开一下,打开一下之后我们的引用技术就会加1。后面我还会讲这个引用技术。加一之后,我们必须要把它释放掉。不然的话假设有你自己修复之后,这里面占了一个引用,所以会造成泄露。好,对,后面我会跟你们讲这个东西的,我来看一下。这样我们就隐藏完了对吧?
这样我们就隐藏完了,那么我们在这个地方来一个sleep是吧?有些哥们说妈哥们来个sleep可以吗?不可以,我们在内核中是没有这样的sleep的,能理解吧?兄弟们在内核中是没有这样的Steve的,懂我意思吧?也没有。好,我们把这一整体的给它注释掉,这是有bug的是吧?有bug的。
好了,我们怎么办呢?手在这里,所以我之前教了你们一招是吧?好,我们启动一个线程。
好了,各位,没没这么low是吧?哪来这么low,你们太搞笑了。好了,我们把函数名字放在过来翻过来,把函数名字翻过来,我们再把这一个我们要隐藏的对象它贴过来,把它传过去,知道吧?
好,各位现在我们再来判断一下。不是我要死平方干啥呢?我就怎么感觉他妈的现在你们一个一个的,好像换了一个人干的,是吧?好了,我们把这个定理关掉。
OK在这里面,我们是没有这个slip的,它这个驱动里面它是这么来定时的。它有个函数,这个函数把这个线程进行了一个休眠,知道吧?把这个线程进行一个休眠,那就用它它的话要求要求我们是以什么模式?我们用内核模式,就是在内核中等待。有内核模式就有用户模式,知道吧?还有用户的等待和内核的等待,我们用内核等待,内核等待之后在这里我们进行了一个force,这个force是什么意思?各位就是没有到时间点,注意第三个没有用,没有到时间点,那么我就不起来,你也不可以给我唤醒,知道吧?不能给我唤醒,我就不起来。
好,那还有一个参数,这个参数让我们写时间。对,这个时间它是它这个时间是我忘了是纳秒还是微秒了。注意,所以他这个时间你应该是这么写。这是一万,注意-1万,注意他的是-1万,这个就是他的这个时间单位。
我们乘以1000,这个乘以1000就是一秒,乘以1000就是一毫秒,知道吧?乘以1000就是一毫秒,这能理解吧?各位为什么加个负数?负数代表相对时间,正数代表绝对时间。懂我意思吧?相对一秒了之后,我们就让他跑一下,相对这个我们能让它在10毫秒,应该是10毫秒差不多了。不保险买个20毫秒,对吧?把他们给装进去,休眠20毫秒,我们进行一个锻炼。
在锻炼的这个地方,我们把把这个给他打印一下,来证明了我们执行了一下是吧,对吧?
什么是随机的吗?什么我没我我我就没有明白什么是随机的。
不是随机的。不是随机的。这是相对当前时间,相对当前时间怎么会是随机的?我就没明白。
对,就是这么个意思。因为我们在在这个入口点这里是不能这么干的。在这个入口点这么干,我们我们的他后面还要去还要做一些事情,要拿着这个节点做一些事情。所以我们给他得等他做完之后,再再给它释放掉。
好了,现在各位我们再来刷一下,我们的是dty杠4是吧?把这个名字排下去。好像没有反应,各位看得到吧?我们来看一下,找到了没有?找到了是吧?可能刚才太快了是吧,我们再来。
没了。现在没了呗,各位20毫秒还是有点长的,是吧?是不是?各位现在已经隐藏了吧?嗯对,20毫秒还是有点长的,应该十毫秒左右就差不多了,是不是?
是的,各位20毫秒还是还是有点长的,不是20毫秒,各位,这他妈的是20秒,是吧?对我操。这是二十多秒,我操。应该我们等个5秒差不多了,这个秒搞错了,应该等个5秒差不多了,你知道吧?这样的话我们隐藏的时候就不会有问题了,知道吧?
好,现在我们再来一个看,再来测试一下PC hunter,我们再来一下,把这个PCR的再来干一次。对,这是嘎子的直播间。这个音译的是啥意思?阴历的其实就是一个初始化函数,各位,它是是本质上是一个初始化函数,就是我们的入口点。
我再来一下。来看一下这个驱动对象对不对,应该问题不大。
我编译了没有?
再来一下。
我自己把自己给删了,注意。编译了,成功了,我自己把自己给删了,这个地方我们不能用这个名字了。
等一下。
他妈的还是卡死了,所以这个屌毛还是卡死了。他就他真正的去访问了这个是啊所以隐藏他的方法,我们又进了一步,所以又进了一步,他肯定是访问了这个。毫无疑问这个地方可以看到我们对着它按一下R,按一下R之后,这个ES是0,对不对?兄弟们,所以我们应该怎么办呢?
我们要来个移花接木,对吧?把它转移到其他地方去。
我操。
这个毫无疑问,各位刚才我们隐藏的时候只是卡死,对吧?刚才我们隐藏的时候注意,只是卡死。所以但是我们把这个地方给它置零之后,他突然之间就难停了,那么也就意味着他实实在在的去拿了这个东西。对了,各位。
所以我们应该怎么做呢?各位。A.
给他下一个,让他拿这一个。注意在我们没有锻炼之前给他填充一下,知道吧?在没有锻炼之前,我们把这个给他,让他去获取下一个,不要在我们这里搞事了。我们再来看一下。也就是不给他吃闹,给他一个假的,这能理解,各位。
我没有下断点,好了,既然没有下断点,我们接着过来。
我们再过来一下。好了,进行一下。好,我们切过来。哎。没死了,各位是吧?但是发现操他自己都隐藏不了是吧?对。不对,对吧?各位。没有标红,他还在这。对不对?他没了他没了,对吧?兄弟们,两个标红不用管了,他没了,好使了,是吧。
我不是隐藏他我不是隐藏他,各位,我是隐藏他了。是不是刚才我们我们隐藏的时候说蓝屏的,或者是或者是卡死了。现在我给他来了个移花接木一下,让他们去提交到别的地方去查。好,这个时候你就发现了我们突然之间好了,是不是各位没问题了?
有可能是个假的,有可能比较红的,就是这个东西。好了,各位,这个难题我们就解决了是吧?隐隐隐藏别的,也隐藏PC端的人也不难听了是吧?所以各位如果在调试的时候,用这个去查别人的钩子的时候,发现发现了这个叫什么呢?就是游戏检测这个PCR的工具,你就把它给干掉,哪怕win十也是一样的,知道吧?哪怕win十也是一样的,那为什么要给他干掉呢?对吧?
为什么不怕死呢?因为我就本来就是调试一下,可能这个PC的时间有点长的,跟你说可能2个小时后才能会蓝屏,所以这无所谓,能给吗?各位?南坪他是有时间的,他不是立马拿,他可能是1个小时后,可能是2个小时后。当然你运气不好了,五分钟就拿了,被撞上了是吧?所以也不懂我意思不?
可以干掉,怎么不能干掉?只是PG它有个问题,它不是特别的准,知道吧?不是特别的准三个,我在内河下,我可以教你们一种方式干掉他,知道吧?在那个下午教你们一种方式,不要去算他的解密。这个解密有什么用呢?PG解解来解去有什么意义?说我不解密。
PG是什么?PG就是这个内核保护,知道吧?是内核的一个保护,不用VT,不用VT,就是内核的一个保护。这种内核保护它有个致命的,就是你只要改动内核,在这个64位下,也就是win 7之后,你只要改改里面这个内核里面的一些东西,然后就会蓝屏,知道吧。
欢 迎 关 注
更多精彩内容关注下方公众号:逆向有你
个人微信:sumith
每日自动更新各类学习教程及工具下载合集
https://pan.quark.cn/s/874c74e8040e
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...