能力值:
( LV6,RANK:90 )
|
-
-
2 楼
"求真易语言工具箱" 这东西最典型.
|
能力值:
( LV13,RANK:970 )
|
-
-
3 楼
找猴子,他现在是这方面权威人士。
|
能力值:
( LV9,RANK:140 )
|
-
-
4 楼
根据自已的测试.有些程序里改成int 3可以通过,有些程序就不行.望高人出来指点一二.
|
能力值:
(RANK:460 )
|
-
-
5 楼
粘一段代码上来吧
|
能力值:
( LV9,RANK:140 )
|
-
-
6 楼
最初由 monkeycz 发布 粘一段代码上来吧
高人是来了,但不是时候哇.我见无人回话,我中午刚把那个软件删除了.软件是别人传给我的,我没不知道怎么找回来了.
|
能力值:
( LV9,RANK:140 )
|
-
-
7 楼
不过以我的一点点小经验,换成int 3应该都是可以的.嘻嘻
|
能力值:
(RANK:460 )
|
-
-
8 楼
最初由 ohuangkeo 发布
高人是来了,但不是时候哇.我见无人回话,我中午刚把那个软件删除了.软件是别人传给我的,我没不知道怎么找回来了.
心急吃不了热豆腐阿
|
能力值:
(RANK:1060 )
|
-
-
9 楼
还是变成猴子了
|
能力值:
(RANK:460 )
|
-
-
10 楼
|
能力值:
(RANK:410 )
|
-
-
11 楼
|
能力值:
( LV9,RANK:810 )
|
-
-
12 楼
一点资料。转自中国Linux论坛jkl:
"f00fc7c8"相当于"LOCK CMPXCHG8B EAX"指令,CMPXCHG8B的正常用法是带1个存储器操作数,例如"CMPXCHG8B [EBX]",将[EBX]中所指的64位内存操作数与EDX:EAX比较并相互交换。但跟据Intel指令的构成规律,可以构造出象"CMPXCHG8B EAX"这样的无意义的指令,CPU在执行这条指令时会产生异常6,这时CPU将从中断描述符表中启动第6号中断向量。但如果这条指令前面又加上LOCK前缀(指令码为F0),CPU会错误的认为取中断向量是一个需要改写存储器的过程,于是就等待写操作的完成,这样就进入了死锁状态。
Linux对这个问题的是这样处理的。用vmalloc在虚拟地址空间上分配一个物理页,找出它的页表项,用idt_table的物理地址替换该页表项,将该页标记为只读,然后以这个新的IDT表的地址加载CPU中断描述表寄存器,并释放vmalloc分配的那个物理页,这样就将idt_table的物理页面映射到内核虚拟地址空间中。当遇到"LOCK CMPXCHG8B EAX"指令时,CPU会认为指令将要改写第6号中断描述符,于是产生一个页故障,do_page_fault过程跟据故障点是不是在中断描述符表的6号位置来识别这种情况。
|
|
|