Redhat Linux下Bind的快速安装

[不指定 2006/12/25 22:30 | by ipaddr ]
1.使用光盘自带的软件包,安装以下包:
bind
bind-utils
bind-libs
(rpm -i xxx.rpm)

2.
将named服务设置为自启动
(使用ntsysv,chkconfig等工具)

3.
假设你需要解析bcomcn.com,如下操作:

cd /var/named
cp localdomain.zone bcomcn.zone
vi bcomcn.zone
[code]
$TTL  86400
@       IN      SOA     ns.bcomcn.com. root.bcomcn.com.  (
                                     200612230  ; Serial
                                     28800      ; Refresh
                                     14400      ; Retry
                                     3600000    ; Expire
                                     86400 )    ; Minimum
                 IN      NS      ns.bcomcn.com.
                 IN      MX  10  mail.bcomcn.com.
ns.bcomcn.com.   IN      A       192.168.1.5
mail.bcomcn.com.   IN      A       192.168.1.5
www.bcomcn.com.    IN      A       192.168.1.5
[/code]
注意,主机名后面带"点"的,表示是一个完整主机,不带点的,表示还要加上当前域名,比如:mail.bcomcn.com. = mail

cp localdomain.zone 192.zone
vi 192.zone
[code]
$TTL  86400
@       IN      SOA     localhost. root.bcomcn.com.  (
                                     200612230  ; Serial
                                     28800      ; Refresh
                                     14400      ; Retry
                                     3600000    ; Expire
                                     86400 )    ; Minimum
      IN      NS       localhost.
   5        IN      PTR      www.bcomcn.com.
[/code]

4.修改/etc/named.conf,加入:
[code]
zone "bcomcn.com" IN {
 type master;
 file "bcomcn.zone";
 allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
 type master;
 file "192.zone";
 allow-update { none; };
};
[/code]

启动named,将本机的DNS服务器设置为本机,用nslookup,或其它工具检测:

nslookup
> set type=mx
> bcomcn.com

(可以查看/var/log/message检查named是否正确启动,是否加载某个Domain的解析.)

lsof的常用方法

[不指定 2006/12/25 15:48 | by ipaddr ]
1) lsof abc.txt 显示开启文件abc.txt的进程
2) lsof -i :22 知道22端口现在运行什么程序
3) lsof -c nsd 显示nsd进程现在打开的文件
4) lsof -g gid 显示归属gid的进程情况
5) lsof +d /usr/local/ 显示/usr/local目录下被进程开启的文件
6) lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
7) lsof -d 4 显示使用fd为4的进程
8) lsof -i [i] 用以显示符合条件的进程情况
语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4位置
service --> /etc/service中的 service name (可以不只一个)
port --> 端口号 (可以不只一个)
例子: TCP:25 - TCP and port 25
@1.2.3.4 - Internet IPv4 host address 1.2.3.4
tcp@ohaha.ks.edu.tw:ftp - TCP protocol host:ohaha.ks.edu.tw service name:ftp
9) lsof -n 不将IP转换为hostname,缺省是不加上-n参数
例子: lsof -i tcp@ohaha.ks.edu.tw:ftp -n
10) lsof -p 12 看进程号为12的进程打开了哪些文件
11) lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新
-r,lsof会永远不断的执行,直到收到中断信号
+r,lsof会一直执行,直到没有档案被显示
例子:不断查看目前ftp连接的情况:lsof -i tcp@ohaha.ks.edu.tw:ftp -r
12) lsof -s 列出打开文件的大小,如果没有大小,则留下空白
13) lsof -u username 以UID,列出打开的文件
--------------
补充
--------------
查看某进程ID所打开的所有文件
lsof -p pid
lsof -i :portnum

另外一个常用命令就是通过netstat查看所有监听的端口:
netstat -lnp

Linux压力测试与LTP体系结构

[不指定 2006/12/09 16:49 | by ipaddr ]
一、几个问题

开始正题之前,我们先看几个问题:什么是稳定性和可靠性?什么是压力测试?为什么要进行压力测试?

什么是稳定性和可靠性?
稳定性反映的是系统不会出现异常情况;可靠性反映的是系统能够保持正常运行而不受外界影响的能力。
系统的稳定性和可靠性通常以连续运转时间和系统的可靠运行时间来度量。

什么是压力测试?
压力测试是一种破坏性的测试,即系统在非正常的、超负荷的条件下的运行情况 。用来评估在超越最大负载的情况下系统将如何运行,是系统在正常的情况下对某种负载强度的承受能力的考验 。

为什么要进行压力测试?
通常我们用压力测试来判断系统的稳定性和可靠性。


了解了上面的问题之后,我们来看看该如何进行压力测试的设计。

绝大多数版本的linux支持ipv6,可惜IPV6离我们还是很远,增加它,不但会影响我们的系统性能,如果你使用linux做桌面的话,它还会严重影响你的上网速度。
我个人感觉就是DNS解析起来非常得慢。
以下是如何禁用它的支持。
原文请看这里:
http://www.mjmwired.net/resources/mjm-fedora-fc6.html#ipv6
Disable IPv6 Features
18 October 2006

FC6 has the most IPv6 support than in previous releases. Most likely you do not use IPv6. If you wish to eliminate the slight extra resources consumed by enabling IPv6, then you may do the following steps.

This may speed up your DNS lookup times when using the internet.

Disable IPv6 Networking Support
支持网络支持

Edit /etc/sysconfig/network. (A reboot will be required)

[mirandam@charon ~]$ sudo gedit /etc/sysconfig/network

Change:
NETWORKING_IPV6=yes

To:
NETWORKING_IPV6=no

Disable IPv6 Protocol Stack for Kernel
禁止IPV6的内核模块。

Edit /etc/modprobe.conf.

[mirandam@charon ~]$ sudo gedit /etc/modprobe.conf

Add the following 2 lines: (A reboot will be required)

alias net-pf-10 off
alias ipv6 off

Disable IPv6 Firewall
禁止IPV6的防火墙。

Stop ipv6 firewall:

[mirandam@charon ~]$ sudo /etc/init.d/ip6tables stop
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading ip6tables modules:                               [  OK  ]

Turn ipv6 firewall off during future usage:

[mirandam@charon ~]$ sudo /sbin/chkconfig --level 35 ip6tables off

SideBySide Error

[不指定 2006/11/22 16:52 | by ipaddr ]
自从安装SnagIt之后,系统的日志里经常会有条SideBySide的错误,经过搜索资料,发现SnagIt使用VC2005(VC8)开发,而Windowsxp,windows2003系统的机器,使用VC8开发的软件时,都可能会有这个错误.

VC2005编译出来的程序文件,采用了manifest方式来指定dll文件。对于win98、win2000系统,把exe文件和VC的 dll连接库放到一起就成了。对于winxp、win2003系统就要麻烦的多了,VC的连接库默认是被放到了winsxs目录下,结果造成在这些系统上,直接拷贝exe文件,往往是不能运行(找不到msvcr80.dll、mfc80.dll文件等),或者在事件日志中报错。

解决方式:
方式一、在目标系统上安装2005版vcredist_x86.exe。(上微软官方网站下载)

方式二、直接拷贝VS8目录下的VC \ redist \ x86 \  目录下的 Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个文件夹,到exe所在的目录下,目录结构如下:
.\myapp.exe
.\myapp.dll
.\Microsoft.VC80.CRT\
.\Microsoft.VC80.MFC\
.\Microsoft.VC80.MFC\Microsoft.VC80.MFCLOC\
然后修改Microsoft.VC80.MFCLOC目录下的Microsoft.VC80.MFCLOC.manifest文件,将其中的version="8.0.50727.42",修改为version="8.0.50608.0"。


方式二的目录结构,在xp和2003下是没有问题的,但是在win98/win2000中,因为exe和dll不在同一目录下,就会出现找不到dll的问题。

有什么更好的解决呢?呵呵,国外的一个大牛找到一绝招:

方式三、
 1、首先编译myapp.exe的时候,在配置中,选择生成单独的manifest文件,如:myapp.exe.manifest。
 2、将myapp.exe、myapp.exe.manifest拷贝到一个目录下
 3、将Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个目录下的文件,都拷贝到myapp.exe所在的目录下。
 4、将Microsoft.VC80.MFCLOC.manifest文件中的version="8.0.50727.42",修改为version="8.0.50608.0"。
 5、编辑myapp.exe目录下的所有 .manifest文件,将文件中的publicKey键值删除,一般是publicKeyToken="1fc8b3b9a1e18e3b"
 6、然后运行myapp.exe看看,嗯。


如果您使用的是Outlook, 当卸载了杀毒软件以后, 在启动Outlook时, 就会出现一条出错信息: 无法安装或装载加载项 ...\PAVExCli.DLL(这个是熊猫杀毒软件的, McAfee的是scanemal.dll".
开始安装的是熊猫杀毒的铂金版, 卸载以后, 安装了McAfee的VirusScan. 每次启动Outlook都会出现上面的提示. 在注册表里根本就找不到这个DLL文件名. 在卸载了VirusScan以后, 启动Outlook以后, 会出现2条信息. 一个是上面描述的, 另外一个是"scanemal.dll".

通过"scanemal.dll"这个关键字, 终于找到了解决办法:
要解决此问题,请从 Outlook 中删除 McAfee VirusScan 加载项:
1. 在 Outlook 中的工具菜单上,单击选项。
2. 单击其他选项卡,单击高级选项,然后单击加载项管理器。
3. 单击以清除 Exchange Scan(Exchange 扫描)复选框,单击确定,然后单击确定。(如果是Norton,去掉Norton的勾选即可)
4. 单击确定。

参考微软官方资料:
http://support.microsoft.com/?scid=kb;zh-cn;315046&spid=2559&sid=63.
  NTFS分区以其安全性著称,在这个分区中,可以给指定的盘符、目录加上用户权限,为不同的用户设置不同的访问权限。但在默认情况下,Win XP系统并不像Win 2k那样,可以从盘符或目录的属性窗口中看到安全标签,如果用Win XP系统的IIS服务来测试网站,可能会碰到因为网站目录的权限设置而出现这样或那样的错误,以致于不能正常测试。


  如何让Win XP的属性窗口中也可以像Win 2k那样显示安全标签呢?其实很简单!依次点击“开始-控制面板-文件夹选项”,在“文件夹选项”窗口中切换至“查看”项,将“高级设置”中的“使用简单文件共享(推荐)”前的对勾去掉,如图1,然后点“确定”保存设置。


  现在再打开盘符或目录的属性窗口,是不是多了一项“安全”标签,这样,就可以为不同的用户设置不同的访问这个目录的权限了。

cygwin使用心得

[不指定 2006/08/16 10:01 | by ipaddr ]
cygwin使用心得

1.在cygwin里访问Windows盘
cd /cygdrive/c
cd c:

2.整合cygwin命令到Windows中
假设cygwin安装在d:/develop/cygwin,则将d:/develop/cygwin/bin添加到系统变量PATH中(最好加在windows前面,这样的话,有些相同的命令的话,是先执行cygwin的命令,而不是windows命令,比如find)

就可以直接在cmd.exe下面执行tar czvf xxx.tgz ./
基本上所有的命令都可以用了,包括ls,more,less,find,grep等。

3.使用TGZ备份
将cygwin的BIN加入到PATH
建一个BAT文件:
@echo off
d:
cd d:\website\8thmanage
tar czvf 8thmanage.tgz 8thmanage

4.Windows使用SHELL脚本
将cygwin的BIN加入到PATH
在$CYGWIN的目录/var/下面建一脚本t.sh,注意,t.sh里面的路径,都是相对于$CYGWIN的,里面需要访问C盘的,请用/cygdrive/c/
在Windows下执行:
d:\cygwin\bin\bash d:\cygwin\var\t.sh
(可以定期执行)

5.同步Windows系统用户
mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group
如果有Domain的话,需要加上-d domainname

6.安装系统服务
cygrunsrv

7.cygwing下使用rsync
a.安装rsync组件
b.进入cygwin,配置服务器
vi /etc/rsyncd.conf

...screts file=/etc/tom.ipaddr.pas

配置文件,参考我写的另外一篇rsync的文章,注意:密码文件权限必须是0400
chmod 0400 /etc/tom.ipaddr.pas
c.启动服务端
rsync --daemon

d.客户端同步
在客户端的cygwin下面,运行rsync同步,具体命令,请参考另外一篇rsync的文章。

8.cygwin下使用SSHD
a.需要安装了cygrunsrc,openssh
b.运行ssh-host-config -y
一路回车,直到出现CYGWIN=时,输入tty ntsec,再回车,
(或者,增加一系统环境变量CUGWIN=nesec tty)
c.已经安装好SSHD服务到你的Windows服务中,可以直接在服务中启动,关闭。
(cygrunsrc -S sshd或者net start sshd)

9.中文显示
vi ~/.bashrc
# 让ls和dir命令显示中文和颜色
alias ls='ls --show-control-chars --color'
alias dir='dir -N --color'
# 设置为中文环境,使提示成为中文
export LANG="zh_CN.GBK"
# 输出为中文编码
export OUTPUT_CHARSET="GBK"

~/.inputrc为
set completion-ignore-case on
set meta-flag on
set output-meta on
set convert-meta off

cygwin.bat脚本为:
@echo off
set MAKE_MODE=UNIX



--------------------------------
安装

可以直接到http://www.cygwin.com下载一个安装程序,setup.exe,这个程序只是一个安装程序,所有的模块将从网络下载安装。或者,你可以下载一个cygwin.iso的镜像,直接映象成光盘,再从光盘本地安装,这样会快很多,而且不用考虑断线的问题。


X下的中文支持
locale支持
Cygwin的locale支持一直都有问题,好在X程序还可以使用XLOCALE。
建议还是使用zh_CN.gbk, 不要使用zh_CN.GB2312

在移植程序时需要注意不要让程序连接libcygwin.a里面的setlocale,而是采用libX11.a里面的_Xsetlocale。方法是:检查被移植程序的全部源代码,发现

#include
就修改为

#define X_LOCALE
#include
同时注意程序的连接库要添加-lX11.
如果对于结果没有把握,可以找个Dependency Walker查看程序是否连接到了cygwin1.dll里面的setlocale,如果是,就说明有遗漏。

中文字体
PCF点阵字体
GTK1.x 和其他一些老的X程序都是用X字体,

注意必须要有编码与locale一致的字体,比如用zh_CN.gbk就必须要由GBK编码的字体,用zh_CN.GB2312就必须要有GB2312编码的字体

如果使用zh_CN.GB2312,这里有一个RedOffice面带的点阵字体包

可以采用ttf2bdf从TTF抽取得到bdf格式,然后再用bdf2pcf得到pcf格式的字体文件。
(这里有一个Windows版本的TTF2BDF,可以将Windows TTF字体转换出BDF字体, 注意得到bdf后要手工编辑一下文件头,将编码声明修改正确)


到字体之后,放到某个目录下,执行mkfontdir生成fonts.dir,然后用xset +fp
/path/to/your/fonts将字体路径加入即可(注意与fontconfig的配置不同,这里路径是不递归的,如果有的字体放在子目录里面,
子目录也需要添加进去才行)。


TTF字体
很多新的应用程序(比如GTK2)都使用fontconfig/libxft2来显示字体,它对TTF字体的支持比较好(X以前通过freetype, xft模块也支持TTF字体,但对中日韩字体的支持不是太好,而且也在Cygwin下似乎也没有这些模块)

完全可以使用Linux下的arphic字体包. 如果没有安装Linux,可以到http://packages.debian.org下载相应的包,然后用7zip解压提取出ttf文件。

得到字体文件之后,放到某个目录之下,编辑/etc/fonts/local.conf,将字体路径加入:
/path/to/my/ttf/fonts如果只是自己使用,可以将字体文件放到~/.fonts下,不需要修改任何配置,最多三十秒fontconfig就能够发现这些字体了。



中文输入法
老黄(hzhr)移植了miniChinput到Cygwin,我也移植了fcitx-1.8.5和3.0,均可以从我的网站上找到 http://www.oliwen.com/bama...

一般设置了LC_CTYPE和XMODIFIERS就可以在程序中激活输入输入法了(除非这个程序没有XIM支持):

LC_CTYPE=zh_CN.gbk
XMODIFIERS="@im=Chinput"
export LC_CTYPE XMODIFIERS

对于fcitx而言,XMODIFIERS设置为什么都可以(但必须要设置),所以设置为"@im=Chinput"的话chinput和fcitx都可以正常使用

VI中的 Backspace 與 Delete 按鍵異常

首先確定 $TERM的設定為cygwin


echo $TERM


若不是,請設定為


TERM = cygwin
export TERM


Backspace 與 Delete這兩個鍵正常狀況下只有一個有用。可在 $HOME/.bash_profile 任選一個來使用


stty erase '^H' //ctrl+v, ctrl+h


stty erase '^?'




------------------------
Cygwin使用指南
1 引言
cygwin 是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。本文将对其作一介绍。

2 机理
cygnus 当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写了一个共享库(就是cygwin dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于 win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在 windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。
关于cygwin实现的更详细描述,请参考http://cygwin.com/cygwin-ug-net/highlights.html.

3 安装设置cygwin
3.1 安装
要安装网络版的cygwin,可以到http://cygwin.com,点击"Install Cygwin Now!"。这样会先下载一个叫做setup.exe的GUI安装程序,用它能下载一个完整的cygwin。按照每一屏的指示可以方便的进行安装。
3.2 环境变量
开始运行bash之前,应该设置一些环境变量。cygwin提供了一个.bat文件,里面已经设置好了最重要的环境变量。通过它来启动bash是最安全的办法。这个.bat文件安装在cygwin所在的根目录下。 可以随意编辑该文件。
CYGWIN变量用来针对cygwin运行时系统进行多种全局设置。开始时,可以不设置CYGWIN或者在执行bash前用类似下面的格式在dos框下把它设为tty
C:\> set CYGWIN=tty notitle glob

PATH 变量被cygwin应用程序作为搜索可知性文件的路径列表。当一个cygwin进程启动时,该变量被从windows格式(e.g. C:\WinNT\system32;C:\WinNT)转换成unix格式(e.g., /WinNT/system32:/WinNT)。如果想在不运行bash的时候也能够使用cygwin工具集,PATH起码应该包含x:\cygwin \bin,其中x:\cygwin 是你的系统中的cygwin目录。
HOME变量用来指定主目录,推荐在执行bash前定义该变量。当 cygwin进程启动时,该变量也被从windows格式转换成unix格式,例如,作者的机器上HOME的值为C:\(dos命令set HOME就可以看到他的值,set HOME=XXX可以进行设置),在bash中用echo $HOME看,其值为/cygdrive/c.
TERM变量指定终端型态。如果美对它进行设置,它将自动设为cygwin。
LD_LIBRARY_PATH被cygwin函数dlopen()作为搜索.dll文件的路径列表,该变量也被从windows格式转换成unix格式。多数Cygwin应用程序不使用dlopen,因而不需要该变量。
3.3 改变cygwin的最大存储容量
Cygwin 程序缺省可以分配的内存不超过384 MB(program+data)。多数情况下不需要修改这个限制。然而,如果需要更多实际或虚拟内存,应该修改注册表的 HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER区段。田家一个DWORD键heap_chunk_in_mb并把它的值设为需要的内存限制,单位是十进制MB。也可以用cygwin中的regtool完成该设置。例子如下:
regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygnus\ Solutions/Cygwin

4 使用cygwin
这一段讲一下cygwin和传统unix系统的不同之处。
4.1 映射路径名
4.1.1 引言
cygwin 同时支持win32和posix风格的路径,路径分隔符可以是正斜杠也可以是反斜杠。还支持UNC路径名。(在网络中,UNC是一种确定文件位置的方法,使用这种方法用户可以不关心存储设备的物理位置,方便了用户使用。在Windows操作系统,Novell Netware和其它操作系统中,都已经使用了这种规范以取代本地命名系统。在UNC中,我们不用关心文件在什么盘(或卷)上,不用关心这个盘(或卷)所在服务器在什么地方。我们只要以下面格式就可以访问文件:
\\服务器名\共享名\路径\文件名
共享名有时也被称为文件所在卷或存储设备的逻辑标识,但使用它的目的是让用户不必关心这些卷或存储设备所在的物理位置。)
符合posix标准的操作系统(如linux)没有盘符的概念。所有的绝对路径都以一个斜杠开始,而不是盘符(如c:)。所有的文件系统都是其中的子目录。例如,两个硬盘,其中之一为根,另一个可能是在/disk2路径下。
因为许多unix系统上的程序假定存在单一的posix文件系统结构,所以cygwin专门维护了一个针对win32文件系统的内部posix视图,使这些程序可以在windows下正确运行。在某些必要的情况下,cygwin会使用这种映射来进行win32和posix路径之间的转换。
4.1.2 cygwin mount表
cygwin 中的mount程序用来把win32盘符和网络共享路径映射到cygwin的内部posix目录树。这是与典型unix mount程序相似的概念。对于那些对unix不熟悉而具有windows背景的的人来说,mount程序和早期的dos命令join非常相似,就是把一个盘符作为其他路径的子目录。
路径映射信息存放在当前用户的cygwin mount表中,这个mount table 又在windows的注册表中。这样,当该用户下一次登录进来时,这些信息又从注册表中取出。mount 表分为两种,除了每个用户特定的表,还有系统范围的mount表,每个cygwin用户的安装表都继承自系统表。系统表只能由拥有合适权限的用户(windows nt的管理员)修改。
当前用户的mount表可以在注册表"HKEY_CURRENT_USER/Software/Red Hat, Inc./Cygwin/mounts v" 下看到。系统表
存在HKEY_LOCAL_MACHINE下。
posix 根路径/缺省指向系统分区,但是可以使用mount命令重新指向到windows文件系统中的任何路径。cygwin从win32路径生成posix路径时,总是使用mount表中最长的前缀。例如如果c:被同时安装在/c和/,cygwin将把C:/foo/bar转换成/c/foo/bar.
如果不加任何参数地调用mount命令,会把Cygwin当前安装点集合全部列出。在下面的例子中,c盘是POSIX根,而d盘被映射到/d。本例中,根是一个系统范围的安装点,它对所有用户都是可见的,而/d仅对当前用户可见。
c:\> mount
f:\cygwin\bin on /usr/bin type system (binmode)
f:\cygwin\lib on /usr/lib type system (binmode)
f:\cygwin on / type system (binmode)
e:\src on /usr/src type system (binmode)
c: on /cygdrive/c type user (binmode,noumount)
e: on /cygdrive/e type user (binmode,noumount)
还可以使用mount命令增加新的安装点,用umount删除安装点。
当Cygwin 不能根据已有的安装点把某个win32路径转化为posix路径时,cygwin会自动把它转化到一个处于缺省posix路径/cygdrive下的的一个安装点. 例如,如果Cygwin 访问Z:\foo,而Z盘当前不在安装表内,那么Z:\将被自动转化成/cygdrive/Z.
可以给每个安装点赋予特殊的属性。自动安装的分区显示为“auto”安装。安装点还可以选择是"textmode"还是 "binmode",这个属性决定了文本文件和二进制文件是否按同样的方式处理。
4.1.3 其他路径相关信息
cygpath工具提供了在shell脚本中进行win32-posix路径格式转换的能力。
HOME, PATH,和LD_LIBRARY_PATH环境变量会在cygwin进程启动时自动被从Win32格式转换成了POSIX格式(例如,如果存在从该win32路径到posix路径的安装,会把c:\cygwin\bin转为/bin)。

How to customize ERD2005

[不指定 2006/08/12 23:38 | by ipaddr ]
一.简介
Winternals software 公司是于 1996 年由 Bryce Cogswell Ph.D. 和 Mark Russinovich Ph.D. 共同成立于美国德州,该公司主要产品为Windows 2000/NT 的系统修复和管理工具。这些修复与管理工具可应用于修复与救回损毁的 Windows-based 系统,让您不需从新装置系统。

  ERD Commander 2005 Boot CD,是一个一个可以启动机器的光盘镜像,用Nero刻盘后,就得到了一张超酷的启动光盘了。用此光盘启动后,可以进入一个类似windows桌面的界面,有开始菜单等,最重要的是内置了一些有用的工具。ERD Commander 2005 Boot CD,可以算是Windows系统管理员的终极武器,系统修复的顶级软件,支持windows nt,2k,xp,2003。可以在系统出问题的情况下,用它对硬盘上的dead system进行一系列检修和操作,包括修改管理员口令,编辑注册表,停用和启用设备驱动和服务,崩溃分析,文件修复,系统还原.至于文件操作之类自然不在话下。ERD Commander的强大在于,可以直接对硬盘上的系统进行一些正常情况下只有进入系统才能进行的维护和修复操作。在用户和dead system之间建立起了桥梁。如果还能进入系统,下面所说的这些功能都可以比较轻易得找到替代品,也不用费那么大劲用ERD Commander的启动光盘。

  光盘启动后,其中的资源管理器可以访问NTFS分区,可以像Windows的资源管理器一样粘贴复制。对于ntfs分区设置了权限而无法访问的文件夹,可以很方便的修改为everyone都可以访问。还有一个工具可以修改Windows 2000/XP/2003的用户密码,不怕忘记密码了,看来Windows2000/XP/2003的密码也不怎么安全。还有一个和Windows自带的注册表编辑器一样的注册表编辑器,在Windows无法启动时,可以用它来修改注册表。还有和Windows下一样的记事本和命令提示符。设置好网络后还可以联网。在Windows崩溃后,还可以用它来添加删除驱动和禁用一些服务,对于全部用NTFS的人。这张盘应该是非常有用的。 基本就是一个Win32的平台,就像是一个简化了可以刻到光盘的Win2000,xp,一些XP下命令提示符中的程序,例如subst.exe等,都可以在其平台下运行!

  用 ERD Commander 2005 Boot CD 启动系统跟安装操作系统时的界面很类似。如果你有无法被操作系统识别的硬件(尤其是SCSI设备),那就需要先把它们的驱动程序写入软驱,启动时按“F6”读入驱动,否则用光盘启动后这些设备将无法正常使用。这个版本实际上包括了ERD Commander和Remote Recovery Client,如果运行后者,那么可以通过网络远程对这台机器进行修复操作。选择前者的话,会自动列出硬盘上安装的Windows,如果你装有两个或者更多的Windows操作系统,就可以在这里选择用ERD Commander进入哪个系统,选择好后再指定你的键盘布局和时区。如果没有系统或者不选,则有些功能象编辑注册表不能用,原因也是显而易见的。

  ERD Commander 2005 Boot CD 启动电脑后会自动搜索并安装网卡驱动,常见网卡都能正确配置,也有搜索不成功的,这样就不能使用网络。这步比较慢,如果不需要使用网络,直接选跳过。ERD Commander 2005 会根据DHCP服务器分配IP地址,如果你的网络中没有DHCP服务器,则需要在Administrative Tools菜单下的TCP/IP Configuration里给你的系统临时指派一个。其次,默认情况下 ERD Commander 启动后会把你的电脑添加到WORKGROUP工作组中,如果你需要访问其他工作组或者域中的电脑,首先就要加入这个工作组或域:双击Network Neighborhood图标进入网络邻居,然后在Tools菜单下点击Add Domain,输入想要加入的域或者工作组的名称,然后确定。

  除了这些功能,ERD Commander还可以做很多事,例如重新配置系统服务、修改系统注册表等,而这些功能操作上跟Windows中的没有太大区别,大家可以自己试试。不过在运行ERD Commander的时候一定要确保光盘一直在光驱中,否则系统会自动被锁死。

  整个 ERD Commander 2005 比较庞大,简单说说它的一些功能,其实有的看程序名字就知道了。

●Autoruns:可以修改windows的启动加载项目,一般系统崩溃很少因为autorun的程序出错而引起,即使有,也可以进入安全模式解决,所以用到这项的时候也不多。
●Disk Management 磁盘管理:建分区,格式化磁盘。
●Event Log 事件日志:察看事件日志,没什么好说。
●Regedit 注册表编辑:类似于 Windows Regedit,但功能少一些。
●Service and Driver Manager 服务和驱动程序管理:这个比较有用。因为不良的驱动引起windows崩溃无法启动的可能性比较大。而有些驱动即使是安全模式也会加载,进安全模式也不管用。这个时候可以用ERD把可疑的驱动禁止掉。
●System Info 系统信息:系统的软硬件环境信息。
●TCP/IP Configuration TCP/IP 配置:配置网络。
●File Sharing 文件共享:启动文件在网络共享。
●Map Network Drive 映射网络驱动器:顾名思义。
●Crash Analyzer 故障分析:分析 Windows 系统故障转储文件,这个比较专业,一般用户也不会用到。
●Disk Commander:用于数据恢复,功能强大,可以修复硬盘、分区和被删除文件。
●FileRestore,恢复被删除的文件,提供一些条件供查找。
●DiskWipe 磁盘擦除:提供了两种算法,可以是四次覆盖 (美国国防部 5220.22-M),这样神仙也救不了。
●HotFix Uninstall 卸载补丁:用于卸载已经安装的Windows补丁包。安装补丁包一般情况下没有问题,不过一旦和其他的东西冲突或者补丁本身有问题,就用得着这个功能了。
●LockSmith 修锁工:用于修改硬盘上系统的密码,包括管理员的也可以。这个可能是这些组件中最著名的了。
●System Compare 系统比较:可以比较当前系统和远程计算机系统的差异。
●System File Repair 系统文件修理:修复系统文件,类似于用sfc /scannow来检查系统文件,进行系统修复。
●System Restore 系统还原:用于Windows XP的还原。当然前提是之前创建了还原点。系统备份有很多强大的工具,true image,ghost等,不是非要用XP自带的还原。我习惯于关闭系统还原功能。不过如果是使用这个功能创建了还原点,而系统被破坏进不去又无法还原的时候,这个功能就很有用了。
●Explorer 资源管理:和windows的差不多,可以方便地进行文件的复制删除等操作,正好可以用来备份崩溃系统上的重要数据到别处。
●Firefox 火狐浏览器:可以用来下载一些需要的程序和补丁等。    
●Solution Wizard 应用向导:提供了一个比较方便的向导,帮助用户使用上述工具,如果熟悉上面说的这些工具,自行挑选即可。

二.定制
我使用易通汉化的ERD2005做模板,做了以下定制
a.修改启动密码(zhoutang,ipaddr)
b.修改启动信息
c.修改FireFox书签
d.加入部分工具
主要工作是修改了启动密码,默认易通汉化的ERD2005的密码是Yitong,我想改成自己的,折腾了很久,最后找到了解决办法.
定制过程中, 使用了Winternals Administrator's Pak工具包(生成ERD Commander2005),UltraISO(编辑ISO文件),UltraEdit(编辑二进制文件),Cygwin(diff,find等命令).
定制过程大致如下:
A.首先,使用Winternals Administrator's Pak生成两张光盘,一张有密码,一张没有密码
B.将两张光盘解压
C.使用Cygwin的diff -a disk1/ disk2/对两张光盘对比,发现只有I386/System32/config/下的software不同
D.使用Editplus打开,发现果然有PASSWORD字符串.
E.使用Winternals Administrrator's Pak生成一张带密码(ipaddr)的光盘,并且把software从ISO文件提取出来,同时,把易通的汉化版的software提取出来
F.使用UltraEditor,打开两个software,都找到Password处(大约在a3200h,a0af0h的位置),将易通的Software的PASSWORD字符串后面的12个字节,改成我们导出的Software文件Password后面的同样内容.(需要用Ultraeditor进行二进制编辑).保存并将software通过UltraISO压回ISO文件.
G.测试通过,可以使用新密码登录ERD Commander了.
H.修改I386/txtsetup.sif的loaderprompt可以定制启动信息
I.修改/I386/system32/FireFoxProfile/Application Data/Mozilla/Firefox/Profiles/gqv4hl5n.default下的bookmarks.html定制Firefox.
J.在/Program下面,加入Editplus(编辑器),FileZilla(一个功能超强的绿色FTP,支持SFTP.),ProcessExplorer,Putty,tsc(windows remote desktop),更新了WINRAR.

  从DLL技术说起

  要了解DLL木马,就必须知道这个“DLL”是什么意思,所以,让我们追溯到几年前,DOS系统大行其道的日子里。在那时候,写程序是一件繁琐的事情,因为每个程序的代码都是独立的,有时候为了实现一个功能,就要为此写很多代码,后来随着编程技术发展,程序员们把很多常用的代码集合(通用代码)放进一个独立的文件里,并把这个文件称为“库”(Library),在写程序的时候,把这个库文件加入编译器,就能使用这个库包含的所有功能而不必自己再去写一大堆代码,这个技术被称为“静态链接”(Static Link)。静态链接技术让劳累的程序员松了口气,一切似乎都很美好。可是事实证明,美好的事物不会存在太久,因为静态链接就像一个粗鲁的推销员,不管你想不想要宣传单,他都全部塞到你的手上来。写一个程序只想用到一个库文件包含的某个图形效果,就因为这个,你不得不把这个库文件携带的所有的图形效果都加入程序,留着它们当花瓶摆设,这倒没什么重要,可是这些花瓶却把道路都阻塞了——静态链接技术让最终的程序成了大块头,因为编译器把整个库文件也算进去了。

  时代在发展,静态链接技术由于天生的弊端,不能满足程序员的愿望,人们开始寻找一种更好的方法来解决代码重复的难题。后来,Windows系统出现了,时代的分水岭终于出现。Windows系统使用一种新的链接技术,这种被称为“动态链接”(Dynamic Link)的新技术同样也是使用库文件,微软称它们为“动态链接库”——Dynamic Link Library,DLL的名字就是这样来的。动态链接本身和静态链接没什么区别,也是把通用代码写进一些独立文件里,但是在编译方面,微软绕了个圈子,并没有采取把库文件加进程序的方法,而是把库文件做成已经编译好的程序文件,给它们开个交换数据的接口,程序员写程序的时候,一旦要使用某个库文件的一个功能函数,系统就把这个库文件调入内存,连接上这个程序占有的任务进程,然后执行程序要用的功能函数,并把结果返回给程序显示出来,在我们看来,就像是程序自己带有的功能一样。完成需要的功能后,这个DLL停止运行,整个调用过程结束。微软让这些库文件能被多个程序调用,实现了比较完美的共享,程序员无论要写什么程序,只要在代码里加入对相关DLL的调用声明就能使用它的全部功能。最重要的是,DLL绝对不会让你多拿一个花瓶,你要什么它就给你什么,你不要的东西它才不会给你。这样,写出来的程序就不能再携带一大堆垃圾了——绝对不会让你把吃剩的东西带回家,否则罚款,这是自助餐。(静态链接与动态链接)

  DLL技术的诞生,使编写程序变成一件简单的事情,Windows为我们提供了几千个函数接口,足以满足大多数程序员的需要。而且, Windows系统自身就是由几千个DLL文件组成,这些DLL相互扶持,组成了强大的Windows系统。如果Windows使用静态链接技术,它的体积会有多大?我不敢想。

  应用程序接口API

  上面我们对DLL技术做了个大概分析,在里面我提到了“接口”,这又是什么呢?因为DLL不能像静态库文件那样塞进程序里,所以,如何让程序知道实现功能的代码和文件成了问题,微软就为DLL技术做了标准规范,让一个DLL文件像奶酪一样开了许多小洞,每个洞口都注明里面存放的功能的名字,程序只要根据标准规范找到相关洞口就可以取得它要的美味了,这个洞口就是“应用程序接口”(Application Programming Interface),每个DLL带的接口都不相同,尽最大可能的减少了代码的重复。

  用Steven的一句话:API就是一个工具箱,你根据需要取出螺丝刀、扳手,用完后再把它们放回原处。

  在Windows里,最基本的3个DLL文件是kernel32.dll、user32.dll、gdi32.dll。它们共同构成了基本的系统框架。

  DLL与木马

  DLL是编译好的代码,与一般程序没什么大差别,只是它不能独立运行,需要程序调用。那么,DLL与木马能扯上什么关系呢?如果你学过编程并且写过DLL,就会发现,其实DLL的代码和其他程序几乎没什么两样,仅仅是接口和启动模式不同,只要改动一下代码入口,DLL就变成一个独立的程序了。当然,DLL文件是没有程序逻辑的,这里并不是说DLL=EXE,不过,依然可以把DLL看做缺少了main入口的EXE,DLL带的各个功能函数可以看作一个程序的几个函数模块。DLL木马就是把一个实现了木马功能的代码,加上一些特殊代码写成DLL文件,导出相关的API,在别人看来,这只是一个普通的DLL,但是这个DLL却携带了完整的木马功能,这就是DLL木马的概念。也许有人会问,既然同样的代码就可以实现木马功能,那么直接做程序就可以,为什么还要多此一举写成DLL呢?这是为了隐藏,因为DLL运行时是直接挂在调用它的程序的进程里的,并不会另外产生进程,所以相对于传统EXE木马来说,它很难被查到。

  DLL的运行

  虽然DLL不能自己运行,可是Windows在加载DLL的时候,需要一个入口函数,就如同EXE的main一样,否则系统无法引用DLL。所以根据编写规范,Windows必须查找并执行DLL里的一个函数DllMain作为加载DLL的依据,这个函数不作为API导出,而是内部函数。 DllMain函数使DLL得以保留在内存里,有的DLL里面没有DllMain函数,可是依然能使用,这是因为Windows在找不到DllMain的时候,会从其它运行库中找一个不做任何操作的缺省DllMain函数启动这个DLL使它能被载入,并不是说DLL可以放弃DllMain函数。

  DLL木马技术分析

  到了这里,您也许会想,既然DLL木马有那么多好处,以后写木马都采用DLL方式不就好了吗?话虽然是这么说没错,但是DLL木马并不是一些人想象的那么容易写的。要写一个能用的DLL木马,你需要了解更多知识。

  1.木马的主体

  千万别把木马模块写得真的像个API库一样,这不是开发WINAPI。DLL木马可以导出几个辅助函数,但是必须有一个过程负责主要执行代码,否则这个DLL只能是一堆零碎API函数,别提工作了。

  如果涉及一些通用代码,可以在DLL里写一些内部函数,供自己的代码使用,而不是把所有代码都开放成接口,这样它自己本身都难调用了,更不可能发挥作用。

  DLL木马的标准执行入口为DllMain,所以必须在DllMain里写好DLL木马运行的代码,或者指向DLL木马的执行模块。

  2.动态嵌入技术

  Windows中,每个进程都有自己的私有内存空间,别的进程是不允许对这个私人领地进行操作的,但是,实际上我们仍然可以利用种种方法进入并操作进程的私有内存,这就是动态嵌入,它是将自己的代码嵌入正在运行的进程中的技术。动态嵌入有很多种,最常见的是钩子、API以及远程线程技术,现在的大多数DLL木马都采用远程线程技术把自己挂在一个正常系统进程中。其实动态嵌入并不少见,罗技的MouseWare驱动就挂着每一个系统进程-_-

  远程线程技术就是通过在另一个进程中创建远程线程(RemoteThread)的方法进入那个进程的内存地址空间。在DLL木马的范畴里,这个技术也叫做“注入”,当载体在那个被注入的进程里创建了远程线程并命令它加载DLL时,木马就挂上去执行了,没有新进程产生,要想让木马停止惟有让挂接这个木马DLL的进程退出运行。但是,很多时候我们只能束手无策——它和Explorer.exe挂在一起了,你确定要关闭Windows吗?

  3.木马的启动

  有人也许会迫不及待的说,直接把这个DLL加入系统启动项目不就可以了。答案是NO,前面说过,DLL不能独立运行,所以无法在启动项目里直接启动它。要想让木马跑起来,就需要一个EXE使用动态嵌入技术让DLL搭上其他正常进程的车,让被嵌入的进程调用这个DLL的DllMain函数,激发木马运行,最后启动木马的EXE结束运行,木马启动完毕。

  启动DLL木马的EXE是个重要角色,它被称为Loader,如果没有Loader,DLL木马就是破烂一堆,因此,一个算得上成熟的DLL木马会想办法保护它的Loader不会那么容易被毁灭。记得狼狈为奸的故事吗?DLL木马就是爬在狼Loader上的狈。

  Loader可以是多种多样的,Windows的rundll32.exe也被一些DLL木马用来做了Loader,这种木马一般不带动态嵌入技术,它直接挂着rundll32进程运行,用rundll32的方法(rundll32.exe [DLL名],[函数] [参数])像调用API一样去引用这个DLL的启动函数激发木马模块开始执行,即使你杀了rundll32,木马本体还是在的,一个最常见的例子就是 3721中文实名,虽然它不是木马。(图3--启动项)

  注册表的AppInit_DLLs键也被一些木马用来启动自己,如求职信病毒。利用注册表启动,就是让系统执行DllMain来达到启动木马的目的。因为它是kernel调入的,对这个DLL的稳定性有很大要求,稍有错误就会导致系统崩溃,所以很少看到这种木马。

  有一些更复杂点的DLL木马通过svchost.exe启动,这种DLL木马必须写成NT-Service,入口函数是ServiceMain,一般很少见,但是这种木马的隐蔽性也不错,而且Loader有保障。

  4.其它

  到这里大家也应该对DLL木马有个了解了,是不是很想写一个?别急,不知道大家想过没有,既然DLL木马这么好,为什么到现在能找到的DLL 木马寥寥无几?现在让我来泼冷水,最重要的原因只有一个:由于DLL木马挂着系统进程运行,如果它本身写得不好,例如没有防止运行错误的代码或者没有严格规范用户的输入,DLL就会出错崩溃。别紧张,一般的EXE也是这样完蛋的,但是DLL崩溃会导致它挂着的程序跟着遭殃,别忘记它挂接的是系统进程哦,结局就是……惨不忍睹。所以写一个能公布的DLL木马,在排错检查方面做的工作要比一般的EXE木马多,写得多了自己都烦躁……

  DLL木马的发现和查杀

  经常看看启动项有没有多出莫名其妙的项目,这是Loader的所在,只要杀了狼,狈就不能再狂了。而DLL木马本体比较难发现,需要你有一定编程知识和分析能力,在Loader里查找DLL名称,或者从进程里看多挂接了什么陌生的DLL,可是对新手来说……总之就是比较难啊比较难,所以,最简单的方法:杀毒软件和防火墙(不是万能药,切忌长期服用)。

  DLL木马检测与清除实例

  守护者(NOIR—QUEEN)是一个典型的DLL木马程序,其服务端以DLL文件的形式插入到系统的Lsass.exe进程中。Lsass.exe进程是一个本地的安全授权服务,并且它会为使用Winlogon服务的授权用户生成一个进程,如果授权是成功的,Lsass就会产生用户的进入令牌。由于Lsass.exe是系统的关键进程,不能被终止,那么我们该如何清除这样的木马呢?

  守护者木马入侵系统后,会在服务中添加一项名为“QoSserver”的服务,并将“QoSserver.dll”文件插入到Lsass进程中,使其可以隐藏进程并自动启动。我们利用“进程猎手”这样的工具查看Lsass进程所调用的DLL文件,并与木马入侵前的信息比较,可以发现Lsass 进程中增加了“QoSserver.dll”文件。记录下该文件的具体位置,本例中为“C:\Windows\system32\ QoSserver.dll”。

  打开WindowsXP任务管理器,切换到“进程”选项卡中,结束“QoSserver.exe”进程,同时将系统目录下的 “QoSserver.exe”文件删除。然后运行Regedit,在注册表编辑器中依次展开[HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\QoSserver],直接删除“QoSserver”项,重启计算机。重启之后,再将系统目录下的“QoSserver.dll”文件删除。需要注意的是,如果前面未删除“QoSserver.exe”文件,而只删除了QoSserver服务并重启之后,插入到Lsass进程当中的“QoSserver.dll”又会生成另外一个名为“AppCPI”的服务。这时再次打开注册表编辑器,展开 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AppCPI],删除AppCPI项。如果QoSserver服务同时复活,则要将该服务的启动类型改为“禁用”。重新启动计算机后,再删除系统目录下的木马文件。

  防范DLL木马

  1.安装木马查杀工具。对于多数人而言,要想通过手工查杀DLL木马是不太现实的,因此安装一款可以查杀此类木马的反病毒软件,是非常有必要的。这里还要提醒读者的是,应及时升级病毒数据库,这样才能保证有效地查杀绝大部分木马病毒。当然,我们也可以在计算机中安装那些专门针对木马的查杀工具,例如木马克星。

  2.查看是否有不明端口开放以及对端口通信进行监控。只要木马进行连接,接受/发送数据则必然会打开端口,DLL木马也不例外,我们可以通过 “Netstat-ano”命令来查看TCP/UDP端口的连接,以及开放端口的进程标识符,也可以直接使用进程端口查看工具Fport.exe来查看与端口对应的进程,以发现是否有不明的连接和端口开放。另外,有些DLL木马通过端口劫持或者端口重用的方法来进行通信,所以仅是查看端口还是不够的,有必要的话,我们可使用嗅探器来了解打开的端口到底在传输些什么数据。

  3.检查系统目录下是否有可疑的DLL文件。安装好系统和所有应用程序之后,可对系统目录下System32文件夹中的EXE和DLL文件作一记录:在命令提示符下执行“dir*.exe>bak1.txt&dir*.dll>bak2.txt”,将所有的EXE和DLL文件信息导出成TXT文件保存。当日后发现异常时,可以使用相同的命令再次备份,并使用FC命令比较两次的EXE文件和DLL文件。通过这种方法,我们可以发现可疑的EXE和DLL文件,同时通过文件的大小、创建时间来判断是否为DLL木马。

  4.查看系统进程调用的DLL文件。当我们怀疑有DLL木马插入到系统进程,可以使用一些第三方进程工具来查看进程所调用的DLL文件,然后进一步确认是否中了DLL木马。此类查看工具有进程猎手、进程间谍等等。另外,我们也可以使用XP系统自带的命令行工具TaskList,来显示进程调用的DLL文件,并将这些信息导出成TXT文件保存,以便随时进行比较。

  但我们就要利用这种木马 因为他比较难查杀 所以~~~~~~~~~~~~~

  DLL注入木马如是说

  DLL库链接文件,是Windows系统中许多驱动和程序运行时必需的文件。一般来说,这类文件无法单独运行,必须通过某个EXE文件调用该 DLL文件,从而执行相应的功能。同时,当该EXE文件正在执行时,调用的DLL文件无法被删除。正因为由于DLL文件具有隐蔽性,并且很难删除,因此目前许多流行的木马程序都采用了DLL文件方式进行安装,将木马DLL文件加载到某个正常的系统进程中,从而达到隐藏木马进程和保护木马文件的目的——这就是所谓的DLL注入式木马。

  木马是如何将DLL文件进行加载的呢?这里我们以一个黑客常用的DLL木马“上兴远程控制木马”为例进行讲解。

  运行“上兴木马”后,点击界面中“配置服务端”按钮,打开服务端生成程序。在“DNS域名解析更新IP”中输入自己的IP地址或者动态DNS 域名,在安装名称中输入生成的服务端DLL文件名。木马运行后,该DLL文件将被注入到下面“宿主进程名”中指定的系统进程中,默认为 “explorer.exe”。最后点击生成按钮,即可生成木马文件“rejoice_06.exe”。

  将生成的木马文件传播,当其他用户运行后,就可以通过上兴木马远控客户端进行控制了。

  警报,病毒无法清除

  如果系统中被植入了DLL木马,将会出现什么情况呢?

  首先,系统被黑客远程控制,出现数据丢失等情况;其次,杀毒软件会报警系统中有病毒,但是却无法进行清除。例如,在电脑中运行了上面制作的上兴远控木马后,笔者电脑上安装的杀毒软件提示发现病毒,但是在删除DLL病毒文件时却失败了。即使我们手工删除病毒文件,也会因为DLL文件正在使用中,所以也无法彻底删除。即使进入安全模式,得到的也是同样的结果。

  另外,由于DLL木马是插入到系统进程中的,因此通过任务管理器等进程工具,也无法发现任何木马进程,这给木马的清除带来了很大的困难!

  无法删除病毒文件,无法查找到木马进程,那么到底该如何清除DLL注入式木马呢?

  无所遁形,揪出木马藏身之所

  虽然木马没有自己的进程,但是有一个宿主进程,只要结束宿主进程,停止DLL文件的调用,就可以删除DLL文件,进而清除木马。因此,清除DLL木马的第一步,就是找到木马注入的宿主进程。那么,如何才能找到木马注入的宿主进程呢?且让我们细细看来。

  以清除“上兴远控木马”为例,从杀毒软件的报警提示中已经知道木马DLL文件名为“rejoice.dll”。因此,就可以通过一些查看进程调用DLL文件的进程管理工具,找到该文件的宿主进程,此类工具很多,比如大名鼎鼎的ICESword。

  运行IceSword后,点击左侧边栏“查看→进程”,就可以在其右侧窗口中看到所有进程列表。右键点击某进程,在弹出菜单中选择“模块信息”命令,即可看到该进程调用的所有DLL文件。

  提示:DLL注入式木马通常是将DLL文件,加载到explorer.exe、svchost.exe、winlogon.exe、 iexplore.exe等系统进程中的。因此在查找DLL宿主文件时,可以关闭其它无关的程序,然后依次检查这几个进程中的DLL文件。

  不过一个一个的检查系统进程,确实有些麻烦,如何才能快速的定位木马的宿主进程呢?可以使用一款名为“procexp”的进程管理工具。运行 procexp后,在程序界面中间显示的是树状进程关系列表,下方是每个进程的详细信息。点击菜单“Find→Find DLL”命令,打开DLL文件查找对话框,在“DLL Substring”中输入要查找的关键词,这里输入刚才杀毒软件扫描出的DLL文件名“rejoice.dll”。然后点击“Search”按钮,在下方的列表中就可以看到该DLL文件是被哪个进程调用的了。

  牛刀小试,清除普通进程DLL注入木马

  对于大部分DLL注入木马,其注入到“iexplore.exe”和“explorer.exe”这两个进程。对于这类普通进程的DLL木马,清除将是非常方便的。

  如果DLL文件是注入到“iexplore.exe”进程中,由于此进程就是IE浏览器进程,因此就需要先关掉所有IE窗口和相关程序,然后直接找到DLL文件进行删除就可以了。

  如果DLL文件是注入到“explorer.exe”进程中,那么就略显麻烦一些。由于此进程用于显示桌面和资源管理器,因此,当通过任务管理器结束掉“explorer.exe”进程时,桌面无法看到,桌面上所有图标消失掉,"我的电脑"、"网上邻居"等所有图标都不见了,同时,也无法打开资源管理器找到木马文件进行删除。怎么办呢?

  实际上,解决的方法也很简单。在任务管理器中点击菜单“文件→新任务运行”,打开“创建新任务”对话框,点击“浏览”按钮,通过浏览对话框就可以打开DLL文件所在的路径(如图4)。然后选择“文件类型”为“所有文件”,即可显示并删除DLL文件了。

  在浏览对话框中删除DLL文件

  除恶务尽,清除特殊DLL注入木马

  除了以上所说的注入普通进程的DLL木马之外,还有许多木马注入到系统里关键进程中,比如svchost.exe、smss.exe、 winlogon.exe进程。这些进程使用普通方式无法结束,使用特殊工具结束掉进程后,却又很可能造成系统崩溃无法正常运行的情况。对于这些木马,我们可以通过以下两种方法进行清除。

  1.使用IceSword卸载DLL文件

  IceSword的功能十分强大,我们曾在以前作过介绍,在这里,就可以利用它卸载掉已经插入到正在运行的系统进程中的DLL文件。在 IceSword的进程列表显示窗口中,右键点击DLL木马宿主进程,选择弹出命令“模块信息”。在进程模块信息对话框中找到DLL木马文件,选择文件后点击“强制解除”命令,即可将系统进程中的DLL木马文件卸载掉了

  卸载系统进程中的DLL木马

  2.SSM终结所有DLL木马

  使用IceSword可以卸载大部分的DLL木马文件,但还有某些特殊木马在卸载时,却会造成系统崩溃重启。例如一款著名的木马PCShare采用了注入 “winlogon.exe”进程的方式运行,由于该进程是掌握Windows登录的,因此在使用IceSword卸载时,系统将会立即异常重启,根本来不及清除掉DLL文件,在重启后DLL木马又被再次加载。对于这类DLL木马,必须在进程运行之前阻止DLL文件的加载。接下来,我们又要用到一款用于阻止DLL文件加载的安全工具——“System Safety Monitor”(简称SSM)。

  提示:SSM是一款俄罗斯出品的系统监控软件,通过监视系统特定的文件(如注册表等)及应用程序,达到保护系统安全的目的。这款软件功能非常强大,可以辅助防火墙和杀毒软件更好的保护系统安全。

  运行SSM,在程序界面中选择“规则”选项卡,右键点击中间规则列表空白处,选择“新增”命令,弹出文件浏览窗口,选择浏览文件类型为 “DLL files”,在其中选择指定文件路径“C:\Windows\system32\rejoice.dll”。点击“确定”按钮后,即可把 “rejoice.dll”文件添加到规则列表中,然后在界面下方的“规则”下拉列表中选择“阻止(F2)”。完成添加规则设置后,点击“应用设置”按钮,后重启系统。

  阻止DLL文件加载到进程

  提示:在重启系统前请检查SSM的设置,确保SSM随系统启动而加载运行。

  当系统重启时,SSM就会自动阻止相关进程调用“rejoice.dll”木马文件。这样,该木马文件便不会被任何程序使用,在硬盘中找到它,直接删除即可。

  雁过无声,清除木马残留垃圾

   DLL注入型木马并不会感染其它文件,只要结束木马进程并删除掉病毒文件木马,木马就没有任何危害性了。剩下的工作就是清除掉木马在注册表和其它启动文件中留下的项目。方法很简单,点击“开始→运行”,输入“regedit”命令,就会打开“注册表编辑器”,利用搜索功能,便可以清除木马在注册表中留下的垃圾;输入“mscnofig”命令,就可以打开系统配置实用程序,清除木马在启动文件中的踪影。

  编后:木马选择注入的系统进程也不尽相同。在碰到此类木马时,我们可以首先考虑用procexp之类的工具,查找出DLL文件的宿主进程。找到宿主进程后,如果是注入到普通可结束的进程中,可以直接将宿主进程终止后删除DLL木马文件即可。如果DLL文件是注入到系统关键进程中的话,可以考虑用IceSword卸载DLL文件;如若失败,那么直接用SSM建立规则,阻止DLL文件的加载就可以了。

分页: 9/12 第一页 上页 4 5 6 7 8 9 10 11 12 下页 最后页 [ 显示模式: 摘要 | 列表 ]