社区
Java SE
帖子详情
如何将Java开发的控制台程序像服务一样运行?
MAX°孟兆
2004-09-28 01:50:42
如何将Java开发的控制台程序像服务一样运行?即不用登录WINDOWS也可以自动启动,同时启动后直接在后台运行,不显示控制台窗口,同时可以控制其关闭或重启
...全文
326
2
打赏
收藏
如何将Java开发的控制台程序像服务一样运行?
如何将Java开发的控制台程序像服务一样运行?即不用登录WINDOWS也可以自动启动,同时启动后直接在后台运行,不显示控制台窗口,同时可以控制其关闭或重启
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
控制台
程序
示例,演示如何读取文本文件,显示内容并进行行数、单词数和字符数计数。介绍了
Java
FileReader和BufferedReader的使用,以及
java
c和
java
命令的区别和在
Java
开发
中的作用。
VS2019 C++安卓
控制台
程序
开发
本文介绍了如何使用Visual Studio 2019和CMake
开发
Android
控制台
应用
程序
。教程涵盖从创建CMake项目到配置Android-v8a-Debug,通过ADB推送和
运行
程序
的完整步骤。强调了NDK、ADB的重要性,并提醒读者
控制台
应用仅适用于调试,最终产品应生成.so或.a库。
控制台
运行
java
这篇文章介绍了如何在
控制台
环境下创建、编译和执行
Java
程序
。首先,新建一个名为HelloWorld.
java
的记事本文件,编写包含main方法的代码。接着,通过命令行使用
java
c编译.
java
文件,生成.class文件。最后,
运行
java
命令执行
程序
。如果
程序
位于包内,需要指定完整的包名来执行。
Java
开发
基于
控制台
的购书系统
本文介绍了一款基于
Java
开发
的
控制台
购书系统,该系统允许用户查看图书信息、购买图书并查看订单详情。系统包含图书类和订单类,通过
控制台
交互完成购物流程。
idea
java
程序
打包以及在
控制台
运行
本文介绍了在Idea中对
Java
程序
进行打包,以及在
控制台
运行
打包
程序
的具体步骤。打包需在项目结构中设置JAR、选择主类等,完成后可在目录查看。
运行
时在
控制台
输入cd命令进入jar路径,再输入
java
-jar命令回车即可。
Java SE
62,622
社区成员
307,252
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章