精华内容
下载资源
问答
  • 【OS学习笔记】十五 保护模式三:保护模式下的内存访问机制 按照顺序将上述四篇文章对应的内容学完,方能看懂本篇文章的汇编代码。 更加详细的介绍请参考数据《X86汇编语言-从实模式到保护模式...

    本文记录的是之前四篇文章所对应的汇编代码。四篇文章分别是:

    按照顺序将上述四篇文章对应的内容学完,方能看懂本篇文章的汇编代码。

    更加详细的介绍请参考数据《X86汇编语言-从实模式到保护模式》第11章内容。

    代码如下:

             ;代码清单11-1
             ;文件名:c11_mbr.asm
             ;文件说明:硬盘主引导扇区代码 
             ;
    
             ;设置堆栈段和栈指针 
             mov ax,cs      
             mov ss,ax
             mov sp,0x7c00
          
             ;计算GDT所在的逻辑段地址 
             mov ax,[cs:gdt_base+0x7c00]        ;16位 
             mov dx,[cs:gdt_base+0x7c00+0x02]   ;16位 
             mov bx,16        
             div bx            
             mov ds,ax                          ;令DS指向该段以进行操作
             mov bx,dx                          ;段内起始偏移地址 
          
             ;创建0#描述符(描述符是8字节的),它是空描述符,这是处理器的要求
             mov dword [bx+0x00],0x00
             mov dword [bx+0x04],0x00  
    
             ;创建#1描述符,保护模式下的代码段描述符
             mov dword [bx+0x08],0x7c0001ff     
             mov dword [bx+0x0c],0x00409800     
    
             ;创建#2描述符,保护模式下的数据段描述符(文本模式下的显示缓冲区) 
             mov dword [bx+0x10],0x8000ffff     
             mov dword [bx+0x14],0x0040920b     
    
             ;创建#3描述符,保护模式下的堆栈段描述符
             mov dword [bx+0x18],0x00007a00
             mov dword [bx+0x1c],0x00409600
    
             ;初始化描述符表寄存器GDTR
             mov word [cs: gdt_size+0x7c00],31  ;描述符表的界限(总字节数减一) 因为一共4个段(代码段数据段栈段与空段)  
                                                 
             lgdt [cs: gdt_size+0x7c00]				  ;从gdt_size读取6字节的话,就包括了4字节的段线性地址和2字节的偏移地址
          
             in al,0x92                         ;南桥芯片内的端口 
             or al,0000_0010B
             out 0x92,al                        ;打开A20
    
             cli                                ;保护模式下中断机制尚未建立,应 
                                                ;先禁止中断 
             mov eax,cr0
             or eax,1
             mov cr0,eax                        ;设置PE位,直接导致处理器的运行进入保护模式
          
             ;以下进入保护模式... ...
             jmp dword 0x0008:flush             ;16位的描述符选择子:32位偏移
                                                ;清流水线,并串行化处理器 
             [bits 32] 
    
        flush:
             mov cx,00000000000_10_000B         ;加载数据段选择子(0x10)
             mov ds,cx
    
             ;以下在屏幕上显示"Protect mode OK." 
             mov byte [0x00],'P'  
             mov byte [0x02],'r'
             mov byte [0x04],'o'
             mov byte [0x06],'t'
             mov byte [0x08],'e'
             mov byte [0x0a],'c'
             mov byte [0x0c],'t'
             mov byte [0x0e],' '
             mov byte [0x10],'m'
             mov byte [0x12],'o'
             mov byte [0x14],'d'
             mov byte [0x16],'e'
             mov byte [0x18],' '
             mov byte [0x1a],'O'
             mov byte [0x1c],'K'
    
             ;以下用简单的示例来帮助阐述32位保护模式下的堆栈操作 
             mov cx,00000000000_11_000B         ;加载堆栈段选择子
             mov ss,cx
             mov esp,0x7c00
    
             mov ebp,esp                        ;保存堆栈指针 
             push byte '.'                      ;压入立即数(字节)
             
             sub ebp,4
             cmp ebp,esp                        ;判断压入立即数时,ESP是否减4 
             jnz ghalt                          
             pop eax
             mov [0x1e],al                      ;显示句点 
          
      ghalt:     
             hlt                                ;已经禁止中断,将不会被唤醒 
    
    ;-------------------------------------------------------------------------------
         
             gdt_size         dw 0
             gdt_base         dd 0x00007e00     ;GDT的物理地址 在主引导扇区之后
                                 
             times 510-($-$$) db 0
                              db 0x55,0xaa
    

    笔记记得不是很全,如果有不懂的可以加我联系方式一起交流。

    学习探讨加个人:
    qq:1126137994
    微信:liu1126137994

    展开全文
  • 本篇文章学习如何进入保护模式,并学习如何在保护模式下进行内存访问。 1、如何进入保护模式 假设我们已经用汇编语言将段描述符安装到GDT中(具体的汇编代码在后面的文章中会给出),并且也已经将GDTR的线性地址与...

    上一篇文章学习了段描述符与段描述符各个标志位的含义:段描述符

    本篇文章学习如何进入保护模式,并学习如何在保护模式下进行内存访问。

    1、如何进入保护模式

    假设我们已经用汇编语言将段描述符安装到GDT中(具体的汇编代码在后面的文章中会给出),并且也已经将GDTR的线性地址与界限值加载到了GDTR中。现在前期的准备已经准备好了,可以直接进入到保护模式了。那么如何进入到保护模式呢?

    控制实模式与保护模式切换的一个控制器是CR0寄存器。CR0是处理器内部的一个控制寄存器。

    CR0是32位寄存器。如下图:
    在这里插入图片描述

    它的第一位(位0)是保护模式允许位(PE位)。如果把该位置1,则处理器进入保护模式的规则下运行。其他位暂时不用,所以显示的空白。以后学习过程中会继续学习。

    好了,只要我们再汇编代码中将CR0寄存器的PE位置1,则进入保护模式的规则。现在假设我们已经进入了保护模式。

    2、进入保护模式后如何访问内存

    2.1、32位处理器的段寄存器

    我们很清楚16位的8086处理器的是如何通过段寄存器来访问内存的。

    在保护模式下,32位的处理器中。段寄存器有所变化。如下图是32位处理器的段寄存器:
    在这里插入图片描述
    每个段寄存器的前16位于8086的寄存器一样,在实模式下,他们用传统的方式访问1M内存,使用方法没有变化。

    同时每个段寄存器还包括一个不可见的部分,如上述图的红色部分,称为描述符高速缓存器,用来存放所要访问的段的线性地址、段界限和属性。

    说它不可见是因为只有处理器可以访问,只能是处理器来使用。

    那么保护模式下,是如何听过上述的段寄存器访问内存的呢?

    在保护模式中,前16位的段寄存器称为段选择器。 将段描述符在GDT中的索引号传送给段选择器。

    如下图所示,是段选择器里的内容。
    在这里插入图片描述

    在保护模式下访问一个段时,传送到段选择器的是段选择子。它由上述三部分组成。

    • 描述符索引: 用来在描述符表(GDT)中找到一个段描述符。
    • TI :描述符表指示器。TI=0时,表示描述符在GDT中。TI=1时表示描述符在LDT中。LDT是局部描述符表,在后面会有所介绍。
    • RPL :请求特权级,表示给出当前选择字的能程序的特权级,正式该程序要访问这个内存段。

    2.2、开始访问内存

    到了这里,我们知道了段选择器的作用,就是用来索引段描述符的。现在还不知道描述符高速缓存器的作用呢??? 不着急,马上就来。

    假设现在我们要访问的是数据段。

    DS寄存器的段选择器中存放的是数据段描述符在GDT中的索引号,而GDTR寄存器又保存的是GDT的基地址。GDT中每一个描述符的大小是8字节。那么访问数据段的内容,就如下图所示了:

    在这里插入图片描述

    在第一次访问数据段的时候, 首先将之前传送到段选择器的段选择子部分的描述符的索引号乘以8,得到描述符在GDT中的偏移地址。再用这个偏移地址加上GDT的基地址GDTR指向的内容,就可以访问到内存中的段。

    如果没有发现什么问题,就自动的找到数据段描述符,将它加载到段寄存器的描述符高速缓存部分。加载的部分包括数据段的线性地址、段界限、与访问属性。

    此后,如果再有访问数据段的内存操作,处理器直接访问段寄存器的描述符高速缓存部分的内容,而不用像开始那样还用段选择子部分的描述符索引号乘以8加上GDTR指向的GDT基地址。不用那么麻烦了,以后如果还访问数据段,直接在数据段的描述符高速缓存中查找段的地址以及访问属性即可。

    比如接下来如果有一条指令mov byte [0x00],'P' 假设现在的DS中的描述符高速缓存存的数据段的线性地址是 0x000B8000,那么上述指令的访问就如下图所示:
    在这里插入图片描述

    不只是访问数据段。访问代码段也是与上述过程类似。只不过指令的偏移地址一般是由EIP寄存器指定。那么访问一个内存中的指令大概就是下面的过程:

    在这里插入图片描述

    到了这里,我们已经很明白段寄存器中的描述符高速缓存的作用。它其实就是一个cache的作用。

    3、总结

    本篇文章有点绕。但是只要很用心的看,多看几遍,肯定会看明白保护模式下的内存访问机制。

    笔记记得不是很全,如果有不懂的可以加我联系方式一起交流。

    学习探讨加个人:
    qq:1126137994
    微信:liu1126137994

    展开全文
  • floppy.exe -wf load.bin 0 0 2 os.bin
  • 上一篇文章学习了如何进入保护模式,以及如何在保护模式下进行内存访问。点击链接查看上一篇文章:进入保护模式与在保护模式下访问内存 本篇文章接着学习。我们已经知道了在保护模式下的内存访问的步骤:包括创建GDT...

    上一篇文章学习了如何进入保护模式,以及如何在保护模式下进行内存访问。点击链接查看上一篇文章:进入保护模式与在保护模式下访问内存

    首先说明本片文章有对应的汇编代码,点击链接查看:点击查看

    本篇文章接着学习。我们已经知道了在保护模式下的内存访问的步骤:包括创建GDT,安装段描述符,然后访问GDT从中取得描述符的索引传送给段寄存器的段选择器从而形成段选择子,然后根据段选择子找到位于GDT中的描述符进行段的访问。那么第一次找到段描述符后就将其缓存到段寄存器的描述符高速缓存器中,在这之后的访问中,直接从段寄存器的描述符高速缓存器中获取描述符的基地址即可。

    上述的步骤是我们之前学过的内容。那么处理器是如何在这个过程中保证对内存的访问是安全的呢?如何确保访问各个段的时候不会超出各个段的范围?如何确定代码段是不可写的?如何确定要访问的地址是否是有效的等这些问题,就是本文的学习目标。

    本文大概学习以下几种保护:

    • 修改段寄存器时的保护

    • 地址变换时的保护

      • 代码段执行时的保护
      • 栈操作时的保护
      • 数据访问时的保护

    以及使用别名段来实现对代码段的读写控制。

    1、修改段寄存器时的保护

    随着程序的执行,经常会对段寄存器进行修改。尤其是类似于jmp , call ,ret , iret这样的指令就会隐式的修改段寄存器。

    比如 jmp dword 0x0010:flush这条指令就会修改段寄存器(这条指令在下一篇文章中的55行)。

    在完成以上指令的时候,处理器会将指令中给出的段选择子传给段寄存器的段选择器。但是在传送之前,寄存器会检查段选择子的正确性,并且需要确定该选择子所对应的描述符也是合法的。

    假设我们的描述符就在GDT中(后面还会有LDT)。那么我们的段选择子所对应的描述符应该完全位于GDT中。什么意思呢?看下图:

    在这里插入图片描述

    我们可以看到,描述符位于GDT中,而且描述符的上边界也要位于GDT 的上边界内。条件就是:索引号X8+7<= 边界 这就是处理器做的检查,如果这个条件不满足,处理器就会产生一个异常中断13,同时段寄存器中的原来的值不变。

    以上仅仅是检查的第一步。要是通过了上述检查,并从GDT中获取描述符后,紧接着还要对描述符的类别进行确认。如果描述符是只执行代码,则不允许加载到除CS之外的其他段寄存器中。

    具体描述符的属性,前几篇文章已经介绍,可以参考这篇文章中关于描述符的TYPE字段的含义:段描述符

    在根据以上检测出来该描述符所描述的段的属性后,再检查是否与我们要使用的段的用途匹配。具体规则如下表:

    在这里插入图片描述

    最后,除了检查段的类别外,还要检查描述符中的P位。如果P=0,表明虽然描述符已经被定义,但是该段实际上并没有存在于物理内存中。此时,处理器终止处理,引发异常中断11。中断处理程序会把把该描述符所对应的段从硬盘的调入内存,然后置P为。 如果P=1,则处理器将描述符加载到段寄存器的的描述高速缓存器,同时置A位。

    一旦上述规则全部通过,处理器就将选择子加载到段寄存器的段选择器。

    2、地址变换时的保护

    2.1 代码段执行时的保护

    在32位模式下,尽管段的信息在描述符表中,但是,一旦相应的描述符被加载到段寄存器的描述符高速缓存器后,则处理器取指令和执行指令时,将不再访问描述符表,而是直接使用段寄存器的描述符高速缓存寄存器,从中取出段的线性基地址,与EIP指针寄存器相加,得到最终的物理地址,从而取得指令。

    不过,在正式开始执行指令之前,处理器必须检查这个地址的有效性,以防止执行超出允许范围的指令。

    这个检查与段的界限有关。访问的指令不超过段的界限即可(与上面不超过GDT的界限一样)。需要访问的内存地址加上指令的长度-1不超过段的界限。假设现在有如下图的一个代码段,地址范围如下,那么EIP+指令长度-1要在下属代码段的地址范围之内:
    在这里插入图片描述

    2.2 、栈操作时的保护

    同上所述,在访问栈段的时候,也是需要检查指令是否合法。只不过与上述代码段不同的是栈段一般是向下扩展的段,所以在计算范围的时候有一定区别:

    在这里插入图片描述

    2.3 数据访问时的保护

    与上述代码段类似,在数据段访问数据的时候,也是需要检查地址的范围是否合法。我们大概明白这其中的道理即可,不再赘述。

    3、使用别名访问代码段

    众所周知,代码段是不可写的。那么如果我们想要写代码段,如何实现呢?

    我们知道,访问代码段是使用CS寄存器保存段基地址,加上EIP寄存器存的值,就形成最终的物理地址,即可。

    如果我们非要想写代码段的内容,可以建立代码段的别名。比如让DS指向CS,那么当我们操作DS寄存器的时候,虽然看上去是在操作数据段,实际上我们是在操作代码段。比如我们下一篇文章就有对CS的别名DS,最后我们操作DS来修改代码段的内容!!!

    4、总结

    • 学习处理器是如何对内存进行保护
    • 了解别名的意义与作用

    笔记记得不是很全,如果有不懂的可以加我联系方式一起交流。

    学习探讨加个人:
    qq:1126137994
    微信:liu1126137994

    展开全文
  • 实模式 保护模式

    实模式【REAL MODE】

    1. 程序按照8086寻址方式访问1MB的空间
    2. 寻址方式:物理地址(20位)=段地址:偏移地址
    3. CPU单任务运行

    保护模式【PROTECT MODE】
    为存储器共享和保护以及实现虚拟存储器提供了硬件支持。

    1. 寻址方式:段(32位)和偏移量(32位),寻址4GB空间 (常规空间1MB,所以必须使用虚拟内存技术)
    2. 段的属性:起始地址,存取属性,权限级别
    3. 机制:段页式寻址
    4. 实现: CPU支持多任务并存
    5. 主要目的:保护多任务之间代码访问的完全隔离(使用虚拟地址)

    以上来自华中科技大学软件学院苏曙光老师操作系统原理课程

    有关保护模式的存储管理机制和保护机制的详细介绍:http://blog.sina.com.cn/s/blog_511703010100m1yr.html

    以下转载于:https://blog.csdn.net/qq_37653144/article/details/82818191

    从80386开始,CPU有三种工作模式:实模式、保护模式和虚拟8086模式。80286开始的CPU引入保护模式,实际上,实模式概念是在保护模式推出之后为了区别保护模式之前的8086CPU工作模式才有的,在8086时代CPU工作模式只有一种,自然没有实模式之说。实模式有着先天的缺陷(下文详述),但出于向上兼容的考虑,现代CPU仍然保持着对16位操纵模式的兼容。

    所谓工作模式,是指CPU的寻址方式、寄存器大小、指令用法和内存布局等。

    实模式
    实模式的“实”体现在程序中用到的地址都是真实的物理地址,“段基址:段内偏移地址”产生的逻辑地址就是物理地址,即程序员可见的地址完全是真实的内存地址。

    在实模式下,内存寻址方式和8086相同,由16位段寄存器的内容乘以16(左移4位)作为段基址,加上16位段偏移地址形成20位的物理地址,最大寻址空间1MB,最大分段64KB。可以使用32位指令,即32位的x86 CPU也可以兼容实模式,此时的实模式相当于高速的8086(32位CPU的实模式可以使用32位下的资源)。在32位CPU下,系统复位或加电时都是以实模式启动,然后再切换为保护模式。在实模式下,所有的段都是可以读、写和可执行的。

    下图是实模式下的内存访问模型:
    在这里插入图片描述
    8086CPU的实模式开创性地提出了地址分段的概念,改变了在它之前的CPU只能“硬编码”,程序无法重定位的缺点。然而实模式还是有很多缺陷,其中最主要的是实模式的安全隐患。在实模式下,用户程序和操作系统拥有同等权利,因为实模式下没有特权级。此外,程序可以随意修改自己的段基址,加上实模式下对地址的访问就是实实在在的物理地址,因此程序可以随意修改任意物理地址,甚至包括操作系统所在的内存,这给操作系统带来极大的安全问题。

    保护模式
    尽管在Intel 80286手册中已经提出了保护模式,但实际上它只是一个指引。80286虽然有了保护模式但其依然是16位的CPU,其通用寄存器还是16位宽,只不过其地址线由20位变成了24位,即寻址空间扩大到了16MB(但受限于寄存器位宽,单个寄存器的寻址空间仍然为64KB)。80286只是一个“过渡”产品,很快就被淘汰。

    真正的32位地址出现在Intel 80386上,它的地址总线和寄存器都是32位的,因此其单寄存器的寻址空间扩大到了4GB——在当时甚至其后的数年,仅通过段内偏移地址都足以访问内存的任意角落,这也开启了“平坦模型”的时代。

    保护模式本身是80286及以后的x86系列处理器产生的一种操作模式,它具有许多特性设计为提高系统的多道任务和系统的安全性及稳定性——例如内存的保护,分页机制和硬件虚拟存储的支持。现代多数的x86处理器操作系统都运行在保护模式下,包括Linux, Free BSD, 和Windows3.0(它也运行在实模式下,为了和Windows 2.x应用程序兼容)及以后的版本。

    在保护模式中,内存的管理模式分为两种——段模式和页模式。其中页模式也是基于段模式的。也就是说,保护模式的内存管理模式事实上是:纯段模式和段页式。进一步说,段模式是必不可少的,而页模式则是可选的——如果使用页模式,则是段页式,否则这是纯段模式。

    为了改进实模式下内存访问的不安全性,保护模式给内存段添加了段属性来限制用户程序对内存的操作权限。保护模式引入了全局描述符表(Global Descriptor Table,GDT),GDT的表项是描述段类型属性的数据结构——段描述符。GDT中的每一个段描述符都描述了一个内存段的基本属性,如段基址、段界限、类型、DPL等等。

    正是由于以上概念的提出,使得“段地址:段内偏移地址”的访问策略从实模式下对物理地址的直接映射变成了保护模式下对GDT或LDT的间接映射(如下图所示),进程在访问内存段(无论是数据段还是代码段)前都需要通过特权级检查。段属性的加入让用户程序对内存的访问不再“为所欲为”。
    在这里插入图片描述

    展开全文
  • 进入保护模式-汇编学习之路

    千次阅读 2017-02-14 14:26:44
    在实模式下由于对内存的保护不是特别的完善,一个段可以任意访问访问不是该段范围内的内存。例如以下一个小例子 mov cx,0x8000 push ds mov ds,cx mov [0x05],dx pop ds 这个例子就说明了先保存当前的数据段...
  • redis关闭保护模式

    千次阅读 2019-03-28 16:15:13
    redis在启动的时候默认会启动一个保护模式,只有同一个服务器可以连接上redis。别的服务器连接不上这个redis 解决办法:关闭保护模式 1、进入redis安装目录找到conf目录下的redis.conf文件 vi redis.conf 注释bind...
  • 80386开始,CPU有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到操作系统运行起来以后就切换到protected-mode。实模式只能访问地址在1M以下的内存称为常规内存,我们把地址...
  • Eureka 的自我保护模式
  •  从80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行在保护模式。  实模式只能访问地址在1M以下的内存称为常规内存,我们...
  • 上一篇文章初步进入保护模式的学习。首先学习了全局描述符表GDT。点击链接查看上一篇文章:全局描述符表 本篇文章继续学习,GDT中存放的条目:描述符,确切的说是段描述符。学习段描述符的作用以及段描述符的格式。 ...
  • 驱动程序9--实模式,保护模式,虚拟8086模式 (2010-01-07 00:23:04) 转载▼     实模式,保护模式,虚拟8086模式 本打算这个笔记是昨天写的,但是一提笔笔者就迷茫了,我该如何去写呢...
  • 本篇文章开始,学习保护模式下的的各种机制。什么是保护模式呢? 一般来说,操作系统负责整个计算机软硬件的的管理,它做任何事情都是可以的。但是用户程序就应当有所限制,用户程序它只能访问自己的数据自己的代码...
  • 386及更高型号处理器使用内存分页机制,这使得同一个线性地址可以被映射为多个物理地址,这种映射...此外正如保护模式下的段寄存器提供对整个段的访问控制一样,分页单元在更细粒度的页级层面上提供对整个页的保护机制
  • 上一篇文章学习了保护模式下的任务与任务隔离,以及简单介绍了保护模式下的特权级的概念。点击链接查看上一篇文章:任务与任务隔离 今天具体来学习一下保护模式下的特权级保护。 主要学习以下内容; 描述符特权级...
  • 上一篇文章学习了:保护模式七:调用门与依从的代码段----特权级保护 主要学习了以下内容: 描述符特权级(目标对象的特权级)DPL 描述符特权级(目标对象的特权级)DPL 当前特权级CPL 低特权级的应用调用高...
  • 本文是将个人的关于《X86汇编语言-从实模式到保护模式》读书笔记做一个整体的目录,方便自己复习查阅。 一共40篇博文,最初是想自己记录笔记,为了不会丢失所以选择了写成博客。 本博文并没有非常细致的去详细...
  • 深入分析QQ键盘保护技术

    千次阅读 2010-07-01 12:18:00
    QQ键盘加密保护分析 让我们现在开始进入正题,QQ键盘加密保护主要依赖的是QQ目录下的3个文件,分别是npkcrypt.sys、npkcusb.sys和npkcrypt.vxd,其中起主要作用的是npkcrypt.sys。在以前的版本中,有些盗...
  • QQ 键盘加密保护分析

    千次阅读 2011-02-21 15:58:00
    让我们现在开始进入正题, QQ 键盘加密保护主要依赖的是 QQ 目录下的 3 个文件,分别是 npkcrypt.sys 、 npkcusb.sys 和 npkcrypt.vxd ,其中起主要作用的是 npkcrypt.sys 。在以前的版本中,有些盗号木马会对这几个...
  • 上一篇文章学习了:OS学习笔记】三十五 保护模式十:中断描述符表、中断门和陷阱门 本篇文章接着上一篇文章学习中断任务。 我们在前面文章中一直在说通过中断发起任务切换,本文就是将之前没有说明白的内容:通过...
  • 1.实模式 80X86系列CPU中,最早的是8086,它有20根地址线,可以寻址1MB(2^20)内存空间。 很自然地,如果CPU要跟主存交换信息,它也必须有20位的物理地址,但是,8086CPU内部是16位的结构,它里面跟地址有关的...
  • 设置QQ浏览器中页面的护眼模式

    千次阅读 2015-11-23 17:48:17
    今天一直盯着电脑屏幕感觉眼睛很累,自己用的QQ浏览器,想设置一下护眼模式,但是找了半天都没有找到.于是百度终于找到了方法.下面分享给大家. 第一步: 点击进入应用中心 2. 搜索栏里面输入 眼睛护航 ,并安装应用 ...
  • 深入分析与破解QQ键盘加密保护

    千次阅读 2009-03-06 00:51:00
    深入分析与破解QQ键盘加密保护——反nProtect技术武汉大学计算机学院信息安全04级11班 禤彪/文 摘要:本文对QQ的nProtect密码安全输入控件保护技术进行了分析,并针对其破解思路进行了描述和实现,本文还给出了关键...
  • http://www.vckbase.com/document/viewdoc/?id=1860如何截取QQ密码和聊天内容、去掉QQ广告栏、添加QQ尾巴作者:谢...增加QQ尾巴 去掉QQ广告栏 郑重申明 结束语 前言 中国网民没有不熟悉QQ的,QQ玩家没有不知道珊瑚虫和

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,636
精华内容 8,254
关键字:

qq进入保护模式