如果一个程序你不能确定它是否会作恶,一律沙箱化
可以信任的程序只有以下:开源程序,带有国际性大公司如微软的有效数字签名的程序,受信任的开发者的闭源程序
而且请务必验证安装包是否完整,如果下载到体积非常小的安装包必须警惕是不是下崽器(不要完全相信Google结果,下崽器不是国内特色,其他国家的网站也可能有下崽器)
@大宽宽 估计是看着我说的,哈哈……
当年我的一个重要“业务”,就是同学怀疑自己中病毒或者木马了,我就让他打开任务管理器,截图发过来。看着进程列表就知道哪些进程有问题。
我还写过一个小程序,自己爬进程列表,记录到文件里;然后隔三岔五跑一下,自动比对,有多出来的进程就刨根究底一番;不确定是怎么来的就干掉——宁杀错勿放过。
另外还写过一个小程序,可以遍历硬盘上的可执行文件,计算每个文件的MD5。稍有风吹草动我都知道。
不过,Windows平台,病毒已经势微,计算可执行文件MD5基本没啥用,因为几乎没有什么病毒会去感染可执行文件了——第一是需要权限太高,喜欢玩病毒的三脚猫搞不定;第二是动作太大,操作系统本身都能发现异常、发出警告;第三是好不容易安插进去了,一算MD5就给揪出来了,简直是生怕主人发现不了……
这和DOS时代完全不同。那时候我们是要记录所有系统文件的大小的,大了或者小了都可能是病毒;然后还要记住操作系统文件的开头几条指令,文件大小改变了,就用pctools或别的什么十六进制编辑器打开,找到该文件的真正执行入口;然后修改开头的几条指令,让它直接跳转正确入口继续执行,就把病毒废掉了——病毒就让它留在程序里,反正已经没影响了。非要干掉,一个容易破坏程序文件本身,另一个就是还会被这种病毒感染:大多数病毒会做一个判断,不会反复感染同一个文件。保留病毒数据就等于免疫了。
当然,有些病毒会把旧程序加密或者压缩(这就是有时候被病毒感染的程序反而会变小的原因),这时候简单粗暴的跳过病毒体就行不通了,需要分析病毒执行逻辑,把解压/解密的部分保留,感染、破坏部分跳过去,程序就恢复正常了。
相比之下,Windows时代的手工杀毒没有太大技术含量。记住那几个执行入口,断了病毒启动之路;然后进安全模式,删除病毒,完事。
简单的在每次安装程序/系统更新前后,遍历磁盘上的可执行文件,记录MD5,做一个快照;那么任何时候觉得系统可能不太安全了,再跑一下快照程序,自动比对,就能找出捣乱分子。干掉就完事了。
这个东西后来被微软做成功能了,就是“系统还原点”。只不过微软的一贯尿性,封装太厚了,把用户当傻子,全自动,细节被完全隐藏起来——所以“还原点”虽然好用,但就是没法拿来精准发现捣乱分子。
想准确抓到,还是得自己写程序,自己记录快照。
我一直都是手工杀毒,坚持了十多年;后来arp-iframe病毒来了。
这玩意儿,局域网里一台电脑感染病毒,那么你一打开浏览器,它就会不停给你推送。打开一个网页就给你推一个病毒。
这破病毒,手工杀很容易,但来的太多太频繁,烦不胜烦;后来自己写了个脚本,自动杀,效果不错,就是CPU占用太高了,5%~20%。然后才开始用杀毒软件。卡巴斯基、avg、avira等等,都试过,我系统里面就没病毒,只有个星际争霸破解器(但这玩意儿我很熟悉,它是干净的;但侵犯版权,所以被杀毒软件故意报毒)。可见我的手工杀毒效果还是不错的。
除此之外:
1、找原始开发者/公司的官方网站下载软件,验证签名,不要用二手货。
比如,putty是个很好的软件;但当年,所有中文下载站的所有putty全部绑有木马。
事实上,基于某些先例,软件尽量下外文版,宁可另外再下中文语言包然后配置一番(或者干脆就学会英文吧),尽量不要下中文版。不要问为什么。
2、记住开发流氓软件的公司,拒绝他的所有软件。不要相信狗不吃屎。
3、勤快更新,尤其是安全补丁,尽量第一时间打(但非安全更新可以迟一些,避免当第一批趟雷的小白鼠)。
4、虚拟机是个好东西。
稍微有点相关技术和技巧的程序员都会
这样差不多能封堵99%被流氓软件骚扰的机会。但坦率来说,这一点都不极客,搞久了更多的是操心和无聊。
如果实在是搞不定上面这些事,买台mac吧。能省不少事。虽然这样很多事就干不了了。