??xml version="1.0" encoding="utf-8" standalone="yes"?> 工程的目录如下: build.xml部分内容如下Q?br />
<?xml version="1.0"?> <project name="myproject" default="test" basedir="."> <path id="lib.path"> 该木马一共有三个文gQ分别是Q?br />C:\WINNT\System32\LOADHW.EXE LOADHW.EXE是一个安装文Ӟ在会把自己注册在Q?br />HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce msitinit.dll是常d存的Q但注册表中q没有记录它Q很狡猾Q?/p>
npf.sys注册Z个服务程序,且在“控刉?>理工具->服务”中看不刎ͼ要在注册表中才能看到Q?br />HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Npf 用WinPatrol软g中CAT这三个文g都列入黑名单Q不然msitinit.dll会在开机时驻进内存而无法删除)Q重启电脑,删除q些文g和相应的注册表记录,病毒q删除了?/p>
虽然病毒删除了,但也在注册表中留下了很多的垃N|且我q不知道删除q些键g不会对系l有什么媄响,所以一直没有敢冒然清理Q?br />例如Q在Npf的注册项里有一个ClassGUID={8ECC055D-047F-11DI-A537-0000F8753ED1} 反正Q与病毒的对抗中Q永q不可能成ؓ赢家Q?/p>
可以查找到default.properties文gq获得其路径E:\MyProject\conf\default.properties?br />
但是在用ANT~译q行Ӟ正确讄?lt;classpath>Q可q是无法调用ClassLoader.getSystemResource查找到文件?/p>
E:\MyProject
|- build
| |- classes
| | |- app
| | |- Main.class
| |- test
| | |- app
| |- MainTest.class
|
|- src
| |- app
| |- Main.java
|
|- test
| |- app
| |- Main.Test.java
|
|- lib
| |- commons-lang-2.4.jar
|
|- conf
| |- default.properties
|
|- build.xml
<property name="build.dir" value="build"/>
<property name="src" value="src"/>
<property name="test.src" value="test"/>
<property name="lib.dir" value="lib"/>
<property name="conf.dir" value="conf"/>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<path id="run.classpath">
<pathelement location="${build.dir}/classes"/>
<pathelement location="${conf.dir}"/> <!-- 已经d了conf目录 -->
<path refid="lib.path"/>
</path>
<!-- 试default.properties是否存在 -->
<available property="have.conf" resource="default.properties">
<classpath refid="run.classpath"/>
</available>
<!-- q行ant echoӞq回have.conf: trueQ证明可以找到文?-->
<target name="echo">
<echo message="have.conf: ${have.conf}"/>
</target>
<!-- q行ant runӞClassLoader.getSystemResource("default.properties")q回却ؓnull -->
<target name="run" depends="compile">
<java classname="app.Main">
<classpath refid="run.classpath"/>
</java>
</target>
</project>
]]>
例如Q?我ABC是中国hDEF"Q截?个字节应q回"我ABC"Q截?个字节应q回"我ABC"Q截?个字节应q回"我ABC??br />
函数中主要是使用String.getBytes()判断一个字W包含单节还是双字节Q因多次创徏String字符Q速度比较慢,谁有更好的方法也L出徏议?br />
2 int bytesCounter = 0;
3 String resStr = null;
4
5 // 首字Wؓ双字? 而要求输Z个字?/span>
6 if(bytes == 1) {
7 String aChar = str.substring(0, 1);
8 byte[] bytesInChar = aChar.getBytes();
9
10 if(bytesInChar.length == 2)
11 return "";
12 }
13
14 for(int i = 0; i < str.length(); i++) {
15 String aChar = str.substring(i, i + 1);
16 byte[] bytesInChar = aChar.getBytes();
17
18 if(bytesInChar.length == 1) {
19 // single byte character
20 ++bytesCounter;
21
22 if(bytesCounter == bytes) {
23 resStr = str.substring(0, i + 1);
24 break;
25 }
26 }
27 else if(bytesInChar.length == 2){
28 // double bytes character
29 bytesCounter += 2;
30
31 if(bytesCounter > bytes) {
32 resStr = str.substring(0, i);
33 break;
34 }
35
36 if(bytesCounter == bytes) {
37 resStr = str.substring(0, i + 1);
38 break;
39 }
40 }
41 }
42
43 return resStr;
44 }
]]>
中招后的q象比较明显Q一是启动电脑时输入用户名和密码后,鼠标光标会变成漏斗状Q且q入pȝ所需旉昄变长Q二是关机或重启的时候,W一ơ按定按钮q不xQ而是屏幕变暗Q这时点击鼠标可以回到桌面,要再一ơ选择x或重启才能生效?/p>
C:\WINNT\System32\msitinit.dll
C:\WINNT\System32\drivers\npf.sys
如果它被删除掉,q不影响木马的运行,只是在开机时会报该文件不存在?/p>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_NTF
它负责在启动时将msitinit.dll调入内存Q以及一些其它操作?/p>
有不地斚w有对它的引用。另外,如果你用UltraEdit打开npf.sysQ其中一部分是ؕ码,q有一部分可识别的文本中就有一些注册表键|我也不清楚能否删除它们,所以只好保留着?/p>
J2SE 1.5 update 6
Eclipse 3.1.2
Tomcat 5.5.15
后来我加了一根内存条Q在q行Eclipse时经常在昄启动画面Q初始化Q时Q蟩Z个对话框报错Q?br /> Eclipse: JVM terminated Exit code = 1
C:\WINNT\system32\javaw.exe
-Xms40m
-Xmx256m
-jar D:\eclipse\startup.jar
-os win32
-ws win32
-arch x86
-launcher D:\eclipse\eclipse.exe
-name Eclipse
-show splash 600
-exitdata 784_90
-vm C:\WINNT\system32\javaw.exe
-vmargs
-Xms40m
-Xmx256m
-jar D:\eclipse\startup.jar
随后Q或者Eclipse自动退出;或者无法关闭启动画面,死在那儿了Q只能手动杀掉其q程?/p>
q且有时候能成功启动EclipseQ但使用没一会儿又会报上面的错误Q然后自动退出?/p>
一开始,我以为是新加的内存不兼容Q但q行其它E序都很好,唯独Eclipse不好用。于是,我开始检查与Eclipse相关的Y件。先重装Eclipse和TomcatQ问题还是存在。因为报错的好象主要是C:\WINNT\system32\javaw.exe调用D:\eclipse\startup.jar出问题,最后我怀疑有可能是J2SE出问题了Q重装J2SEQ呵呵,好象问题解决了,用了一个小时左右的EclipseQ还没有报错?/p>
但我有一点不明白Q增加内存与J2SE有什么关pdQ?/p>