本套课在线学习视频(网盘地址,保存后即可免费观看):
https://pan.quark.cn/s/06be6ae02f63
声明:所有发布内容来自网络,仅供用户学习交流测试网速使用,部分影片如有内嵌广告,请勿上当受骗。获取的所有内容请在24小时内删除,禁止非法恶意传播或商业用途。如有侵权,请联系删除,个人微信:sumith,防失联。
有些驱动找不到是吧?有些驱动找不到了,我们也要注意,也要往这个里面来一起来看一下。先把这几个问题解决了。稍等一下。
今天开机有点慢,不知道为什么。好了,我们还是打开这个,我们先来看一下断电的问题。现在我这个是断的这个PC hunter是吧?我的虚拟机为什么这么快呢?犹豫各位各位看一下,在这位置我发现一个秘密。各位就是你们那边可能是选中了一个什么呢?哎,有选择的启动,我发现这个他妈的特别慢,我就把它调成了正常启动,我操就快了。懂我意思吧?
好了,我们现在打开它,来现在打开它,然后我们再重新编译一个。
我们把它复制进来先。好,我们来运行一下。各位,我已经隐藏了,我们来看一下,我们再来刷一下来多刷一下。现在我们可以看到已经隐藏了,我们切到进程去。
好在我这边好像并没有发现这种问题,对吧?所以矿泉水它用的是叉P,至于叉P里面,它是不是做了一些额外的操作,这个我确实说不准。因为我的我现在的虚拟机里面装不了叉P了。自从二期之后自从二期之后,我就装不了叉P了,不知道为就是用那个F一下了个段,不知道为什么把这个序整个VMVR不知道整成什么样了,反正一桩虚拟桩,这个叉P就卡死。不调试还可以,调试就百分百卡死。所以我就再也没有用叉P了,还是改,而且改成win 7也是一样的,对吧?所以矿泉水这个可能你只能具体的去看一下,稍微看一下。
因为这个没有发生,我这边没有发生这个事件。他不是对重装系统都不行,没改硬件,重装系统都不行,不知道为什么好了。还有一个就是说为什么有些有一些他锻炼不了?第一个各位注意观察一下,我们把这个驱动对象给它点一下,然后进行一个排序。像这一种很多的它是没有驱动对象的。看到了吧?没有驱动对象的话,这个地方我们就找不到这个驱动。为什么没有?你这个问题问的好啊,有驱动就一定有驱动对象吗?
各位比如说各位这个内核模块是第一个被加载起来的,这个地方不一定会有驱动对象,这个很好理解。但是其他模块为什么没有呢?各位像这种deal格式的是百分百没有的,因为del格式的,del格式的它不是它这个驱动,它不是说你直接在用这种工具就能加载上的,它是加载不上的,知道吧?用这种工具是加载不上的,它必须是通过一个主驱动,也就是我们这种驱动,去调用这种调,然后同时自动给你加载这个load library,知道吧?对,就是这么一个意思。
还有一个,各位可以看到这个SYS也没有驱动对象,这个也很正常。各位这个也对,驱动是可以导出函数的,驱动一样的可以导出函数。各位可以看到这种SYS也是没有驱动,也是没有的,有一些也是没有的。所以这一种各位如果你是断别人的话,你还可以选择这种方式锻炼吗?懂我意思吧?
好,还有一个叫什么VV开头的是吧?你说是这个,对不对?是这个吗?这一个有啊,它是有驱动对象的。好了,我们来看一下既然它发生了问题,我们就一起来看一下。
这个VGA、SYS,我知道大豆你是想说为什么每一个有一些这个就没有是吧?还是没有对吧?你不要想着它的这个驱动跟我们的这种单独的驱动是一样的,它不一定知道吧?它不一定是这么加载的,它有些是通过INF文件直接加载的,它也不经过这种驱动入口。这个VGA。
姐看一下。我们可以看到应该名字没有错,对不对?应该名字没有错,我们把它在这个位置进行了一个断点来看一下。
什么这个驱动也可以用,我都没有明白。你们说的这个话,有时候云里雾里的,没有驱动对象的,要断链的话是可以的。就是通过这种方式,我们自己遍历这种链表,自己编辑这种链表就可以断了。懂我意思吧?自己编辑这种列表,这个只适合查找有名字的,所以我昨天讲了两种方式,就是这么一个意思。
但是这一种的方式好在哪呢?就是说可以把自己给断掉,不至于在入口点,注意不至于在入口点给他干死。当然了我们用这种也是可以的,用这种也是可以把自己断断掉的。但是我们要也也是要写写一个线程延时一下,是不是各位?我复制进去了吗?复制进去了。
我再编一下。
我搞错了。
这个名字我们是不能用了,所以我们改一个名字改成叉叉叉叉叉,我下来。这个有点奇怪,我以为我没断下来。各位这个有点奇怪,我以为我没断下来。好,各位可以看到,这个报了一个错是吧?叫做C0000034对吧?各位看到了吧?
这个报了一个错好了,报了个错,我们就跟进去看一下,是个什么问题是吧?那我们复制一下好了。这个就是说我们名字没有找到,对不对?各位,我跟大家讲过,这个名字不一定是以这个目录下的。兄弟们,不一定是这个目录下的,是不是?所以我们要来分析一下,你不能你锻炼的时候,你肯定是有精确目标的。
可以看到我们的整个驱动里面这就是这个驱动,驱动目录中没有这个名字,看到了吧?没有这个GG开头的,我在这里按G也没有用。我们点击这个点击这个file,我们来看一下,也没有看到是吧?我们再看一下这里面。好,这里面我们都看不到,所以我们再换一个工具,换换一个这样的工具,这目录你得这么来找,V开头的是吧?我一下忘了,那我到这里面来找一下V开头的。
好了,不管他,暂时我们到这里面先来看一下,那个叫做什么呢?叫做我还是来看一下,是危机是吧?危机,所以我们往这个下面来看一下。可以看到各位,从这个上面它并没有这个驱动的名字,看到吗?所以我们没有找到也是正常的。因为这个是它便利的整个驱动整个驱动目录,所以在这里我们并不知道它的驱动名字叫什么,可能是这一个知道吧?可能的名字是这么一个东西,这能理解吧?各位,因为只有他是最像的,所以我大胆的我们要猜测一下,大胆猜测一下,应该就是他是吧。
稍等一下。我们把这个卸载掉好了,所以我们找一下VGAC5,知道吧?什么路径是这软件是别人做的,各位,我等一下发到群里面,这软件是别人做的,懂意思吧?别人做的,他起一个不一样的名字,或者是搞一些不一样的东西,很正常,对不对?而且这个PC hunter他也没有说这个驱动路径。各位PC汉子他也没有说驱动路径。
注意这个路径这个是文件的路径,知道吗?我们这里面对的这个是对象的路径。他俩是不一样的,能理解不?但是大体上他喜欢把这个名字都叫做跟这个名后缀是一样的。所以各位要明白一下,我们再把它。
好了,现在我们来看一下,现在我们就找到了。现在我们就找到了,各位它就为零了。对,就是这个。所以我们进行给他他锻炼。好,锻完之后,我们回回回回去,回去之后我们等待是吧?因为我也不用等待了,因为我们刚才已经断下了。好,我们在这里点一下排名,再按一下V我们就隐藏了。
是不是各位?
没看到了吧,一定要明白查找这个路径不是看这个PC hunt。你们有一些你们有一些是这样的,就是用的版本的比较高,注意。怎样才能让自己的驱动有不同的服务名字呢?通常是你的服务名叫什么呢?你的驱动名字就叫什么。懂我意思吧?通常你的服务名叫什么呢?你的驱动名就叫什么,知道吧?什么PCR的会这样。
看看对象名和附文件名不一样结构。
是这个是服务名,各位,这个是服务名,这个服务名叫什么?通常驱动的这个名这个驱动的这个对象的名字就叫什么,知道吧?对象名和文件名不一定一样,为什么要一样呢?不一样,有有毛病吗?
各位好了。
这个我就过去了。什么怎么改这个服务这个服务名怎么改?这个服务名后面我们我们也讲驱动加载的,在驱动加载的时候在驱动加载的时候,我们可以随机给他起一个服务名的。知道吧?这个是我们自己给的,是也这个也是他自己给的,所以无所谓。好了,我已经关掉它了,把它卸载掉。
好了。
我把这个工具先发到群里面,免得我忘记了。
这个。
还有还有这个小工具是吧?有可能也你们也没有,所以我同样的放在这里。
好,那么我先把这个刚才那个我关了。各位我们今天主题是讲这个蓝屏,各位是讲这个蓝屏。那么相对于来说,这种蓝屏是非常容易触发了。
各位我们写驱动的时候经常动不动就蓝屏了,知道吧?那么蓝屏我们要学会调试它。那么出调试源码的时候,我们非常好调试,就是在这个位置,注意在这个位置下断点。但是有时候我们没来得及下断点,没去调试它,然后运直接运行它就难了,对不对?然后直接就拿了。
比如说我们先举一个最简单的例子,就比如说我们印的心等于0,我在这个地方又给它等于100对,各位。不是开头断下就会难,是有时候你你压根就不你压根就没有去下断点,你运行的时候它就蓝屏了,对吧?你可能不在调试状态,是吧?然后呢,只有蓝屏日志,对不对?
好了。
好了。我们运行一下,当我们运行的时候,它就有蓝屏了,就是长长成这样子是不是?
好了,各位像这种是最好分析的,知道吧?这种是最好分析的,为什么呢?当你解析的时候,通常这里有一个有一个这样的命令,这个命令你也不要记它,为什么不要记它呢?你在这个地方注意这个问题,bug, 它像这个叫什么一样的呢?像这个linux一样的,注意像linux是一样的。
你在这里按住shift,把这个感叹号打印出来,你记住前面这两个就可以了,你记住这前面两个单,两个就是这个按就可以了。按一下按table键,注意按table键走。现在我们是不是自动补全了?各位,像我们以前的这种process也是一样的,各位process也是一样的。我之前为什么不告诉你们呢?就是让你们打一下,学这种长长记性,习惯一下啊不要去偷懒吧?呃,像这种的我就喜欢偷懒,我们按照他这个,你你当你这么这这样输这个命令的时候,就是详细解析,注意就是详细解析。
当我们解析出来之后,注意当我们解析出来之后,像这种源码级的,它通常会把这个但这个东西给我们报出来是吧,对不对?各位通常会把这个给我们报出来。那么报出来之后,我们看如果是这种东西,我们看一下代码就知道了是吧,是不是各位好了,就算有时候是没有的,各位有时候是没有给你报出来的那怎么办呢?
你就在这里按一下KV,注意KK是看堆栈调用,注意K上看堆栈调用好了,那么我们要看堆栈的详情怎么办呢?就KV一下,那么当我们KV一下的时候,这个好像并没有给我们去去报出来这个错误。如果是出现像类似的有一些错误的话,这个地方就有一个有一个这样的调叫做tribal flame I的一个结构,我们把它踹一下就可以了。那现在我暂时还没有找到这个去引用,稍等一下,等一下我们可能别的错误会有。那么这个有可能,你就是这么放行过去的,是吧?放行过去之后,注意这个蓝屏你就等一下,这个蓝屏你就等一下。
有时候你没有挂文体bug,这个是我们挂了问题bug的情况,对不对?所以你一眼就差不多能看出来是吧?所以我们就没有挂纹理bug,让他跑一下,我们就把它这个当铺文件给它拿出来。现在它就在当铺这个内存了在开始当铺内存了。
稍等一下。
好了,现在这种情况我们就基本上已经完成了。各位可以看到,已经完成了。完成之后我们点击重新启动,让它重启一下。
打开错了。
下来了。降多少没去关注,反正下来了是吧?
好了。我们现在这个蓝屏文件通常在哪里呢?在这个windows里边windows里面,在windows这个目录下有一个谜你当图,各位有一个这样的mini当图,看到了吧?有个这样的秘密大幕的文件目录,那么这个东西各位是在哪里呢?我们点点一下我的计算机,在系统保护这个位置,或者是包高级保护。系统保护这个高级这里边有一个启动和恢复故障,我们点击设置,然后各位可以看到它会它的目录在哪里呢?
在这个root目录下,那么这个就是windows。但是各位他好像不是在这个,像我的话,这个可能不在迷你dump下,这个可能不在迷你dump下,所以我们得来找一找一下了。应该是这个,各位知道吧?应该是这个。因为我我的你要看你的生成目录,那么我这个他妈的把它完整端下来了,这个有点恐怖。各位兄弟们,我这个太恐怖了,不是小额存储,而是完整完完整给它淡下来了。所以这个淡下来之后,就有一个G各位。我不知道能不能立马复制出来。
这个就有这个就麻烦大了是吧?看起来好像啥都没了是吧?稍等一下。如果各位你是小额存储的话,就是在这个设置这个位置,各位在设置这个位置你选择的是核心转储或者是这种小额转储。他就在这个迷你当铺中,看到没有?各位就在这个迷你dump中。呃。可能会可能会可能会知道吧,可能会发生不足,这个很正常。
我全部复制出来了吗?应该复制出来了。好了,我给它关了。完整转储适合自己调试,适合你自己出蓝屏的调试。但是这个小额转储的用户那边就是客户,客户基本上都是小额转储,甚至没有蓝屏文件,知道吧?甚至没有蓝屏文件,所以你就很麻烦。我们把它拽进来拽进来。
那么像这种的话,这种核心转储,各位。这个看起来好像。没有看到,也看不到任何的东西,我们在这里看不到任何的东西。各位在在这个位置转出来之后,它是把所有的内存都当过了一遍,但是我们看不到任何的东西怎么办呢?
ISPESP,我们来看一下对账,知道吧?我们来看一下对账,WDQDDS,我们数性排列一下堆栈,那么当我们对这是之前死的账,我们来回溯一下对账,因为他这个回溯有一定的问题,各位发现没有?他压根就没给我们回溯出来,是不是?对吧?你经常有可能也有这样的情况,能理解吗?也有可能有这样的情况,就是没有回溯出来,没有恢复出来。
你就看一下它原有的对账,按照这种属性的排列。那么呃像这种自己的源码的话,你一看你就知道了在你的十二行对吧?所以我们打开它,这个正好是十二行,看到了没有?兄弟们,所以如果是他没有给你报出堆栈回溯的话,各位你就自己要RSP1下来去看一下自己的对账在哪个位置出发的蓝屏。
好了,这个只是一点只是一点,我们先关掉,我把它干掉了。因为这个内存太大了是吧?实在没有用,对不对?我就把它删掉了。好,各位,我们在这里边之前有很多的蓝屏日志是吧?所以我们随便的把它复制几个出来。我们把它复制几个出来X来分析看一波。他妈太恐怖了,我先建立一个文件夹。
好了,我们把它贴到这里面来。我们选中一个,随便选中一个,把他拽进来。好了,像这种可能分析的时间它有点长。不是不是不是,这是我们以前南城南平的驱动,就是南平的文件裆部是吧?我们把它分析拿出来分析,这个就有点奇怪了,叫做八亿叫做8亿。不是不是大象头的,是我们之前32位下,我们自己在在做实验的时候,导致了蓝屏的一些记录。
比如说你看这个是2 3月份的,这个都是三月份的去了,看到没有?看到了吧?这个还是11月份的,看到没有?兄弟们,这个还是11月份的,看到吗?
好,那么像这种怎么看,注意怎么看。我们所我在这里各位是我这里是有个宝贝的,知道吧?是有个宝贝的。什么宝贝呢?你看到没有?叫bug扣的。
我们打开它,打开它之后,我们就往下翻,对吧?翻注意,这个100你不用看了。各位,这个10110我们可也可以往后看一下,应该也有。通常他应该你看8亿就可以了,我们往上走一下,在这儿看到了吧?兄弟们,看到了吧?我们点一下,点击允许。
当然了这个看着不爽,我们翻译过来,给它放一个好了。现在我们就到了这里面,可以看一下这个格式是什么样子的。然后他是说该表明内核模式程序生产的错误,就是出现了异常并没有处理。看到了吧?
出生就是补货异常,没有处不能处理,出现了这个日志,还出现了这个蓝屏,那么他就简简单单单的说了两下吧?然后呢我们在这里并发现不了他太多的问题,对不对?所以我们继续继续等待一下。
因为这个在解析,各位他有点慢的,说实话,这个解析确实是有点慢的,我们换一个。我换成他来解释一下。因为有时候不同的debug版本,对问题bug版本,它的解析的速度它又不一样,知道吧?你可以看到我们这一个就解析的稍微快一点是吧?那个就是稍微慢一点。那么他的这个从这个上面来看,各位这第一个肯定是错误码,也就是说出了一个4005错误。
然后后面的两个暂时未知因为我们通过排查它这个地方并没有看到,所以我们再点一下这个8亿,这个8亿跟它是差不多的,所以我们进入到这里面,注意,进入到这里面。我们看一下,它的第一个参数是什么呢?是未处理的代码。第二个参数是什么呢?发生异常的地址。第三个错误是什么呢?是陷阱的框架。再就是这个是保留的,预定的意思就翻译成中文,他给你他本来是保留的,但是翻译成中文变成预定了,知道吧?是这么个意思。
好了,我们等待他分析一下。好,现在这边刚有点起色了,我们点击一下好了,各位我们往上翻一翻。好,往往上翻一翻,各位在这个位置我们可以看一下它的调用曰调调用堆栈是吧?它这上面显示是我们调用了这个API,再跑到这里面再调用它,再跑到它,再跑到它。看到吧?各位,也就是说在一个系统函数里面造成了蓝屏,那么具体什么原因难的呢?暂时还未知。
是这么一个程序栏的是吧?在这上面我们要详细的看一下这个日志,各位。这个是南屏的地址,这个是我们的川普弗莱米针。所以等一下我们要用到各位我们往下走,在这上面我们只能看到他处理器的这些信息,再往下走。
在这里有一句话各位可以看到,就是我们最后死在哪一句EIP上,对不对?他说是我们执行了一个这样的死掉的。那么执行一个这样的死掉的这个下面还就给我们详细列出了。
那么当我们的EDSEDGS是124死了。那么从这个上面来看,我就知道了为什么,像我的经验我一看我就知道为什么是124124死了,知道吧?不是什么内存。通常这个32位下的124他是查找KBCR,取当前线程,取到的124知道吧?
各位,所以我们可以把它进行一个优一下。我们来看一下,这一个是加30,也就这么一句话。别急,也就是死在这个位置。各位可以看到但是这个函数很明显有点不是特别的对,是吧?各位不是特别的对,为什么呢?因为你的函数的开头通常基本上不会这样,是吧?哎,对不对?
而且最主要的是什么呢?各位,而且最主要的一点是什么呢?就是我们的这个函数它通常是一个引用对象,那么他可以可想而知这个地方绝对是一个什么样的对象,导致了我们蓝屏错误死掉的。所以我们在这里按一下KV,当我们按下KV的时候,这个地方给我有个trouble flame,当然这个try flame并没有象征象征性。好,稍等一下。
可能是大象头二号。然后注意,这里有一个try trip指令,点trip指令,我们输入一下,输入一下之后,各位当然了这个三环的地址看不到。当然我们输入trip指令的时候,各位可以看到,它会把我们当前的这一个当前的这这个战争会替换到我们当前的这个战争框架里面去。那我们再来看一下再来看一下,往上看一下,这个战争是不是一样的,可想而知可以看到我们这边报出来的这个战争跟这个不一样,所以我们继续附加它,把这个trip移动到这个位置来。
移动到这个位置来之后,我们就报出了我们的错误点,报出我们错误点。但是这个地方,各位,这个地方很明显是一个调用了一个什么呢?就是我们的一个对象死掉了。所以还有一个方法,我们现在在这个上面已经检索不出来问题了。各位我们也在这个上面,就是在这个难题上面,我们只知道从这个地方一直调用调用调用调调用调用到这个上面来。但是我们看不出来他有什么问题,知道吧?不是你懵逼,而是在这种蓝屏下,本来就没有看不出来他有什么问题,知道吧?
各位这个是。
很明显,但是为什么呢?为什么等于零的时候,它为什么会等于0,是吧?当然了我们没有源码,只能想象力充分的想象力一下,知道吧?但是这个步骤是这么来看的,各位你先把上面扫一眼,再扫一眼,我们再再跑到这个IDA中,来看一下各位,在这个IDA中它就是长这样的,各位看到了吧?兄弟们,你从这个上面来看,从这个上面来看从这个上面来看,这个函数是一个引用技术,就是把这个对象引用一下,它的参数是一个对象,注意是一个对象。这就是比如说进程,县城文件之类的一些东西,知道吧?各位。
稍等,请允许我发一个收款码好吧?可以吧?不然的话老是冲我是吧?这样也不好。
好了,各位,所以这个初步判断,因为我们没有源码是吧?各位我们没有现在没有这份源码。但是我们从这上面可以知道,是从三环下像这种函数,各位这个函数毫无疑问就是它,知道吧?
各位,这个函数毫无疑问就是它。因为是这个是NT dell的函数,知道吧?NT dell它是调用一个跟内核的名字基本上类似的,要么叫DW要么叫NT再进入到这个KI fast,靠是吧?这里面来知道吧?再调到这里面来,因为我们还没有讲系统调用,所以你看到这个三环掉到这里面了,有点问题,有点问题是吧?是不是各位?
好了,各位他妈的我来看一下,妈的,稍等一下,不管他了,暂时等一下,我给他充一天卡是吧?他妈的老是他妈的这个人,不是这个人我就有点烦,知道吧?他妈的老是充充个一天两天是吧,这他妈的有什么意义呢?是不是各位搞得他妈的到账了,到账了,不用想,不用想。
好。好了,各位,我们继续继续,在这个位置,注意在这个位置我们可以看到它是取到了我们对象头的这个什么抗的这里面看到了吧?各位,好了,这个蓝屏我们因为没有源码的缘故,实际上你分析到这一步就没有了。各位你只知道三环掉了这个API,而且我们并不知道它为什么会掉,因为我们看不到其他的信息,知道吧?各位懂我意思吧?所以你分析到这里,已经没有的分析了,你只知道在这里面进行了传了一个对象,然后减18之后,他就是一个空指针。所以你看到这种,你不要再分析了,知道吧?没有意义了,你追不出来他到底哪里有问题了。
通过这个弹幕。
因为它整个环境没有告诉你是吧?所以我们关掉,关掉之后,我们再开一个,继续来一个。这个不是开,不是这个,但是我们能追出来能追出来一个点,他一定能传了一个空对象进去,这是不是?所以这个就可以检查自己的源码了,懂我意思吧?这种你就要检查自己的源码了,到底哪里传了一个空指针进去。
好了,各位这个就传这个就是什么呢?各位可以看到它是另外一个错误了,就是叫做歧义了,对不对?叫做7亿了。那么这个7亿可以看到我们同样的要打开这个什么,打开这一个东西,来翻一下知道吧?这个等一下我会发给你们的,所以我们往下走,他是10071,来找到他。
输出日志输出日志基本上没用。各位为什么说没用呢?要么你上传服务器才有用,如果你在本地输出的话,用处不是特别的大,知道为什么吗?各位?
这对这个是内存这个是内存,但是我们不同的错误码,它有不同的分析的方式,各位。所以我们要来看一下,这个是这好像是刚才那个我们关掉它有不同的分析方式。我们要来看一下这个,这个的话你可以来看一下,它是说内存引用,这个是第一个是什么?出现了什么故障?我们来看一下,其一,我没有打开错,这是打开DA了,我们点击错了。也不是点击错了,应该是复制错了还是怎么。为什么会到第一去呢?是吧,是不是各位好,这个上面我们并没有看到什么,我们点击到它的7E里面去,那么可以看到这个也是跟但是这上面有两个参数不一样了。
这个是未处理的异常代码对吧?这个是发生异常的地址,这底下是异常记录的地址。这个是什么意思呢?就是我们是在哪一个EIP上发生异常的,那么这个是异常的一个登记结构,这个是contest的结构,那也就是什么呢?也就是这么一个结构,BT1个塞不行。
CRECRD是吧?一个这样的,注意。我们优一下,当然了它不一定像我们这种如蓝屏的情况下,因为可能没有符号,所以我们可能解析不出来,知道吧?可能压根就解析不出来,但我们等一下给它中断下来,应该是没有解析到了。所以我们点击中断,在这里我们DD一下,当我们DD一下的时候,我们又看到了一个C005。然后各位这个结构我们再打开,但是这个结构是导出的,这个结构是导出的,所以我们继续在这里搜索一下,就是这个结构大家注意,就是这个结构,所以我们点进来,点进来之后来对一下。
所以你看错误的时候,你一定先要看它的蓝屏错误码,知道吧?根据蓝屏错误码再看他给你的几个参数是什么。然后先分析一下这几个东西,然后再去看它的调用对账,这是一个套路。
能理解吧?
他妈的怎么这么慢了呢?
好了,各位我们来看一下这个异常地址。这个是我们的异常地址,也就是第在这里这个是我们的异常地址。这个异常地址实际上他应该是已经给你了,实际上他已经给过你了。在哪个地方?我们来看一下,其实在这个地方应该已经给过你了。
知道吧?
或者在上面可以看到,它本质上已经给了你了,所以我们对着它进行一个U一下。那么可以看到这个说是死在这种这种目录下。那么为什么会死在这个上面呢?各位我们在KV一下在KV一下的时候可以发现,各位我们是说加载驱动的时候,这个地方开始去查找我们的名字,从而死的。所以这个时候你就可以看到你的源码,看到你的源码,但是我们没有源码怎么办呢?各位就是假设我们有这个驱动的话,并没有这个源码是吧?或者说我们这里也看不到源码,为什么呢?因为它没有对应的我们源码的函数,这个能理解吧?
来兄弟们,它没有对应我们的源码的函数,所以怎么办呢?当然这个地方就有点有点操蛋了。各位我们来看一下,能不能找到它的这个注意,这个堆栈这里是它的child PEB,这个是返回值,这个是返回值,它调的时候会返回到这个地方。各位可以看到因为它调这个函数调完之后会返回到这个地方。懂我意思吧?所以我们拿到它拿到它进行一个U一下。
U一下之后,我们还是发现各位发现看不到内存,当然了这种情况就比较诡异了,就是我们看不到它的内存。如果我们能看到它的内存,这个就好办了,怎么好怎么来定位。各位如果我们能看到它的内存,那么假设假设注意,假设我们打开能看到它的,也不要看它的内存。就是本质上来说,各位本质上来说,我教你们一招,就是你看到它这里有个函数,对不对?各位你看到它这里有一个11115,对不对?这能理解吗?
各位?
好,那么这个是驱动的这个是驱动的起始地址。各位它的命名,注意是以这个是等于就是驱动的机制,这能理解吧?兄弟们这是驱动的机子,这能理解不?
所以所以怎么办呢?我们假设这个就是我们的驱动,注意这个就是我们的驱动。那么我们在这个位置怎么样呢?对着它按一下G,按一下G这边就找到注意我们驱动的机通常一个PE结构的起始地址是它是不是各位没有加111的?这个上面因为它不是这个批头,懂我意思吧?
你看到这个122,这个是个驱动文件,知道吧?这是驱动文件。你比如说这个文件叫NT,各位,对,这是驱动文件的名字,它不是加122,这个名字起的不太好是吧?我们它是1115是吧,所以我们在这里对。123421115对吧?我们跳过来。
好,通过这样,大体上你是可以定位到你驱动在这个地方蓝屏的。对着这个地方对对着这个地方进行一个F5的操作。好,知道吧。你大概就知道你的函数的位置了,对不对?然后知道这个函数的位置,你是不是就可以跑到你的源码里面去看一下这个函数哪里哪个地方,是不是各位这个能理解了吗?
所以各位一定要一一定要注意一定要注意。就是当我们看不到内存的时候,或者出现了这种他给了我们一个偏移。以文件名字,就是PE文PE的这个结构名字,加上了这个对不对?懂我意思吧?好了,还有说我们现场的写一个是不是?实际上各位你真正的蓝屏是不可能在现场蓝的,懂我意思吧?好,我现在给大家来一个诡异的蓝屏。
比如说我在这里申请来了一个这样的东西,各位我上来了就开辟了这么大块的一块空间,各位。
好。
我在这个下面再来一个值,对。
然后这动作,好了,我们给它关掉。
好的。好,各位看到,我们这个蓝屏就很诡异,是吧?等一下你就看到他的诡异之处了。不是五菱的问题,各位,它压根不是50的问题。
我们点一下。
各位当我们触发这种蓝屏的时候,就很奇怪,他妈的这种地方你压根就不知道他怎么拿的,是不是?对吧?
各位你压根就。
它的这个蓝屏,注意这个EAKS还有值,注意这个EKS它居然还有值,对吧?但是你发现你这个一下就难了,他说你引用这种内存,这种很好分析,这种也不算很难分析。我们再放过去,不用看他的弹幕了,我们放过去关掉再来让他跑一次知道吧?哪一次是永远说明不了问题的,各位知道吧?拿一次是永远说明不了问题的,我们再让他继续拿一次。
通常这种堆栈式爆炸,就是这个内核站爆了是吧?它的这个蓝屏它有时候是会变动的,知道吧?下一次就不一样了,可能再下一次又不一样了,再下一次又不一样了,他就非常的诡异,懂我意思不?各位好了,你只要发现了这种非常诡异的,你就知道这应该是堆在某个地方炸了。所以你就要检查了,你到底有没有把人到底是不是这样的,开辟了一大很快很大的全局变量,把这个内核站给顶爆炸了,知道吧?
那么这个内核站我再说一下各位,这个内核站一共是12K各位也就是4096乘以12,懂我意思吧?兄弟们,4096乘以12,它也不算特别大,也不算很小,对吧?所以我们继续再跑一下。好,这个还是50。可能我们运行的这个地方这个地方有一点固定,在入口点这个位置,所以他跑回去的时候必然但是它会出现就是你们应基本上是不会写这样的代码的。
但是各位可以看到,这一次的南屏好像还在这个位置是吧?通常在通常这个位置还不好说,我们得得换个地方。懂我意思吧?
这个也没有看出,也没有不好换。因为我们这个代码逻辑太简单了,知道吧?这个代码逻辑太简单了,所以我们不好画。你得写稍微写一点复杂的这种程序,进行排排查。
因为这个我们是定时一上来就有这么大,所以它的这个就上来就已经炸了,知道吧?不是对账的本质,爆炸是什么?因为我们的现成的账就12K知道吧?内核现成的账就12K当我们提把这个账提升的非常大的时候,你就死了,因为他已经到顶了。
炸炸了,停留的位置是不一样的。知道吧?三环的一般的有一兆,有一般的有一兆三环。
我得想办法给你们模拟一个错误,这个已经不靠谱了。我们来一个县城,对吧。
三环的仗可以很大,但是内河的账通常没这么大。
我看一下,一个参数,两个参数、三个参数怎么才到这呢?我这个参数就不对了,我这个参数有这么多的吗?我来看一下我这个参数怎么有点诡异了。一个、两个、三个、四个、五个、六个、七个了。好了,复制一下。
好了。
来一个什么样的错误呢?各位来个什么样的错误呢?这个就很纠结。
来个C005吗?C05刚才我来了,就是C005。这个就是C005。
堆栈异常这里面这种堆栈异常还真不好触发,各位还真不好出发。我想一下这样我们去随便的去改一个内存,注意,比如说。
你是觉得这里怪吧?我把它改一下,你看的顺眼一点是吧。我们把这个地方给它改一下,只要调用这里,我们就南平好吧。各位,只要调用这里,我们就蓝屏,这个没问题,各位。
好了,我们翻过来。
好,现在各位可以看到我们的这个蓝屏错误就不一样了,是BE了是吧?对不对?总算出了一点新花样,对吧。
好了,但是这个自己的源码,你看起来就好像非常的简单一样的,是吧?对不对?自己看起来我操就在加八这个位置,注意,我们还是一样的点一下它。点一下它之后,他就给我们报出来了,是吧?
各位,但是这个就比较好了,这个就比较好说明情况了,各位这个就比较好说明情况了,怎么办呢?各位当我点KV的时候,注意当我KV的时候,在这个位置有一个什么travel flame,大家看到了没有?这有个travel flame,看到了吗?兄弟们。把它复制一下,点try,注意点trip,注意。我们弹一下,各位看到了吧?这个就有效果了吧?
啊,各位吧?直接把我们定到是哪一行了,懂我意思了吧?刚才那个没有演示出来。这个我们就可以看到,就在这一行蓝屏了。
然后这个B是什么情况呢?我们看这个就是我们写了只读的内存,知道吧?就是写了只读的内存,这个能理解什么意思吧?各位,写了只读的内存就是这个函数的类地址是不可写的,只能读和执行。但是我们给他写了个100,就造成了这种现象,然后就蓝屏了。蓝屏之后这个里面当然了我们再来一次,各位我们把它放过去了,放过去了,我们给它加一个可注意。
我现在只是给它加一个和,注意我现在只是给它加个和做演示,我们并没有加函数的东西,懂我意思吧?只是给它套了一个外壳,这能理解不?但是我们可以看到代码膨胀的非常大,是吧?对。
好了,稍等一下。
正在连接好了。
好了。免费的。就有破解版的吗?有破解版的。稍等一下,这个蓝屏蓝的次数多了,它的重启的速度就慢了。好,我们继续让它拉平一下。
对,这种具体情况你得具体去分析了。后面我们会说的这家和后面我也会说的,现在你不用着急,我们后面还要整个项目下来。要说的好了,各位可以看到我们又拿这个屏了是吧?还是这个B对不对?当然我们心里面是知道它是为什么蓝屏的,但是它已经解析不到符号了。
所以我们来看一下。
其实大多数情况下,你们蓝屏都是内存蓝屏。那么它是说在这个1058这里各位1058这里给写了一个64,这个我们很清楚,就是这么一个东西是吧?这里还是有我们的继续继续。
南还能不能报出源码是吧?各位可以看到我们压根就报报不出源码了,是不是?各位您因为我们家的可了没有PDF了,就是没有PDB了。这种东西我们就拿不到源码了。但是他说往这个EAPS中写了一个值,那么我们来分析一下,U一下用一下,用一下之后发现它是一个县城,你就往这个县城里面写了一个值是吧?当然我觉得我他妈自导自演有点无聊,知道吗?
好了,各位,如果正常情况下,你怎么来分析这种源码了?我们打开它,注意打开它,打开IDA,注意我们来看一下。我们把这个没加壳的拖进去,为什么是没加壳的了?因为没加壳的你才好分析。加了壳之后,你把它拽进去,你可能啥也看不到,因为静态分析它有个对抗,所以你可能啥都看不到。我们在这个位置不是要选哈哈哈,注意我们它现在已解析了,就变成这样了。我们对着它按下空格,然后各位我们在这个位置把这个特征码,注意把这个特征码给复制一下,注意把这个复制一下。
通常你自己编译的,注意,通常你自己编译的,你肯定有个没加壳的程序,知道吧?你肯定是有一个的,除非你是分析别人的对吧?那你调用别人的蓝屏,那你肯定是知道你调用那里蓝屏了对不对?
好了,各位,我们点击这个地方,有一个搜索字节序,看到了吧?有一个搜索字节序,我们把这个应变码给它贴进去,注意。好了,我们点击OK好,现在就自动给我们定位到这一行了,是不是各位?好了,那你对着它进行了F5。好,各位好,我们就知道了,是这么一个函数蓝屏的,知道吧?你再到你的源码里面,一看这是他,对不对?各位懂了没有?各位,你不像这种你有他的你有这个东西的时候,你不不要去看不要去看这个东西,各位不要去看这个,知道吧?
你说加壳的地方坏了是吧,对吧?操。好了,有这么可能有这么一种可能,就是说呃它是什么呢?就是我们的把这个哈哈进行了一个加壳,就进行了一个加。可如果是你自己写的代码,你其实你自己是有一点逼数的,知道吧?那别人写的代码,你这个分析给他分析蓝屏还是问题比较大,那我们给它翻过去。
好了,各位,我们给这个函数加了一个加给这个函数给它加了一个虚拟是吧?当然了,加虚拟不行。在这个驱动里面千万不要加这么加,不然的话根本就不是我们的程序蓝屏,而是这个可蓝屏,知道吧?所以我们选择变异,在这个位置给它加上。
这个估计。
对,好,等一下我们进行一个运行。
你这个脱不了的,你就不用想着脱维稳P了,知道吧?不用想着脱V吻P了,这个是脱不了的。无论谁告诉你他能手脱V眼皮,都是忽悠人的,不可能能脱,知道吧?除了他自己非常熟悉这款V眼皮的这个结构,就是它生成的每一条每一些花指令它都能熟悉知道吧?这种的情况下,他就可以对着针对性的对于这种去做一个做一个脚本去解析这种给他恢复这种缩小朋,让你怎么能能脱掉他?我就不妈的,我就不太相信了。
好了,各位。现在我们又蓝屏了。那是吹牛逼的,不可能能还原,知道吧?
好了,现在就在这个位置,但是我们看到这种代码的话,还是它吗?各位我就算加壳了之后,是不是还是他是不是?好,还有说腾之前腾讯的竞赛题,就让你做一个手托的VMP。不是的,它的不是三点叉的,他的不是3.3的,就是一点几的和二点几的版本就能拖,三点几的版本是脱不掉的,它都是内嵌膨胀指令,你告诉我怎么做?对吧?内嵌的膨胀指令,你告诉我怎么拖拖不了的,知道吧?
好了,各位像这种我们加壳了,各位你发现了没有?就算我们把整个函数加和了,对不对?我们依然可以找到这个影子,对不对?兄弟们,因为我们真正的去修改这一修改的就是这一段逻辑,它只是膨胀了而已。但是哪具体是哪一行,南坪的这上面是可以找到它的影子的。所以我们依然可以把这个没拖没加和的进行拖到IDA中去定位,能理解吗?
兄弟们。你你们你们这个我觉得是其实这种问题是一直都不懂,知道吧?你是要分析别人的驱动,所以你就会加壳,知道吧?就是会去分析这种带壳的程序,那么你看可以看到,这种就已经膨胀的非常厉害了。看到没有?
各位这个就膨胀的非常厉害了,看到了吧?来各位,但是我尽管没有专门去去搞这种问题,但是我知道他们是怎么做的,知道吧?我知道他们是怎么做的,像像这一些东西知道吧?
这些东西各位等等,你们面对整天的面对VMP之后,你会发现它是有这种东西是有规律可循可循的。所以你一旦熟悉了这种它的这种规律之后,知道吧?然后就把这些代码简化成一行代码。就是通过脚本直接给它分析成给它去掉这一些所谓的没有用的代码,然后保留有用的代码知道吗?各位,然后就是缩小膨胀了。不是你划不来,他专门有就专门有搞VNP的。
这只能专门只研究VNP,而且VNP也不是你们想的这么好研究。为什么?因为这种像这个公司的VNP,对吧?就是真正的问题。这个你分析一波是吧。
然后各位腾讯的VMP它又不一样,是自己写的。蠢逼党就是这个他妈的又不一样,你还有一些也不一样。所以它有非常多的问题,它不止一种虚拟机,懂我意思吧?所以你这种是一种专业,你的专业就是研究VNP。能理解不,各位。
人家告诉你告诉你怎么去分析VMP,什么什么,它是都是针对一款VNP的,或者是让你找这种告诉你怎么找到找到。比如说这两行指令经常会出现,到底是一个什么样的意义。后面随着你学习多了,你看到这两行指令立马就能反映出来,它是没有用的。就会往下看啊,这个是才是他们真正的说搞VNP的一个套路,懂我意思吧?
还有一个,游戏是不会加全加VMP的,只会在自己的关键地方,就是这个函数的关键地方,它可能加一个小的变异。他为什么会加VNP呢?加VP干什么?卡的要死是吧?他游戏的效率不要了吗?他肯定是赚钱是第一,你开挂也不影响他赚钱,暂时是不是?
好了,各位,我现在客人这样的,各位。是这样的,兄弟们你们大概1两三个人一组,不是大象头,1两111组,就是自己互相写个蓝屏给对方分析好吧。因为你自己分析很无聊的,知道吧?为什么呢?你明明知道这里有问题,你还自己分析一波,他有什么意义呢?所以你就你们就是互换,他搞个蓝屏你来分析,你搞个蓝屏给他分析。对,把蓝屏文件丢群里也可以加,不加和随你的便,随你自己的便好吧。因为这个没有法子,自己把自己整了没有法子的。
好,我今天还有个,我今天只讲了个大概的,就是大概教你们怎么看。因为这个没有办法,后面我们随着写账越来越多会迟早会难平的,知道吧?难平的时候我们我们自己在在课上挨个的来分析,知道吧?那样才有意义。你不然我们今天看个大概就可以了。
欢 迎 关 注
更多精彩内容关注下方公众号:逆向有你
个人微信:sumith
每日自动更新各类学习教程及工具下载合集
https://pan.quark.cn/s/874c74e8040e
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...