能力值:
( LV5,RANK:70 )
|
-
-
|
能力值:
( LV5,RANK:70 )
|
-
-
[原创]DPC机制分析记录
兔oO
貌似不对 ~当前线程处于挂起状态 ~并不存在线程的调度列队 所有不会被切换 按道理线程只有被切换的时候才会执行DPC
enen,不过我认为DPC执行的时机应该是和线程切换没关系的,是在IRQL请求级别降低到DISPATCH_LEVEL以下的 时候执行的,APC才和线程切换有关系,这一点应该是没错的。然后我上面确实有写唤醒线程,但是确实是表述有误,估计我当时也理解有错吧。具体可参看KiQuantumEnd函数中有相关的线程切换的逻辑, 当我再次去寻找的时候发现这个函数在KiDispatchInterrupt被调用,在KiDispatchInterrupt函数中会用KiRetireDpcList函数首先处理当前核心的DPC队列,最后可能会发生线程切换。不过如@又出bug了 老哥说的一样,感觉上讨论DPC和线程的关系意义似乎不大,我乱写的锅。所以总结上来看在执行完成DPC队列后会尝试切换线程,具体是否切换线程需要具体判断,而我写的线程唤醒是有问题的,我上面说的关于KiDispatchInterrupt只是一部分的逻辑,是有分支的,在分支中也有线程切换,具体请自行翻阅一下。
|
能力值:
( LV5,RANK:70 )
|
-
-
|
能力值:
( LV5,RANK:70 )
|
-
-
[原创]DPC机制分析记录
兔oO
被挂起的线程 收到DPC事件后 会被唤醒?
我也不确定是不是立刻唤醒,但是根据源码确实会经过一系列判断后唤醒线程,一般来说DPC在ISR后面降低IRQL级别的时候会去扫描时候有DPC队列,如果有就会执行。触发的具体语句就是KiRequestSoftwareInterrupt这一句。不对的地方请指正。
|
能力值:
( LV5,RANK:70 )
|
-
-
|
能力值:
( LV5,RANK:70 )
|
-
-
[原创]vmp3.0.9全保护拆分解析
MistHill
Call R32 在vCall里。
VMP3的vCall与VMP2有很大不同,VMP2的vCall只能调用虚拟子程序/函数,VMP3的vCall可以直接调用API,比较方便。感觉VMP3的vCall ...
谢谢,说的好详细。想问下vCALL在3.x版本下不止一个,但是一直没明白为啥这个检测基本上检测函数的调用在一个地方就能过,我是把所有的保护都有勾选的?
|
能力值:
( LV5,RANK:70 )
|
-
-
[原创]vmp3.0.9全保护拆分解析
JAS白乌鸦
我也在研究这个,sharpod的Atti_Atti Attach和scyllahide的kill anti attach都可以绕过一些TMD的反附加.不过我挂钩这几个函数失败了,打算直接用修复的方法 ...
期待你完成后的分享,这方面的思路提供的内容多一些,但是具体实现还没去试过,准备考试啦
|
能力值:
( LV5,RANK:70 )
|
-
-
|
能力值:
( LV5,RANK:70 )
|
-
-
[原创]vmp3.0.9全保护拆分解析
cat喵
哈哈,是的,这就是一篇总结贴,而且属于适合新手的,vm还原部分我也还在分析中,不同版本的特征感觉也不太一致,所以没办法快速还原。
如果您有相关资料,也请分享或指教一个方向谢谢
大神请教个问题,你写的SharpOD的Atti_Atti Attach的原理是使用的挂钩DbgUiIssueRemoteBreakin,DbgUiConnectToDbg,DbgUiDebugActiveProcess这几个函数来实现的吗?
|
能力值:
( LV5,RANK:70 )
|
-
-
|
能力值:
( LV5,RANK:70 )
|
-
-
|
能力值:
( LV5,RANK:70 )
|
-
-
[原创]vmp3.0.9全保护拆分解析
ZwTrojan
我使用SharpOD插件可以过掉反调试,但是在IsDebuggerPresent上下断就会被检测到,意思是VM还会检测API入口的1个字节判断是否为0xCC来进行反调试吗.
是的,有软件断点的检测,使用硬件断点就可以的
|
能力值:
( LV5,RANK:70 )
|
-
-
|
能力值:
( LV5,RANK:70 )
|
-
-
|
能力值:
( LV5,RANK:70 )
|
-
-
|
能力值:
( LV5,RANK:70 )
|
-
-
|