如何手动添加Windows服务

如何手动添加Windows服务,第1张

windows 手动添加服务

方法一:修改注册表

在注册表编辑器,展开分支"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services",在右侧窗格中显示的就是本机安装的服务项。如果要新建服务,只须点击"编辑→新建→项" ,然后为此项命名,如"test";然后右击该项,选择"新建→字符串值"或"新建→Dword值"即可。添加一个服务项目具体需要添加的键值如下:"DisplayName",字符串值,对应服务名称;

"Description",字符串值,对应服务描述;

"ImagePath",字符串值,对应该服务程序所在的路径;

"ObjectName",字符串值,值为"LocalSystem",表示本地登录;

"ErrorControl",Dword值,值为"1";

"Start",Dword值,值为2表示自动运行,值为3表示手动运行,值为4表示禁止;

"Type",Dword值,应用程序对应10,其它对应20。

另外,还要在"test"项下新建一个"Enum"项。如果有些必须通过srvany来加载的还必须 添加另外的Parameters子项在该项中提供详细的要加为服务的程序所在的路径。而上面的那个 路径就需要指到srvany所在的路径。

方法二:脚本 *** 作

sc create myserver binpath= c:\windows\Sc\myserver.exe

sc config myservers tart= auto

sc start myserver

方法三: 写注册表文件

现在很多的木马、后门、蠕虫病毒都是通过修改注册表中的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\"want to create the name of service"]

"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),

怎么想也不明白。但是这时可以把乱码修改成绝对路径了。如果直接把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”的字符串数值,然后在数据域中输入执行程序的完整路径。

手工添加一个系统服务就这么简单,手工删除系统也是一个道理。通过注册表来实现,这里就不多说了。

1、最简单的方法是:

把程序的快捷方式拉到“开始——》程序——》启动”目录就可以了

2.在“开始→运行”中执行“Gpedit.msc”打开“组策略”,“本地计算机策略”中有两个选项:“计算机配置”与“用户配置”,展开“用户配置→管理模板→系统→登录”,双击“在用户登录时运行这些程序”子项进行属性设置,选定“设置”项中的“已启用”项并单击“显示”按钮d出“显示内容”窗口,再单击“添加”按钮,在“添加项目”窗口内的文本框中输入要自启动的程序的路径.

所以打算给他解决这个问题,方式就是手动添加一个SQL SERVER服务并自动启动。 方法一:利用导出注册表方式添加服务WINDOWS系统的服务主要体现在注册表中,其位置在【HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services】,正好我系统中有SQL SERVER以服务启动,所以可以直接导出SQL SERVER服务的注册表项【HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MSSQLSERVER】为.reg文件,然后导入到对方的系统中,并在对方系统的注册表中找到这个新增的项,把其中涉及到路径的地方修改为正确的路径即可(ImagePath键值)。至于其他的什么随机启动可以在系统的服务中修改。修改完成以后重启系统,这一步很重要!!!否则你在services.msc的服务中看不到这个新增的服务,也无法启动。原因是服务管理器里显示的内容是内存中的内容,这些内容是系统启动的时候遍历注册表预读到系统中的。重启以后,一切都OK了。 方法二:利用命令sc create方式添加服务sc命令是WINDOWS中用来管理服务器的一个命令,sc create是其子项,用来创建服务,利用sc create /?命令可以查看起帮助,如下:DESCRIPTION:Creates a service entry in the registry and Service Database.USAGE:sc <server>create [service name] [binPath= ] <option1><option2>...OPTIONS:NOTE: The option name includes the equal sign.type= <own|share|interact|kernel|filesys|rec>(default = own)start= <boot|system|auto|demand|disabled>(default = demand)error= <normal|severe|critical|ignore>(default = normal)binPath= <BinaryPathName>group= <LoadOrderGroup>tag= <yes|no>depend= <Dependencies(separated by / (forward slash))>obj= <AccountName|ObjectName>(default = LocalSystem)password= <password>OK,现在根据帮助来拼装命令就可以了,如我仿照我的MSSQL SERVER拼装的命令是:sc create MSSQLSERVER binPath= "C:/program files/mssql/sqlservr.exe" TYPE= "own" start= "auto" TAG= "no" DisplayName= "MSSQLSERVER SERVICES" 拼装好以后在对方的命令行下执行命令就可以了,如果结果返回为sc create的帮助,说明命令中有错误的地方,仔细检查一下参数的名称和空格等。执行成功以后你可以用sc query 来查看这个服务。也可以用sc description来修改服务的描述。如果你不能远程 *** 作对方电脑,你可以把所有要执行的命令写成一个.bat文件传给对方执行。 这条命令是即时生效,会更新内存和注册表,所以你在服务管理(services.msc)下可以直接看到,也不用重启系统! 特别注意:参数[binPath= ]等号后面有空格!!其他参数也一样,赋值最好用引号括起来,避免路径中有空格存在!! PS:如何查看系统中有哪些服务?方法1:在【开始菜单】下的【运行】中输入命令services.msc。方法2:键盘windows键+R直接调出【运行】窗口,输入命令services.msc。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11537688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存