狗年头号盗窃案——谁偷了我的内存

来源 :电脑爱好者 | 被引量 : 0次 | 上传用户:huanan_0909
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  2006年刚到,稀饭编辑部就接到了一位匿名读者的“报案”。经过编辑部诸位高手的调查后,决定将此案件定性为“狗年头号盗窃案”!
  
  稀饭编辑部案情研讨会[会议记录]
  编辑A:“现在内存这么便宜!偷了再买呗!”
  编辑B:“这不是买不买的问题,现在问题的关键是谁偷了内存,究竟是装机器的奸商虚报了内存容量?还是Windows本身内存占用过多?或者是软件隐瞒了真实的内存使用情况!”
  编辑C:“那就分头调查去吧!”
  大家的效率非常高,刚说完就做鸟兽散状……
  
  


    图1

  调查结果1:进程内存分配揭秘
  要调查内存的使用情况,当然就得从Windows系统本身开始讲起。以Windows 2000/XP为例,在运行程序时,Windows会将这个程序文件装载到内存中,然后为其分配独立的地址空间,这就好比一家公司招了新员工之后要为其分配工位一样。
  1.什么叫进程
  很多程序在运行多次后会提示“只允许一个进程实例”,那么进程究竟是什么呢?进程可以理解为一个运行中的程序的实例。只允许同时运行一个实例的程序(比如杀毒软件)其实就是在程序开始运行时检测一下进程列表中是否有了该程序的进程存在,如果有则退出,而新版本的QQ也使用了这种技术,当你试图打个N个QQ时,就会收到不能打开更多QQ的错误提示。
  2.进程和线程的区别
  上期的《看清破绽 誓与BUG斗争到底》中提到MailWasher等软件由于界面和运算没有使用多线程而造成假死,那进程和线程有什么区别呢?你可以把进程想像成一个接线板,接线板本身并不实现任何家电的功能,但家电把插座插上接线板之后就能开始工作了,线程就是各种各样不同的家电,有的用来看电视,有的用来洗衣服。Windows规定每个进程至少要有一个线程(称为默认线程),而当一个进程中包含多个线程时,这些线程都可以共享一个进程的内存资源。
  


    图2

  3.不同程序之间能不能共享内存
  Windows 9x与Windows 2000/XP最大的不同就在于:前者将所有进程所使用的内存放在一起,而后者则为每一个进程分配独立的内存,也就是说进程间是不能互相读取内存的,比如QQ是不会知道MSN在内存中保存了些什么的。在Windows 9x中程序可以直接读取某个地址中的内存,而在Windows 2000/XP中这是不允许的。
  
  调查结果2:Windows的内存有“假”
  虽然现在内存非常便宜,不过要让每个人都装上数GB的内存条显然也是不可能的,还好在那一寸内存一寸金的时代,有人发明了虚拟内存技术。所谓虚拟内存,就是在硬盘空间中开辟出一块空间,供系统读取和写入本来要在内存上读写的数据。
  1.虚拟内存能不能替代物理内存
  虚拟内存的管理是在由操作系统的“软”方法模拟实现的,系统本身必须通过物理内存才能启动,没有启动系统就没有办法使用虚拟内存,所以说要让虚拟内存完全替代物理内存就好像讨论先有鸡还是先有蛋一样……
  2.虚拟内存是不是越大越好
  硬盘的速度快还是内存的速度快?当然是内存。虚拟内存其实就是硬盘中的临时文件,所以虚拟内存的速度是无法和物理内存相提并论的。在可能的情况下,我们应该尽可能使用物理内存。
  3.能不能把虚拟内存禁用了
  如果你是一个有数GB物理内存的有钱人,那么看了上面那句“虚拟内存的速度……”之后肯定会想方设法把虚拟内存设得更小,最直接的方法就是直接禁用。有一句话叫物极必反,虚拟内存也是如此,如果完全禁用虚拟内存的话,你的系统就会出现各种各样奇怪的故障,比如运行Photoshop等大程序时出现错误,玩游戏时错误退出等。
  
  


    图3

  调查结果3:
  “任务管理器”隐瞒内存占用
  软件说明中的“仅占用xxKB/MB”内存大多都是指该程序在运行时所占的物理内存,而并不包括虚拟内存,在“任务管理器”的“进程”选项卡中见到的“内存使用”也是物理内存!网站上写得不亦乐乎的软件评测中也没有发现“任务管理器”的骗局!
  1.逼“任务管理器”说真话
  打开“任务管理器”,选择菜单“查看→选择列”,勾选“虚拟内存大小”(见图2),点击“确定”,然后把“任务管理器”的窗口横向拉大,就能看到每个进程所占用的虚拟内存了。
  软件的真实内存占用=“内存使用”+“虚拟内存大小”
  2.除了隐瞒,还有欺骗
  故意不标虚拟内存使用情况的行为称为隐瞒,那么在软件编写时故意将“任务管理器”默认显示的物理内存占用减小,转移到看不见的虚拟内存中,这种行为就称为欺骗了。在Windows提供的程序接口(即用来帮助应用程序调用系统功能的开关)中,提供了一个内存转移函数,在编写程序时只需加入这条函数,就能把程序运行时占用的物理内存转移到虚拟内存中去。很多软件就是用了这个不见光的技巧欺骗了大家的眼睛,不过别以为这个函数只能用来干坏事,内存整理工具也用了此方法,但它是用此技术来调整物理内存及虚拟内存的比例,并以此提高系统效率的。
  3.逼出来的一定是真话吗
  在“任务管理器”已经可以计算每个进程所用的内存总值了,但这样的计算方式一定保险吗?有很多种技术可以使内存占用完全“隐身”,比如虚拟设备、进程插入等,这类技术在杀毒软件中应用得非常广泛。
  
  小提示
  
  结果已经显而易见了,是软件和“任务管理器”一起偷走了那位不幸读者的内存。同时我们又发现了很多有意思的东西,比如杀毒软件的虚拟设备及进程插入技术,那就一起给“侦破”了吧!
  
  意外收获:杀毒软件的系统资源占用
  稀饭编辑部派出的精锐调查小组果然不俗,侦破一个案件后竟然又发现了另一个案件的线索,于是突发案件调查行动又开始了。只一杯茶的工夫,一份关于杀毒软件制造“眼球陷阱”的报告就出现在了调查小组组长的桌子上……
  眼球陷阱1:伪装成硬件抢内存
  杀毒软件要查杀病毒,就必须抢在病毒之前得到系统控制权,为什么?要用一个应用程序级别的杀毒软件去对抗一个驱动级的病毒简直是天方夜潭。简言之,要杀毒,就必须比病毒更“毒”,所以杀毒软件中通常会在系统中安装虚拟设备驱动(见图3),让自身嵌入到操作系统的最底层。在系统看来,杀毒软件嵌入的虚拟设备就和真实的硬件一样,而这些虚拟设备所占用的内存和CPU时间在“任务管理器”中是看不见的。
  眼球陷阱2:插入其他进程中
  在上文中大家已经知道了进程中可以包含多个线程,而Windows中提供了一种机制,能够让某个进程将自身或自身的一部分(DLL文件)插入到别的进程中去,作为一个线程来运行,这种技术称为“进程插入”。就像特工一样,将看门的打晕,然后穿上他的衣服,混入某座大楼中……这样在“任务管理器”中就无法看到这个被插入的程序在运行了。
  进程中的每个线程都能访问这个进程中共享的内存资源,很多盗号木马使用进程插入除了隐蔽性的考虑外,还有另一个目的,那就是盗取被插入进程的共享内存资源,比如QQ的内存中包含了当前用户输入的QQ号和密码,如果一个木马插入了QQ的进程,那它就能够读取到这些信息!更恐怖的事情还不止如此,在插入进程后,这个“间谍”线程占用的内存和CPU资源都“嫁祸”给了被插入的进程头上。
  
  TIPS
  小提示
  Windows默认的“任务管理器”只能列出系统中的所有进程,当你需要查杀木马或恶意程序时肯定想知道每个进程中究竟加载了哪些模块(使用了哪些DLL文件),那么就需要使用更好的进程管理工具,比如Process Explorer(下载地址:http://www.onlinedown.net/soft/31805.htm)。
  
  TIPS
  小提示
  ★右击“我的电脑”选择“属性”,在“常规”选项卡中可以看到物理内存大小,在“高级”选项卡中点击“性能→设置”,在“性能选项”窗口的“高级”选项卡中点击“更改”,就能自由设置虚拟内存的大小和位置(见图1)。
  
  TIPS
  小提示
  ★Windows默认分配的内存为物理内存的1.5倍,一般情况下使用这个设置即可,如果你的内存在1GB以上,建议将虚拟内存的默认“初始大小”设置为1GB或以下。虚拟内存的默认位置也不建议更改,除非你的系统分区空间紧张。
  
  TIPS
  小提示
  内存整理、优化工具在使用时应注意不要将转移量设得过高,否则应用程序需要的数据都被转移虚拟内存中,在实际使用时反而会降低效率。
  
  TIPS
  小提示
  杀毒软件加入的虚拟设备在软件本身卸载后可能还存在,这些设备有可能导致兼容性问题,所以建议在“设备管理器”中选择“查看→显示隐藏设备”,然后找出未卸载掉的虚拟设备并手动删除(一般这类设备的名称中都带有软件本身或厂商的名称)。
  
其他文献
叩凳蟊昃鸵欢ê糜茫课⑷怼⒙藜嫉绕放频氖蟊耆肥捣浅:糜茫痹诟鞔舐厶持卸挤从沉苏饫嗍蟊昊岱⑸恍┢婀值墓收稀1热缇涞奈⑷鞩E4.0,就有很多用户使用了一段时间后出现了连击的问题,而将故障鼠标拿到别人的机器上,却有可能什么毛病都没有!?通过修改系统中的设置,你可以很容易地拯救回连击鼠标。右击“我的电脑”选择“属性”,在“硬件”选项卡中点击“设备管理器”,展开“通用串行总线控制器”,双击打开其下含
期刊
1.桌面背景现身法  先隐藏桌面上所有的图标和任务栏,在桌面上右击“属性”,首先选中“桌面”标签,选择“无”,再选中其中的“外观”标签,点击“高级”,在该界面中“项目”的下拉菜单中选定“桌面”。之后在“颜色”的下拉选择中分别点选颜色为白色、黑色、蓝色、红色等各种颜色,之后点击“应用”即产生效果。  2.附件画图显像法  打开系统自带的“画图”工具,“Ctrl+E”将宽度和高度调整为与屏幕一样大小(
期刊
大家都知道IP地址是用来唯一标识因特网上的一台终端设备,而IP地址在划分时是根据国家、地区来分的,因此IP地址往往也能侧面地代表对方所在的地理位置。你只要在浏览器中打开http://www.blueforge.net/map/,不仅能得到IP地址对应的地理位置(如“北京市海淀区ADSL”),还能直接在Google的卫星地图上看到该IP地址对应地区的地图位置。你还可以通过用鼠标设定地图比例尺(地图左
期刊
看过本刊2006年1期的读者,一定对于使用Dreamweaver编辑制作网页的“特别话题”有印象。Dreamweaver的确强大,但是在制作网页领域,还有相当多的读者使用Front Page 2003来制作网页。由于它是Office 2003的组件之一,使得很多办公族更愿意使用它。它的交互性、易用性以及同其他微软产品的兼容性,都是其他同类产品不能比拟的,我们收集了一些和它相关的技巧,以飨读者。  
期刊
解决Word打开错误问题  前一段我打开Word时,出现了错误,提示重启,并且要发送错误日志,但可以进入Word的安全模式,退出后又会出错,请问是什么原因呢?  答:你的问题可能是由于保存在C:\Documents and Settings\用户名\Application Data\Microsoft\Templates文件夹下的NORMAL.DOT出错了,一般删除此文件就可以解决问题。如果删除后
期刊
家里有两台电脑,需要同时上网,应该怎么办?你知道最简单的方法吗?相同的站点,明明是别人都可以访问,可是你就是上不去,这是什么原因?总听别人说什么“用代理”,“找代理服务器”,可是它到底是什么呢?带着这些疑问,我们开始了解“代理服务器”    本文可以帮你学到  1.当需要多机共享上网时,你需要了解什么是代理;  2.当网管限制你上网时,你需要掌握如何突破他们的限制;  3.当遇到不能访问的站点时,
期刊
开机出现黑屏错误提示  我的系统是Windows XP SP2,不过IE没有升级过几回。听朋友说不升级IE很容易得网页木马,我一直不太相信,可是最近却真的中招了!一次我上了一个游戏网站,上完之后就觉得有点异样,然后重启之后防火墙突然报告在系统目录下发现了木马病毒,杀毒软件对于几个文件查杀失败。再次重启之后更离谱了,直接跳出个黑屏显示“无法输入C\$NtUninstall125926809$\sp4
期刊
正常启动后发出“嘀”声响三次  一台计算机,具体配置如下:Intel Celeron D 320 2.4GHz、MSI 845PE Neo-L、NVIDIA GeForce FX 5200 Ultra、Kingston DDR 400、希捷 80GB 2MB缓存 7200转、BenQ 16X,启动自检时发出“嘀”声响三次,然后才能进入Windows XP操作系统,请问这是什么问题造成的?    答
期刊
FlashFXP总是频繁断开连接  我刚做了个网站,申请了空间和域名,在使用FlashFXP将其上传至网站空间中时,只要我停止上传文件操作,FlashFXP就会自动断开连接,接下来还得继续重新连接站点。请问如何让FlashFXP一直保持连接?      答:不同的站点服务器的设置参数不同,空闲连接自动断开的时间间隔值可能也不同,如果站点服务器设置的自动断开连接的时间值短就会出现频繁的断开连接现象。
期刊
在网络上,有一些东西我们可能并不了解,却已经在不知不觉中享受到了它们带来的便利,数字证书便是其中之一。对于经常使用网上银行的用户来说,数字证书更是一张看不见的“保护网”,在你使用的过程中无时无刻不在为你保驾护航。可以预见的是,已经在互联网上的各种业务和应用中得到广泛使用的数字证书,将会在我们的网络生活中发挥越来越重要的作用。那么,你了解数字证书技术吗?你知道数字证书可以应用在哪些方面吗?你想让数字
期刊