MSN保护盾1.0下载 微软携手金山软件合力打造
作者:天晴无名氏 日期:2008-10-28 11:36
超级加花器v1.8
作者:天晴无名氏 日期:2008-05-03 15:26
Switch Session Clone
作者:天晴无名氏 日期:2008-03-18 18:40
黑吧VIP教程之软件破解班[第七课]
作者:天晴无名氏 日期:2007-12-08 17:41
蚂蚁帝国6.4 6.5 生成器
作者:天晴无名氏 日期:2007-11-30 16:20
图片:
Tracks Eraser Pro7.0
作者:天晴无名氏 日期:2007-11-24 19:15
(转贴)很多所谓对内存占用小的软件是最为伤硬盘的!
作者:天晴无名氏 日期:2007-03-11 15:45
我实在不愿意提起这个话题.后来在网上看到几篇文章,深深感觉到,已经有程序员站出来,揭穿这个忽悠了千百万用户的诡计了...
请一味追求低内存软件的用户们注意了:什么才应该是选择软件的主要因素.
以下内容需要你对虚拟内存和内存有所了解,但目的只是告诉大家,这些所谓对内存占用小的软件是最为伤硬盘的!
很多人都用过天气秀、雪狐、曰历秀、桌面秀等等桌面软件。这类软件有个最大的特点就是在任务管理器里看,内存占用N小,比记事本都小,只有几百K。很多人就是冲着这点才用这些软件的。
但是,也许大家不知道,这些软件才是占用资源的大户。
这些软件占用资源为什么这么少呢?
Windows编程里有个方法叫做SetProcessWorkingSetSize,对编程有所了解的可以搜索一下。这个方法能够设定程序所占用的内存数(当然有一个最小值)。
比如你打开一个程序,把它最小化,再看任务管理器,里面占用的内存数就是它所使用的最小值,其他暂时用不到的代码就被放到了虚拟内存里。但是,这样做,是影响性能Windows把最多的内存分配给了前台正在运行的程序。
而天气秀等软件所号称的内存压缩技术,就是调用这个SetProcessWorkingSetSize,把内存中的程序代码放到虚拟内存里,调用一次还不够,因为程序运行内存占用不停变化。所以要设定一个Timer(计时器),每隔一段时间就调用一次(通常是几毫秒)。
虚拟内存是指硬盘上的一部分空间。也就是说,当这些软件运行时,每隔几毫秒,你的电脑CPU就要强制把内存中的代码放到硬盘上--往硬盘不停地写。
说实话,这种方式来实现内存占用少(实际上并没有少)很BT。
上面所提到的方法SetProcessWorkingSetSize,是微软提供给程序员的一个方法(或称函数)。
所以在这里,提醒大家:千万不要相信宣传!这些所谓对内存占用小的软件是最占资源最为伤硬盘的!
物理内存和虚拟内存
物理内存,在应用中,自然是顾名思义,物理上,真实的插在板子上的内存是多大就是多大了.看机器配置的时候,看的就是这个物理内存.
如果执行的程序很大或很多,就会导致物理内存消耗殆尽.为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张.
一个程序,不可避免地要用到虚拟内存,因为不频繁执行或者已经很久没有执行的代码,没有必要留在物理内存中,只会造成浪费;放在虚拟内存中,等执行这部分代码的时候,再调出来.
Windows 的任务管理器可以帮助我们看到进程的虚拟内存.调出任务管理器,点击菜单“查看”-“选择列”,在出现的窗口中,钩上“虚拟内存大小” 点“确定”,这个时候,进程列表中已经显示各进程的虚拟内存大小
一个程序到底应该使用多少虚拟内存呢?不一定,但是应该以恰到好处的符合虚拟内存原本作用为最好.
下面将揭穿表面看起来调用了大量图片、大量运行库的程序,为什么才“占用”不到 1 MB 的内存的诡计.
原来是 SetProcessWorkingSetSize 函数
MSDN 对该函数的表述(翻译):使用这个函数来设置应用程序最小和最大的运行空间,只会保留需要的内存.当应用程序被闲置或系统内存太低时,操作系统会自动调用这个机制来设置应用程序的内存.应用程序也可以使用 VirtualLock 来锁住一定范围的内存不被系统释放;当你加大运行空间给应用程序,你能够得到的物理内存取决于系统,这会造成其他应用程序降低性能或系统总体降低性能,这也可能导致请求物理内存的操作失败,例如:建立 进程,线程,内核池,就必须小心的使用该函数.
也就是说,该函数不是节省内存,而是强制把进程的物理内存搬到虚拟内存中.
另外有一些资料上说,该函数“将有可能导致缺页中断,严重影响性能”.
函数原型:
BOOL SetProcessWorkingSetSize(
HANDLE hProcess,
SIZE_T dwMinimumWorkingSetSize,
SIZE_T dwMaximumWorkingSetSize
);
我们用 VB 来做这么一个简单的例子,是程序占用 300 KB 内存吧.
建立一个标准的 VB 工程,在 Form1 中放置一个 Timer1 ,把 Interval 属性设置为 1000 (即 1 秒).然后在代码编辑框中输入以下代码:
Private Declare Function SetProcessWorkingSetSize Lib "kernel32" (ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByVal dwMaximumWorkingSetSize As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Sub Timer1_Timer()
SetProcessWorkingSetSize GetCurrentProcess(), 50000, 100000
End Sub
然后生成 工程1.exe,执行,调出任务管理器查看,发现内存占用才 320 KB.如果把定时器关闭,这进程的内存一般 4 MB左右.
必须定时执行该函数,否则虚拟内存会慢慢被调出来,恢复原来的内存大小.
如果要使一个本来需要占用大量内存的程序减低到几百 KB ,使用同样的方法即可.
诡计带来的危害
如果 SetProcessWorkingSetSize 函数被正常使用,是非常有用处的.但是为了蒙骗用户的眼睛,每秒,甚至几十毫秒就把大量内存往虚拟内存里面压,就会带来无可预计的危害.看看这篇文章怎么说:“因为他只是暂时的将应用程序占用的内存移至虚拟内存,一旦,应用程序被激活或者有操作请求时,这些内存又会被重新占用.如果你强制使用该方法来设置程序占用的内存,那么可能在一定程度上反而会降低系统性能,因为系统需要频繁的进行内存和硬盘间的页面交换.”.
没错,如果你使用了这类软件,意味着你的硬盘将每秒将 I/O 大量数据;硬盘的磁针将拼命旋转...(当然硬盘磁针不可能不旋转^_^,只是选择得更厉害而已).
不是说 BT 很伤内存吗?不然,因为现在大多 BT 软件都有缓存技术.且看 Bitcomet 官方对缓存技术的说明:“传统BT高速下载时硬盘会响得很厉害,这是大量的随机读取造成的.... BitComet可以由用户设置缓存大小.... 可以明显地看出牺牲一小部分内存作缓存对硬盘的保护作用.”
是不是有种心寒的感觉?一类软件宁愿牺牲内存,也要减少保护硬盘;而另外一类软件,却为了欺骗用户,让CPU、硬盘更加奔波......
抓一个凶手
这类软件不少,我以其中一个桌面工具为例,揭穿它的假面具(不点名字了).运行该软件后,随意操作一下,然后打开进程管理器,把虚拟内存列调出来,找到该进程
OK,20 MB 虚拟内存,而只有 632 KB 物理内存.细心的你会发现,大概每 1 秒,该行都有闪烁的感觉,没错,这正是每秒调用 SetProcessWorkingSetSize 的结果.另外,我们打开 Norton Process Viewer ,查看该进程的 CPU 占用情况
可以看到,就算没有操作该软件,但是每秒,都有 3% 的CPU占用起伏(虽然这并不能说明什么).另外,内存框中可以看到物理内存和虚拟内存的占用,两者相去甚远.此外,可以用 Hook API 技术来证明每秒调用 SetProcessWorkingSetSize 的行为.
应该怎么做
这篇文章只想让用户了解软件占用资源的实际.而程序员应该把下功夫,真正从代码中减少内存的消耗,而不是一味忽悠用户.调用 SetProcessWorkingSetSize 会带来某些好处,但是何时调用、如何调用应该符合两个要求:
1,在程序暂时不被使用的时候(例如最小化);
2,物理内存和虚拟内存应处于一个合适的比例(而不是 600 KB 比 20 MB 这么荒唐);
3,或者不调用,让 Windows 去处理.
(本人技术有限,对于文中的错误恳请高手给予指正)
请一味追求低内存软件的用户们注意了:什么才应该是选择软件的主要因素.
以下内容需要你对虚拟内存和内存有所了解,但目的只是告诉大家,这些所谓对内存占用小的软件是最为伤硬盘的!
很多人都用过天气秀、雪狐、曰历秀、桌面秀等等桌面软件。这类软件有个最大的特点就是在任务管理器里看,内存占用N小,比记事本都小,只有几百K。很多人就是冲着这点才用这些软件的。
但是,也许大家不知道,这些软件才是占用资源的大户。
这些软件占用资源为什么这么少呢?
Windows编程里有个方法叫做SetProcessWorkingSetSize,对编程有所了解的可以搜索一下。这个方法能够设定程序所占用的内存数(当然有一个最小值)。
比如你打开一个程序,把它最小化,再看任务管理器,里面占用的内存数就是它所使用的最小值,其他暂时用不到的代码就被放到了虚拟内存里。但是,这样做,是影响性能Windows把最多的内存分配给了前台正在运行的程序。
而天气秀等软件所号称的内存压缩技术,就是调用这个SetProcessWorkingSetSize,把内存中的程序代码放到虚拟内存里,调用一次还不够,因为程序运行内存占用不停变化。所以要设定一个Timer(计时器),每隔一段时间就调用一次(通常是几毫秒)。
虚拟内存是指硬盘上的一部分空间。也就是说,当这些软件运行时,每隔几毫秒,你的电脑CPU就要强制把内存中的代码放到硬盘上--往硬盘不停地写。
说实话,这种方式来实现内存占用少(实际上并没有少)很BT。
上面所提到的方法SetProcessWorkingSetSize,是微软提供给程序员的一个方法(或称函数)。
所以在这里,提醒大家:千万不要相信宣传!这些所谓对内存占用小的软件是最占资源最为伤硬盘的!
物理内存和虚拟内存
物理内存,在应用中,自然是顾名思义,物理上,真实的插在板子上的内存是多大就是多大了.看机器配置的时候,看的就是这个物理内存.
如果执行的程序很大或很多,就会导致物理内存消耗殆尽.为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张.
一个程序,不可避免地要用到虚拟内存,因为不频繁执行或者已经很久没有执行的代码,没有必要留在物理内存中,只会造成浪费;放在虚拟内存中,等执行这部分代码的时候,再调出来.
Windows 的任务管理器可以帮助我们看到进程的虚拟内存.调出任务管理器,点击菜单“查看”-“选择列”,在出现的窗口中,钩上“虚拟内存大小” 点“确定”,这个时候,进程列表中已经显示各进程的虚拟内存大小
一个程序到底应该使用多少虚拟内存呢?不一定,但是应该以恰到好处的符合虚拟内存原本作用为最好.
下面将揭穿表面看起来调用了大量图片、大量运行库的程序,为什么才“占用”不到 1 MB 的内存的诡计.
原来是 SetProcessWorkingSetSize 函数
MSDN 对该函数的表述(翻译):使用这个函数来设置应用程序最小和最大的运行空间,只会保留需要的内存.当应用程序被闲置或系统内存太低时,操作系统会自动调用这个机制来设置应用程序的内存.应用程序也可以使用 VirtualLock 来锁住一定范围的内存不被系统释放;当你加大运行空间给应用程序,你能够得到的物理内存取决于系统,这会造成其他应用程序降低性能或系统总体降低性能,这也可能导致请求物理内存的操作失败,例如:建立 进程,线程,内核池,就必须小心的使用该函数.
也就是说,该函数不是节省内存,而是强制把进程的物理内存搬到虚拟内存中.
另外有一些资料上说,该函数“将有可能导致缺页中断,严重影响性能”.
函数原型:
BOOL SetProcessWorkingSetSize(
HANDLE hProcess,
SIZE_T dwMinimumWorkingSetSize,
SIZE_T dwMaximumWorkingSetSize
);
我们用 VB 来做这么一个简单的例子,是程序占用 300 KB 内存吧.
建立一个标准的 VB 工程,在 Form1 中放置一个 Timer1 ,把 Interval 属性设置为 1000 (即 1 秒).然后在代码编辑框中输入以下代码:
Private Declare Function SetProcessWorkingSetSize Lib "kernel32" (ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByVal dwMaximumWorkingSetSize As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Sub Timer1_Timer()
SetProcessWorkingSetSize GetCurrentProcess(), 50000, 100000
End Sub
然后生成 工程1.exe,执行,调出任务管理器查看,发现内存占用才 320 KB.如果把定时器关闭,这进程的内存一般 4 MB左右.
必须定时执行该函数,否则虚拟内存会慢慢被调出来,恢复原来的内存大小.
如果要使一个本来需要占用大量内存的程序减低到几百 KB ,使用同样的方法即可.
诡计带来的危害
如果 SetProcessWorkingSetSize 函数被正常使用,是非常有用处的.但是为了蒙骗用户的眼睛,每秒,甚至几十毫秒就把大量内存往虚拟内存里面压,就会带来无可预计的危害.看看这篇文章怎么说:“因为他只是暂时的将应用程序占用的内存移至虚拟内存,一旦,应用程序被激活或者有操作请求时,这些内存又会被重新占用.如果你强制使用该方法来设置程序占用的内存,那么可能在一定程度上反而会降低系统性能,因为系统需要频繁的进行内存和硬盘间的页面交换.”.
没错,如果你使用了这类软件,意味着你的硬盘将每秒将 I/O 大量数据;硬盘的磁针将拼命旋转...(当然硬盘磁针不可能不旋转^_^,只是选择得更厉害而已).
不是说 BT 很伤内存吗?不然,因为现在大多 BT 软件都有缓存技术.且看 Bitcomet 官方对缓存技术的说明:“传统BT高速下载时硬盘会响得很厉害,这是大量的随机读取造成的.... BitComet可以由用户设置缓存大小.... 可以明显地看出牺牲一小部分内存作缓存对硬盘的保护作用.”
是不是有种心寒的感觉?一类软件宁愿牺牲内存,也要减少保护硬盘;而另外一类软件,却为了欺骗用户,让CPU、硬盘更加奔波......
抓一个凶手
这类软件不少,我以其中一个桌面工具为例,揭穿它的假面具(不点名字了).运行该软件后,随意操作一下,然后打开进程管理器,把虚拟内存列调出来,找到该进程
OK,20 MB 虚拟内存,而只有 632 KB 物理内存.细心的你会发现,大概每 1 秒,该行都有闪烁的感觉,没错,这正是每秒调用 SetProcessWorkingSetSize 的结果.另外,我们打开 Norton Process Viewer ,查看该进程的 CPU 占用情况
可以看到,就算没有操作该软件,但是每秒,都有 3% 的CPU占用起伏(虽然这并不能说明什么).另外,内存框中可以看到物理内存和虚拟内存的占用,两者相去甚远.此外,可以用 Hook API 技术来证明每秒调用 SetProcessWorkingSetSize 的行为.
应该怎么做
这篇文章只想让用户了解软件占用资源的实际.而程序员应该把下功夫,真正从代码中减少内存的消耗,而不是一味忽悠用户.调用 SetProcessWorkingSetSize 会带来某些好处,但是何时调用、如何调用应该符合两个要求:
1,在程序暂时不被使用的时候(例如最小化);
2,物理内存和虚拟内存应处于一个合适的比例(而不是 600 KB 比 20 MB 这么荒唐);
3,或者不调用,让 Windows 去处理.
(本人技术有限,对于文中的错误恳请高手给予指正)
去广告显ip辅助软件不能及时发布的原因探究
作者:天晴无名氏 日期:2006-12-30 21:23
首先声明,本文并没有责怪谁和催促谁的意思,纯粹只是想探讨下原因,权当等待新版过程中的娱乐,希望不要乱扔砖头。个人观点,仅供参考!
腾讯QQ2006正式版12月21日就已发布了,而珊瑚和filtered等典型的去广告显ip辅助外挂到现在还没有出来。到底什么原因呢?他们都没有实质性的解释。
根据以往的惯例,官方版本出来以后三日内必出辅助外挂,但是这次着实等的够长,都10多天了,虫子和filtered都在还没有动静,但又都纷纷辟谣,做些模棱两可的解释。其实,综合各种情况分析来看,迟延发布原因大致如下:
1.技术原因。这次腾讯的内核改动很大,确实需要花相当大的精力和相当长的时间才能写出辅助外挂。但是这个理由似乎不太成立,因为,对于两个辅助软件的老大们来说,在这个技术行当上吃了这么多年的饭,技术上根本不成问题,filtered的老大也在坛子里说了:技术上不是问题。由此推断,既然技术上不成问题,那就没有理由会需要这么长的时间,应该是下面别的原因了。
2.法律原因。据说,腾讯为了自己的商业利益,在从技术上无法打压辅助软件后,企图通过法律途径来解决问题,但是虫子和filtered的用户群强大的让腾讯有些投鼠忌器,怕一旦真正通过法律打压下去了,会丢失庞大的QQ用户,而改投msn和uc等的名下,这是腾讯不愿意看到也不想看到的。所以对于腾讯来说,为了自己广告等商业利益,要正告虫子和filtered等等,不要再出什么修改版和外挂版了。坊间传闻的收到了腾讯的律师函等云云也就有些道理了,毕竟无风不起浪嘛。但是腾讯又不能做的太绝,或者说腾讯绝对不会把虫子和filtered告到法庭上,原因是告倒了虫子和filtered,腾讯的损失可能会更大,用户数锐减是必然的。各位大哥大姐,你说假如你红红火火的公司因为官司导致客户却越来越少,那意味着什么我想大家都知道吧!所以,基于上述原因,腾讯显然想禁止虫子和filtered,但又不能做的太绝,毕竟外挂也都声明了用于研究和学习且告知公众腾讯官方版权,不是用于商业利益,虽然腾讯凭借其强大的经济实力和稳固的政商关系可能赢得官司易如反掌,但是它不会那么蠢的真的去对搏公堂;虫子和filtered显然都有些顾虑,但又不是特别的在意,只是想让时间来消磨大家的意志,注意是时间,当然最主要的是消磨腾讯的意志。我想,这是这么长时间出来不了辅助外挂的主要原因,毕竟两个坛子里都没有绝对否认收到腾讯律师函的声明,只是说不要乱猜测。
3.版权问题。貌似这个问题也是推迟的原因之一,soff说了一句:泄漏版一出来,各种版本纷至沓来了。但是细究起来不应该是这个原因,因为以前推出的版本,各种版本也照样纷至沓来了,也没有见老大怎么说,虽然老大劳动辛苦,但是别人的修改版也振振有词:你不也在折腾腾讯的版本么?况且别的修改版都声明了用于个人学习和研究,不是为了商业利益,也不赚钱,并且署名了珊瑚虫外挂,不存在侵权的问题。这个原因其实是不成立的。
由此推之,原因是第二条的可能性最大。
腾讯QQ2006正式版12月21日就已发布了,而珊瑚和filtered等典型的去广告显ip辅助外挂到现在还没有出来。到底什么原因呢?他们都没有实质性的解释。
根据以往的惯例,官方版本出来以后三日内必出辅助外挂,但是这次着实等的够长,都10多天了,虫子和filtered都在还没有动静,但又都纷纷辟谣,做些模棱两可的解释。其实,综合各种情况分析来看,迟延发布原因大致如下:
1.技术原因。这次腾讯的内核改动很大,确实需要花相当大的精力和相当长的时间才能写出辅助外挂。但是这个理由似乎不太成立,因为,对于两个辅助软件的老大们来说,在这个技术行当上吃了这么多年的饭,技术上根本不成问题,filtered的老大也在坛子里说了:技术上不是问题。由此推断,既然技术上不成问题,那就没有理由会需要这么长的时间,应该是下面别的原因了。
2.法律原因。据说,腾讯为了自己的商业利益,在从技术上无法打压辅助软件后,企图通过法律途径来解决问题,但是虫子和filtered的用户群强大的让腾讯有些投鼠忌器,怕一旦真正通过法律打压下去了,会丢失庞大的QQ用户,而改投msn和uc等的名下,这是腾讯不愿意看到也不想看到的。所以对于腾讯来说,为了自己广告等商业利益,要正告虫子和filtered等等,不要再出什么修改版和外挂版了。坊间传闻的收到了腾讯的律师函等云云也就有些道理了,毕竟无风不起浪嘛。但是腾讯又不能做的太绝,或者说腾讯绝对不会把虫子和filtered告到法庭上,原因是告倒了虫子和filtered,腾讯的损失可能会更大,用户数锐减是必然的。各位大哥大姐,你说假如你红红火火的公司因为官司导致客户却越来越少,那意味着什么我想大家都知道吧!所以,基于上述原因,腾讯显然想禁止虫子和filtered,但又不能做的太绝,毕竟外挂也都声明了用于研究和学习且告知公众腾讯官方版权,不是用于商业利益,虽然腾讯凭借其强大的经济实力和稳固的政商关系可能赢得官司易如反掌,但是它不会那么蠢的真的去对搏公堂;虫子和filtered显然都有些顾虑,但又不是特别的在意,只是想让时间来消磨大家的意志,注意是时间,当然最主要的是消磨腾讯的意志。我想,这是这么长时间出来不了辅助外挂的主要原因,毕竟两个坛子里都没有绝对否认收到腾讯律师函的声明,只是说不要乱猜测。
3.版权问题。貌似这个问题也是推迟的原因之一,soff说了一句:泄漏版一出来,各种版本纷至沓来了。但是细究起来不应该是这个原因,因为以前推出的版本,各种版本也照样纷至沓来了,也没有见老大怎么说,虽然老大劳动辛苦,但是别人的修改版也振振有词:你不也在折腾腾讯的版本么?况且别的修改版都声明了用于个人学习和研究,不是为了商业利益,也不赚钱,并且署名了珊瑚虫外挂,不存在侵权的问题。这个原因其实是不成立的。
由此推之,原因是第二条的可能性最大。
- 1

