社区
Java SE
帖子详情
如何将Java开发的控制台程序像服务一样运行?
MAX°孟兆
2004-09-28 01:50:42
如何将Java开发的控制台程序像服务一样运行?即不用登录WINDOWS也可以自动启动,同时启动后直接在后台运行,不显示控制台窗口,同时可以控制其关闭或重启
...全文
270
2
打赏
收藏
如何将Java开发的控制台程序像服务一样运行?
如何将Java开发的控制台程序像服务一样运行?即不用登录WINDOWS也可以自动启动,同时启动后直接在后台运行,不显示控制台窗口,同时可以控制其关闭或重启
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
minghuitian
2004-10-02
打赏
举报
回复
同意上面仁兄的意见!
javafaq2004
2004-09-28
打赏
举报
回复
现在添加系统服务的工具很多,最典型的就是netservice。但是我们这里讲的是手工添加系统服务,所以工具的使用不在本文的讨论范围之内。
现在很多的木马、后门、蠕虫病毒都是通过修改注册表中的RUN键值来实现自启动。
但是这种自启动模式不是很隐蔽的,稍微懂点安全的人,一般发现电脑被黑,都会查看RUN键值的。
于是系统服务便成为了一种相对隐蔽的自启动模式。比如冲击波杀手就采用系统服务来自启动病毒程序。
现在添加系统服务的工具很多,最典型的就是netservice。但是我们这里讲的是手工添加系统服务,所以工具的使用不在本文的讨论范围之内。
WINDOWS里的很多东西都是跟注册表息息相关的,系统服务也不例外。
系统服务跟以下的注册表几个项目相关:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services
我们完全可以找到在系统服务中已注册的服务的键值来依样画葫芦。
在以上任何注册表列中添加一个新项:
名字是你想要添加系统服务的名字,比如Backdoor。
在BACKDOOR项下新建一个字符串,数值名称Displayname 数值数据为要添加服务的
名称Backdoor。
下面列出一个表,会直观一些:
名称 类型 数据 备注
Displayname REG_SZ 想要添加服务的名称 想要添加服务的名称
Description REG_SZ 服务的描述 服务的描述
ImagePath REG EXPAND SZ 程序的路径
Start REG_DWORD 0,2,3,4 2代表自动启动,3代表手动启动服务.4代表禁用服务,0代表系统对底层设备驱动(一般不需要这个)
ErrorControl REG_DWORD 1
Type REG_DWORD 10 or 20 一般应用程序都是10,其他的对应20
ObjectName REG_SZ LocalSystem 显示本地登陆
注意:在XP/2003下可以完全手工来添加REG EXPAND SZ类型。在XP/2003下直接修改ImagePath 键值就可以了。但是在WIN2000下却不可以。原因我也不清楚:(。但是在WIN2000下我们写一个REG来直接注册系统服务,这样WIN2000下添加系统也能很轻松了。这里同样需要注意的是注册表文件里的ImagePath的数值类型必须是HEX(16进制)。可以拿WINHEX来把程序的绝对路径转换成16进制的。每一个数值用逗号搁开。比如我的ImagePath键值是C:\winnt\nukegroup.exe那就应该转换成:
63,3A,5C,77,69,6E,6E,74,5C,6E,75,6B,65,2E,65,78,65(无空格)
打开记事本,敲入以下内容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SRVTEST]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):63,3A,5C,77,69,6E,6E,74,5C,6E,75,6B,65,2E,65,78,65
"DisplayName"="SRVTEST"
"ObjectName"="LocalSystem"
"Description"="系统服务测试"
把以上信息保存为addsrv.reg,我们就可以依靠命令来导入注册表,从而达到添加系统服务的目的。
我们在命令控制台输入regedit /s addsrv.reg,等机器重新启动,这个服务就被成功添加了。
但是我在真正实验的时候就遇到困难了。ImagePath的数值是乱码(图1)(图2),
<IMG alt="user posted image" border=0 src="http://darkne2s.nease.net/images/1.jpg">
<IMG alt="user posted image" border=0 src="http://darkne2s.nease.net/images/2.jpg">
怎么想也不明白。但是这时可以把乱码修改成绝对路径了。如果直接把REG信息写成这样
"ImagePath"=hex(2):C:\WINNT\NUKEGROUP.EXE
其他的键值都可以添加,这个键值就不可以了?总之我们可以先添加乱码的ImagePath,然后再修改成C:\winnt\nukegroup.exe 这样也不是不可能的。就是在命令行下来添加就很麻烦了。(图3)
以上是Windows 2000手工添加系统服务的方法,对于Windows 98 注册表结构是不一样的,但是Windows 98仍然可以通过注册表来实现添加系统服务,而且还要更简单一些。
在项目“HKLM/SOFTWARE/Microsoft/WindowsCurrentVersion/RunServices”下添加一个新字符串数值。
比如,如果程序的名字叫做“BACKDOOR”,就建立一个名为“BACKDOOR”的字符串数值,然后在数据域中输入执行程序的完整路径。
手工添加一个系统服务就这么简单,手工删除系统也是一个道理。通过注册表来实现,这里就不多说了。
java
源码包---
java
源码 大量 实例
用
JAVA
开发
的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。
Java
日期选择控件完整源代码 14个目标文件 内容索引:
JAVA
源码,系统相关,日历,...
jdk1.7 64位官方正式版 jdk-7u79-linux-x64
Java
Development Kit (JDK) 是
Java
编程语言的核心组件,它为
开发
者提供了编译、调试和
运行
Java
应用
程序
所需的所有工具。JDK 1.7(也称为
Java
7)是Oracle公司发布的一个重要版本,它引入了许多新特性,优化了性能,...
【
java
】简单的
Java
语言
控制台
程序
打开命令行工具(在Windows中是`cmd`,在macOS和Linux中是`Terminal`),然后切换到包含`TextFileProcessor.
java
`文件的目录。首先,将上面的代码复制...是两个不同的命令,它们各自在
Java
开发
中扮演着不同的角色。
java
控制台
程序
_
控制台
应用
程序
开发
(C# 与
Java
)
控制台
应用
程序
开发
(C# 与
Java
)09/04/2008本文内容更新:2007 年 11 月
控制台
应用
程序
无需使用任何图形用户界面即可读取标准输入和输出 (I/O) 中的数据并向其写入数据。
Java
和 C# 的
控制台
应用
程序
结构十分相似,...
Java
由小白到高手之零基础学
Java
——第三课 使用Eclipse
开发
Java
控制台
程序
这里写目录标题IDE简介什么是IDE常见的IDEEclipse
开发
工具的下载、配置... 显示
控制台
透视图练习使用Eclipse
开发
Java
程序
创建
Java
Project创建
Java
Class写源码
运行
Java
程序
生成
Java
Doc1.
java
Doc的预览:2. 生成
java
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章