CSK.Blog--个人原创Weblog

连载:《windows亲手灭毒宝典》之二

前沿:作为对曾经我提过的要写些教程的兑现,这里先把我在交大计算机协会作的讲座《windows亲手灭毒宝典》放上来。当然其中的内容比我实际讲的要多,且要难。 由于第一次写教程,加上自己水平有限,文中出现的问题希望各位及时指正,谢谢! 文章为CSK原创,转载请保留原作者和引用作者的版权信息。 CSK版权所有 --------------------------------------------------------------------------------- 呵呵,上次第一篇还是很久前写的了~~ 第一回的地址:[url]http://www.csksoft.net/blog/post/7.html[/url] 第二回:进入正题 windows下亲手灭毒之完全解决方案 本文不需要你具有诸如程序开发等方面的专业技能,但如果有一定的经验可以帮助你更好的理解 1.感性认识的建立-病毒的文件形式和各自特征 所谓病毒,一般都是指可以执行的数据体,说白了就是那些exe,dll等程序文件,当然情况也许更复杂,程序这个概念是脱离与具体的文件形式的,他们只是一段数据而以,应该所谓的病毒可能包括与诸如txt文件中,但很少见(.txt就算包含病毒也是无法自我加载的)。 目前在win32环境下,常见的病毒是以exe;com;dll;scr等扩展名存在的。同时也能见到cmd;bat;vbs这类脚本性病毒(你可以了解些脚本script的知识)。 一般情况下,我们把.exe的文件叫做应用程序,这样说的原因一方面是因为他是可执行的,也就是无需借助其他程序而自我启动(严格的说都无法做到自我启动,这里就不涉及了)。对于病毒体,为了能在复制后马上感染侵占系统,它需要这方面的特征。 所以在下面的文章中,你会发现给出的病毒例子都是.exe文件 dll文件叫做“动态链接库”(dynamic link library),它的名字含义这里不再深究,不过你需要明白他是无法自我启动,也就是不可直接执行的。dll文件中同样也包含程序的代码,但他们是需要被其他可执行程序,如exe加载以后才能执行其中的代码部分的。
图:作为系统核心之一的user32.dll,正因为是dll文件,它能结合到每个程序进程,提供必要的系统支持
所以我们就知道,以dll格式存在的病毒无法直接运行,他们需要另一个如exe的程序事先加载后才能工作(有3种可供参考的方式,一是另一个exe程序也是病毒体,它直接加载dll文件作为自身一部分,第二种方式采用系统自带的rundll32.exe加载,第三种是比较讨厌的情况,dll文件开始又另一个exe文件主动加载后,利用被称为钩子hook技术将dll注入到其他的程序进程中。这用的病毒是最难清除的)。
图:在任务管理器中看到的rundll32.exe的进程实际起作用是加载了的dll文件
如果病毒主体以dll文件存在以后,他必须指明加载它的程序,这可能给其传播造成一定障碍,但有带来了很多优势。比如: 1.由于windows自带的进程管理器(WindowNT)只能以主进程文件为单位察看进程,可以认为是只能看到正在运行的exe文件,而一般看不到正在执行的dll文件(因为dll是exe加载的,它映射到了exe为进程的地址空间了)。所以一般在没有第3放工具的情况下,是无法通过任务管理器找到正在运行的dll文件病毒的。 2.无法直接将正在运行的dll文件病毒关闭,这样说是因为dll文件都映射到了加载它的exe文件中了,利用进程管理器只能将它属于的进程程序一起关闭。比如word因中毒而加载了virus.dll病毒的文件体,那么想从内存中清除病毒只能把word也关闭了 3.利用上面的特点,可以做到病毒体永远驻留内存而无法清除。其实方法很简单,利用钩子技术,将dll注入到系统所有的进程中,同时这些dll监控着每个进程是否被自己注入,如果没有则重新注入。这样除非关闭所有程序,否则永远无法关闭运行中的病毒。
图:采用PEid自带的任务察看器,可以发现实际上所有进程都加载了其他的dll文件。而且无法把其中莫一个dll关闭
当然还有更极端的情况,那就是利用驱动程序来编写病毒(几乎没有这种情况,所以你可以跳过)。 首先这里说一下x86保护模式的事情。你应该知道目前你正在运行windows的CPU工作在成为32位保护模式的环境下。你不用被这个神秘的名词吓倒,他其实就是一种等级管理机制:程序在运行时有ring0和ring3的2种权限,ring0程序拥有很高的权利,它能操作计算机所有的硬件设备,而ring3程序则十分可怜,他只能乖乖受ring0程序管理,同时基本上无法直接对硬件进行操作,而必须通过ring0的程序中转。 这就是windows中各类程序的现状:操作系统的内核、一些服务程序、驱动程序都是ring0级别的,他们能对你的电脑做任何能做的事情,而一般意义上的程序,如exe文件的程序都是ring3的。 这样做一方面是为了实现多任务环境,同时更重要的是能使系统运行的非常稳定:ring3程序无法直接控制硬件,必须通过ring0程序,这样如果有个设计有缺陷或者不怀好意的程序企图进行破坏性操作时,他就能被ring0程序截获并强行中止。 所以可以知道,如果病毒写成了一个驱动程序(ring0级别),那是很危险的,最好的例子就是CIH! 这类病毒的名字往往以wdm和drv为主(后者是win9x的标准,在最新的windows内核中以被淘汰)。不果他们和dll文件一样,无法自我加载。 上面以程序文件的角度分析了几类病毒格式的工作方式,当然大家不用被提到的极端例子吓怕了。下回将告诉你这些病毒是如何感染并永久的在系统中存活下去的 CSK版权所有,演讲ppt在ftp.csksoft.net中下载。

谁需要gmail邀请

好久没有通过web方式登录gmail了。今天去看竟然发现受到了100份邀请名额,所以需要gmail的话就发e-mail告诉我吧

看看谁能最快解决?

好多人问我高手挑战3何时做,其实我觉得没有必要,理由之一就是挑战2通过率很低。 不过不出题也没劲,于是就趁新网站发布之际出道提罢,看看谁先解决了。我有份小小奖励哦 大体还是一样,所有线索都在这篇文章中,你需要找到一个页面,把里面的一句话回复到我blog就表示你完成了这次考验^_^ 起点:网站封页上最大的图片 终点:一个页面,里面的一句话 提示:需要一个在挑战1和挑战2中都要得工具,看看封页的图片有什么特点,了解些ReformPost的事情。 所有线索都交代清楚了,我开始计时,今天是2006.2.28。如果在5天之内就有人给出答复奖励就翻倍哦

新版Flash网站(beta)公开发表

其实很早就是现在的样子了,但想着如果一直不公开可能我也没动力作完,加上以后主攻GRE了,这个目前最依赖ReformCore的东西估计要一直搁置了,万一以后作完了公布时已经落后于时代了可不好。 你只要回到www.csksoft.net首先会发现网站的封页换掉了,然后点那个Flash主网站就是新的Flash站了,但他是beta的,也就是未做好的,可以说它除了代码级功能以外,凡是一些新网站以后有的东西还是没有完成的,但也可以去看看我一直在吹嘘的reformUI到底长什么样子,下面我放些截图让你先睹为快,其实这更像一个开发环境。最后在文章的末尾给出一些ReformScript的实例代码和部分函数表 上面就是你进入网站的样子,因为主体界面还没完成,所以网站会利用ReformUI的承载功能加载原先的网站。 但我的中心不是这个,而是那个叫做RefromScript的窗口,因为它可以让你在其中编写代码并立刻执行。 所以下面对RefromScript作一些简要的说明: 首先它是JavaScript语言,说得更白一些,就是Flash中的ActionScript。而且可以说完全就是,因为大部分的AS代码他都是支持的。比如你可以试着输入this._visible=false;或者fscommand();这种函数,都可以的。而且直接效果就是网站发生了变化。 但除了这个以外,主要RefromScript提供了一套我自己编写的函数集,下面就叫API了。 比如你可以试着打入 上面的含义我想会C编程或者他的衍生语言的人都能看懂,所以不对机制解释了,RefromScript提供的API分为3种。其一是网站中常用的ReformUI的API。他们就像windows中那些CreateWindowEx,MessageBox一样控制着一切可编程图形对象的创建、修改和删除。像上例中的CreateWindow就是一个例子。 第二类是网站核心服务函数。比如你可以键入msgout(GetMajorFlaVer()); 其中msgout();函数和Flash中的trace()最接近,他会把参数的文本显示在 RefromScript窗口的OutPut中。GetMajorFlaVer()函数的作用是返回当前播放器的版本信息。当然这类函数更多时不公开的,因为涉及网站的安全。 其中有一部分是涉及和ReformCore通讯的。比如生成一个RPC XML文报的函数是XML_CreateRPCRequest(),参数这里就不提供了。 第三类是外界加载的组件扩充的API。就像ActiveX对象一样,在下面的例子中我会具体说到。 下面就给一些好玩的例子吧。当然今后你可以用它来联系一些编程方面的事情,特别在一时搞不到编译器的情况下还是不错的。不过RefromScript有个局限:不支持函数体。 下面的代码演示了加载一个外部组件,并且调用加载后的扩充的API 在上述代码执行完毕后,将看到2个窗体,其中一个根据分析是外部组件调用了网站API生成的。接下来你可以清空脚本窗口,打入RemoteAPI();看看效果。 然后再清空脚本窗口,输入rwin.Destroy();表示销毁刚才的组件,并且销毁承载的窗口,然后再调用RemoteAPI();就会发现已经失效了。 而这个代码有一定实用价值,你可以作一些修改。让他变得更好: 我就不解释了,这是一个简易的函数图像绘制程序,以后我会专门写一个组件来完成这个工作 然后给个有趣的文本输出代码: 看看效果吧,不过要刷新页面才能恢复到以前状态。 好了,就说这么多了。如果想要更多函数可以问我要,而且等网站完工后会提供更多有趣的例子 好消息是,ReformUI部分我是打算今后开源的,呵呵,但就看最近有没有人抄袭的问题了

疲劳中的停顿

今天还是和以往一样,虽然11点意味着明天会水眠不足,但不会后悔了。 PRP项目已经下决心在寒假解决了,而且这是我最后几个开发任务之一了。所以要用心做好。至于这个项目今后的路我不敢想,但我自己会很愿意去的。 明天上GRE词汇填空,呵呵,不免一身冷汗……

我做出妥协...

虽然知道人不能面面俱到,不能三心二意。也知道生活要有取舍,但每当遇到这种选择的时候还是很艰难的。 在大学中我一直觉得自己还是能处理好各方面的矛盾,但现在我知道我错了,只能有所取舍。 所以只能暂时的放弃自己的兴趣,从现在开始献身GRE。直到DEADLINE。 ReformCore也许真的只能成为理想,但我很庆幸她已经开始工作。人工智能和图形学这个寒假也没有希望学掉了,但我知道提高了英语水平能更好的理解他们的精华。 或许我只能做个平庸之人,喜欢计算机但可能不能发表一些我认为能轰动世人的作品了,但没关系,今后的机会可能更多。 有了更好的基石,或许一切又将改变,但我也知道“机不可失”。但现在已不想去想,因为我已做出选择。 但我不会完全放弃我的爱好和信仰,一切都只是为了更好的去学习他们。我也会经常更新这个blog,或许在哪天我有了时间,也能发一些原创的技术文章。 最后附上最近看的一些3d demo intro,其中一个的配乐就是这个blog的片头音乐。他的名字也很美Instant Zen,另一个就是GRE词汇了:iconoclast,还有我比较欣赏的conspiracy的作品:BinaryFlow 同时如果你想知道demo的一些背景知识,现在有了中文的资料了:http://www.sycini.com/,而且好消息时今年可能我国的团队也会参赛,如果感兴趣你可以去下载3d demo的制作工具,有些做的已经和作flash一样方便,但那些是国外团队的工具。 不过对机器要求还是蛮高的,特别iconoclast,如果显卡不支持可编程顶点渲染2.0(也就是CG)的话就不要看了。 下载[url]ftp://FTP_visitor:visitor@ftp.csksoft.net/download/3ddemo/cns!bnry.rar[/url] 下载[url]ftp://FTP_visitor:visitor@ftp.csksoft.net/download/3ddemo/sts-04__instant_zen_by_synesthetics.rar[/url] 下载[url]ftp://FTP_visitor:visitor@ftp.csksoft.net/download/3ddemo/iconoclast_by_andromeda_software_development.rar[/url] 好了,今后可能再这里的时间不多了,但blog还是会坚持每周2篇的,祝各位一切顺利,为了自己的理想,加油!

高手挑战和网站其他部分的调整

就像前面我说的,为了防止该死的网易对我的影响,已经作了些调整 今后所有内容均迁移至www.csksoft.net。原先的csksoft.nease.net和csknet.nease.net虽然仍可以使用,但我不再更新,同时与2006.7.1与网易同归于尽 高手挑战1本应该是和csksoft.nease.net与csknet.nease.net的发展密切相关的,但现在只好移至www.csksoft.net了,不过所有连接我已经修正了,如果有人要玩也不影响,但通关方法我就不修改了。 到了2006.7.1我要给我前网站开追悼会了……

该死的网易和见鬼的松闵线

我也来当会粪青,这个feng是故意打错。 首先说网易,为什么该死? 看下文: 尊敬的网易空间用户:您好! 感谢您一直以来对网易个人空间的支持和信赖。 为了集中网易空间的资源向您提供更优质的个人空间服务,我们决定于2006年1月20日开始停止新用户的注册, 并将在2006年7月1日停止网易个人空间所有的服务,以便对原个人空间进行整合与升级,请您及时做好数据备份工作。 给您造成的不便,我们深表歉意,敬请谅解! 具体安排如下: 一、2006年1月20日17时起,网易个人空间停止新用户注册。老用户仍然可以在控制面板里续费或者购买流量到2006年6月。 二、2006年7月1日零时起,停止现有的个人空间服务,并对服务未到期的用户进行相应的退费处理(请保留收费凭证)。 网易个人空间 http://www.nease.net 2006年1月12日 真实活见鬼,什么“向您提供更优质的个人空间服务”,明明自己做不下去了,之后撤台走人,以后哪里还有什么“服务”。不过幸好我网站大部分资料已经迁到虚拟主机了,不过还是有不小损失的,比如原先的域名丢失了,而且高手挑战1就只能搬家…… 而且blog上的背景配乐只能放到ftp上(这样速度会很慢...) 这件事也算了,不过今天碰巧遇到一堆麻烦。 在交大读书的高中校友都应该乘松闵线回家吧,那老乌龟样的东西本来就慢吞吞的,等50分钟才来一班,结果今天去学校PRP开会,回来时等了半天那死车不算,到了车墩还胞胎,我当时睡得正熟,只听“啪啪”几声巨响,伴随车上四处此起彼伏的尖叫,我还真以为遭塔利班袭击了,后来一想自己不再美国,才防止自己激发到发疯态。 于是徒步从松江东门车站走到西面的车站,却发现自行车不见了(其实是我不好,没锁……)于是众人只见有一个20多岁的男子背着个书包在车棚里大叫"Oh,SHIT!" 哎,郁闷死了,所以最近还是别惹我了

用令牌信息来验证Flash提交信息的合法性

(详情请点击文章标题) 今天GRE学好回来的比较早,那就说一下昨天提到的问题: 搞过动态网页脚本比如ASP的朋友都知道,有一个HTTP_REFER的系统变量可以获得本次请求是又那个页面提交的。换句话说,可以用这个东西来知道用户是通过那个页面或其他网站上页面的连入本网站的。 ..... 那Flash和HTTP_REFER有什么关系呢?这里就不是单纯的盗链问题。我认为一般下面几种情况是需要判断HTTP_REFER的。 比如我在网站上写了一个Flash游戏,游戏结束后允许玩家上传自己的姓名和得分。这就会出现安全问题: 做过Flash交互的人都知道,Flash和后台网页脚本的交互手段目前一般是用MovieClip.LoadVarible();和XML.sendAndLoad()方法。这没什么问题,但服务器是不会判断提交数据的真实性的,只要我协议和语法格式一致,任何人在任何地方都能提交一个伪造的“得分”到服务器。而如果那个游戏时对高分进行奖励的,那损失可不小。 那么是不是也能用HTTP_REFER来解决呢?理论上似乎可以,但试过人会发现,那该死的FlashPlayer是不会发送Refer数据的(可能为了安全性)。这样HTTP_REFER就完全失效了。 ...... 但现在Flash完全是透明的东西。外面各种反编译软件可以很轻松的把swf高保真的还原到fla格式。这个密码也自然形同虚设……而且上面的登陆办法也有问题:如果玩家本人提交伪造数据呢? ..... 呵呵,想起来了吗?Flash8开始有了个新特性,可以利用ExternalInterface类随意访问外部JavaScript函数,也可以从外部JavaScript调用Flash中的用户函数。 ..... 首先调用外面的GetToken函数,然后GetToken调用了flash中注册的OnGetToken,并把Token作为参数传递回来。

疲劳和安慰

没想到每天读GRE还是很累人的……每天5:30起来和gf乘车去钦江路,然后回来。晚上我还要熬夜…… 不过比起这个来更累的得是开发了,可能有些朋友就发现昨天banner上的播放器有过一段时间的不稳定,现在已经解决了。主要是把banner开始交给ReformCore托管了。(昨天调试时也许你看到了泄露的ReformPost) 这次主要对ReformPost中的RPC部分作了安全修正,可以防止第三方向网站提交非法的RPC请求。 这样做的目的主要是考虑到现在Flash破解软件已经非常之盛行,对于作者来说,他辛辛苦苦的flash作品的代码和设计在一瞬间就会被一些人返向工程。从而被抄袭或者篡改。我一向不介意开放自己的代码,但至少如果有人没经过我允许把我的作品反工程,再作修改甚至发表时,我就不能忍受了。 但目前flash还是透明的,自己的设计和一些代码肯定会被反工程,所以为了减少可能的损失,我还是在这几天用仅存的4小时空余把ReformPost做了安全修正,每个Post今后都会附有通讯令牌(Token)。(值得注意的是,Flash的下一版本和ActionScript3.0开始已经无法逆向工程了)这样即使我的东西被非法盗连或者占用,他们也不会起任何作用,因为关键数据ReformCore都已经拒绝提供了。 呵呵,希望我以上的担心是多余的,但浪费了那么久时间还是值得的,毕竟Flash中无法提交HTTP_REFER,这个问题困扰了国内外的n多人,因为这样就没法验证是否flash被盗用了,呵呵,我想用令牌的方法至少是个有效的解决之道吧……以后专门写篇文章 今天老板发薪了,呵呵,开心ing... 要开始努力GRE和PRP了。
分页:[«]1[2][»]

Copyright Shikai Chen 2000-2012. Powered By Z-Blog(CSK Modified)