能力值:
( LV9,RANK:250 )
2 楼
Good.
补:
1、Hook Api,防止api下断
2、编写驱动程序,接管int1,int3等实现反跟踪
能力值:
( LV12,RANK:570 )
3 楼
lordor兄的WinPE进展如何了?:)
能力值:
( LV9,RANK:250 )
4 楼
进展极慢,现在在忙别的事
能力值:
( LV2,RANK:10 )
5 楼
例子?
能力值:
( LV3,RANK:20 )
6 楼
指令预取我试了几次,好象就没成功过。
你们试成功了吗?
能力值:
( LV4,RANK:50 )
7 楼
最初由 hying 发布 指令预取我试了几次,好象就没成功过。 你们试成功了吗? 指令预取现在好像已经不能作为反跟踪手段了 在DOS时代可行 现在根本没用
能力值:
( LV4,RANK:50 )
8 楼
其实反跟踪 反调试 可以用多进程间相互解码控制eip跳转 然后里面用上楼主的一些方法 这样也许事半功倍
能力值:
( LV2,RANK:10 )
9 楼
指令预取必须在RING 0级才能实现!具体的看XPROTECTOR
能力值:
( LV12,RANK:570 )
10 楼
没成功。
我觉得这跟CPU的设计有关。
=======整理自《intel系统微处理器结构,编程和接口大全》=========
386工作在流水线方式下时,CPU在当前指令执行完成前预读一条指令。
486加入cache机制,但同一cache同时存放数据或指令。Pentium的cache
每个8K,分别用于数据缓存和指令缓存。
===============================================================
CPU的指令预取的目的是提高指令执行效率,但当指令发生改变时缓存里
旧的指令就应丢弃,否则将会造成混乱。
我想CPU的指令预取技术刚开始时没有注意到程序会自己改代码的情况,
(正常情况下代码段是不可改的)所以没有比较、更新指令流的措施,
所以就有了利用这种机制反跟踪的技术。随着CPU指令预取技术的成熟,
(cache匹配)这种情况就不存在了。(如果xpr在ring0能控制cache的
控制寄存器使cache不更新指令流(禁止cache匹配)又另当别论了)
猜测一下,讨论讨论:D
能力值:
( LV4,RANK:50 )
11 楼
我也在0环做过测试 好像行不通 也许是需要禁止cache匹配才能行的通
能力值:
( LV2,RANK:10 )
12 楼
你在驱动中测试过?
能力值:
( LV4,RANK:50 )
13 楼
最初由 iceplus 发布 你在驱动中测试过?
我只是在以前的驱动中加入了几条汇编测试 :( 好像无效
其实不要驱动,直接编写DOS程序测试效果应该也一样,可惜我没有纯DOS启动盘,不好测试
能力值:
(RANK:1060 )
14 楼
预取指令现在应该是无效的,我用SEH自调试,监视一段指令,还是挂了。
能力值:
( LV2,RANK:10 )
15 楼
绝对是有效的,用SOFTICE跟踪进XPROTECTOR的驱动就可以感受到了!
能力值:
(RANK:1060 )
16 楼
厉害,可以用si进去……pfpf
能力值:
( LV2,RANK:10 )
17 楼
你也可以跟一下,当你遇到jmp eip的时候就证明它确实有效:D
能力值:
( LV4,RANK:50 )
18 楼
设置了PE位以后,还需要通过执行JMP指令来清除处理器指令预取队列。在80386中,使用指令前总是先将其从内存中取出,并且进行解码和寻址。然而,当进入保护模式以后,预取指令信息(它还处于实地址模式)就无效了。使用JMP指令的目的就是强迫处理器放弃无效的信息。
?????????????????????????????????????????????????????????
能力值:
( LV2,RANK:10 )
19 楼
说得好
能力值:
( LV12,RANK:570 )
20 楼
最初由 云重 发布 设置了PE位以后,还需要通过执行JMP指令来清除处理器指令预取队列。在80386中,使用指令前总是先将其从内存中取出,并且进行解码和寻址。然而,当进入保护模式以后,预取指令信息(它还处于实地址模式)就无效了。使用JMP指令的目的就是强迫处理器放弃无效的信息。 ?????????????????????????????????????????????????????????
Pentium采用分支预测逻辑来减少由于分支导致的时间消耗。由于当遇到一个分支指令(反指短转移或近转移)时,CPU在分支地址处进行了指令预取,因而减少了时间消耗。这些指令被装入指令cache,因而当执行分支时,指令就已经存在了......摘自书上。
云重兄提到的是CPU在从实模式转变到保护模式时利用JMP指令改CS寄存器同时消除旧的预取指令,而关于“当进入保护模式以后,预取指令信息(它还处于实地址模式)就无效了”并不是说CPU处于保护模式后不进行指令预取,只是在实模式预取的指令无效了,JMP之后CPU就会重新预取指令。
能力值:
( LV2,RANK:10 )
21 楼
这在操作系统课程中是讲得比较多的。有切换代码如下:
;-------------------------------------------------------------
; MicroP is now in "Protected (safe sex?) mode" :)
;-------------------------------------------------------------
; jump far to selector1:system32 to clear pipeline ,etc
; and to load CS segment with the correct selector
;-------------------------------------------------------------
db 67h
DB 66h
DB 0EAh ; jump to protected mode selector
DD 00008E00h ; offset to system32
DW 0008 ; selector
楼上这位讲得真清楚
能力值:
( LV2,RANK:10 )
22 楼
要是每种技术举一个例子就好了!
能力值:
( LV2,RANK:10 )
23 楼
收藏
能力值:
( LV2,RANK:10 )
24 楼
支持继续讨论
能力值:
( LV4,RANK:50 )
25 楼
cache 中发生修改的时候会不会触发CPU的dirty 位而强制需要刷新cache ?