向大家拜年
祝新年快乐
.还有.向大家道歉..
偶的一些文章存在问题,按照国际惯例是不能给予精华的
kanxue老大请取消精华
其实每个文章都应该配有自己写的实现代码,之所以没贴出来是偶的
代码是硬编码的
就是这样
WPOFF();
mov eax,0x11111111
mov [eax],0x22222222
WPON();
也就是硬修改,注意上面代码有以下问题
1.没有关中断sti cti
2.没有升dpc-dispatch_level
3.没有lockpages
4.没有spinlock
以上不是每个都必须,但是某些必须.之所以偶不这么写
原因很简单,为了更快的测试偶的想法有无严重问题
但是这种代码贴出来是肯定不行的,换了机器肯定没法运行
如果发生中断,线程切换,页被换出的任意一个那么就直接BSOD了
向所有鼓励和支持偶的大牛们表示感谢,更向那些批评和指点偶的大牛表示感谢
向被偶搞BSOD的大牛表示道歉
祝福各位新年快乐
那个int3代码,偶还原的时候是直接硬性写回去的,
一时找不到怎么动态获取int3处理函数真实地址的办法,只好先写一部分,看看有无大牛批评指点
实话承认,这些东西比较偏,所以只好写1部分看看有无感兴趣的大牛哦
还有,那个某人提到的主场问题.偶不好怎么说拉.
米办法,一些东西有点偏,所以只好各大论坛发1下,看看有大牛无意中能看见不.
要是发到某地方,既米人看,也米人回,偶文章就白写了
偶想实现的东西是向系统中加入一个自己的异常处理
实现myint3和myint1,就是mykitrap3和mykitrap1
系统发生int3和int1的时候直接进入mykitrap3和mykitrap1
完全不经过那些被hook的函数,实现完整异常处理流程模拟
这也是偶的喜欢做法之一,对于那些邪恶的hook,完全模拟被hook的过程
从而本质上无视hook,干净利落做掉hook
新的一年到来了,老的保护技术应该把他留在上一年把
新的一年应该是VM的天下了,光靠1个邪恶驱动就敢横行霸道的时代也留在上一年把
本来想在年前完成所有代码,看来是不行的了.
年后偶希望分析1下异常的本质过程,偶的猜测是异常是平权的
--------------------------------------------------------------------------+
number | Exception | Exception Handler |
--------------------------------------------------------------------------+
0 | Divide Error | divide_error() |
1 | Debug | debug() |
2 | Nonmaskable Interrupt | nmi() |
3 | Break Point | int3() |
4 | Overflow | overflow() |
上面只是一小部分
那些反断点的anti一定是接管了 int3()的某些异常流程
我们是否可以改造od?让常规断点改用Divide Error ?
既然断点本质上是发生异常,程序中断下来
我们可否把要设置断点的地方改成
xor,eax,eax
div eax
这样触发的是除0异常,一样能够在这里中断下来,进入我们的处理过程
但是不会落入壳的int3陷阱,这样的好处是很简单,不需要写驱动
也不会改系统内核,却绕开了陷阱,不知是否可行
希望大牛予以指点.谢谢