1 服务控制管理器(services.exe)

1.1 dll类型的服务

该类型的服务,可以通过svchost.exe通过命令行的方式启动。ZwCreateThreadEx函数是比CreateRemoteThread更底层的函数,可以注入dll到服务程序中。ZwCreateThreadEx函数没有在ntdll.dll中声明,所以需要使用GetProcAddress从ntdll.dll中获取该函数的导出地址。

以上几个服务启动的命令行如下:

C:\Windows\System32\svchost.exe -k PeerDist

C:\Windows\system32\svchost.exe -k netsvcs

C:\Windows\System32\svchost.exe -k wsappx –p

参考这个文档:https://blog.csdn.net/liujiayu2/article/details/76955903

服务启动命令-k netsvcs参数,并不是在告诉svchost.exe启动哪个服务。netsvcs代表的是组,表示这个服务是属于哪个组的。组具体有啥用,大概就是节省资源。正是由于采用了分组机制,系统中才会有多个svchost.exe进程,每个进程代表一个组。svchost.exe进程名字相同,主要是根据服务名字区分具体是哪个服务。

Browser服务来说,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services路径下有一个Browser项,名字和服务名字一样(也就是说,有多少个服务,这个路径下就有多少个项,和服务名称相对应),这个项里里边又有一个Parameters子项,Parameters子项里有一个名字叫ServiceDll的键,它的值就是dll的路径。如图:

1.2 exe类型的服务

可以通过SC命令或是windows API实现。在服务控制管理器中类似于下面这样。

"C:\Program Files (x86)\Uniontech P2V tool\uos-p2v-service.exe" "-d"

在注册表里面的表现形式是:

2 映像劫持(IFEO Hijack)

启动一个程序A时,其实启动的是另一个程序B。而且会把打开的程序A的路径,通过命令行参数,传给另一个程序B。如果B不接收命令行参数,则没有任何动作。

2.1 映像劫持notepad.exe例子

参考:https://www.cnblogs.com/predator-wang/p/4117725.html;

2.1.1 程序内容

#include "stdio.h"

int main(int argc, char** argv)

{

int count;

printf("Number of arguments: %d\n", argc);

count = 0;

while (count < argc)

{

printf("Argument %d: %s\n", count, argv[count]);

count++;

}

getchar();

return 0;

}

编译后的exe路径是:"D:\Download\imageReplace\debug\imageReplace.exe";

2.1.2 修改的注册表项

在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\里面新建项notepad.exe,并增加字符串键值debugger。

2.1.3 打开记事本

在imageReplace.cpp文件上面,鼠标右键打开了记事本。先运行imageReplace.exe程序,然后打印出了第一个参数是notepad.exe;第二个参数是打开的文件名称。

映像劫持,windows服务启动的两种形式相关推荐

  1. Windows服务启动进程----Cjwdev.WindowsApi.dll

    windows服务下无法启动外部程序 做一个windows服务监听服务,涉及到windows服务启动外部程序的一个过程,但是调试测试发现,无法简单的用process.start()这种方法, 原因是在 ...

  2. C#穿透session隔离———Windows服务启动UI交互程序

    在Windows服务里面启动其他具有界面的应用程序,需要穿透session隔离,尝试了很多种方法,都可行,现在一一列举下来,并写下几个需要注意的地方. 需要注意的地方 首先要将服务的Account属性 ...

  3. python开发服务程序_Python 编写Windows服务程序:将Python作为Windows服务启动 | 学步园...

    Python程序作为Windows服务启动,需要安装pywin32包.下载路径: #-*- coding:utf-8 -*- import win32serviceutil import win32s ...

  4. windows服务启动路径修改方法

    ** windows服务启动路径修改方法 1.进入服务,查看路径,[开始]=>[运行]=>[services.msc] 2.进入注册表,修改服务路径[开始]=>[运行]=>[r ...

  5. windows服务启动失败解决流程

    最近遇到windows服务启动失败的情况,网上查阅了一下相关的解决方式,顺便记录一下解决的一般流程和方式: (一般是软件的配置文件出现问题,先检查配置文件是否有问题,例如没有符合yml格式(不可使用t ...

  6. windows 服务启动失败的解决办法

    标签: windows 服务启动失败的解决办法 当启动服务失败,原因往往在于用户更改了用户名或者密码所引起. 今天我遇到该问题是我改了系统管理员密码后碰到的,在我该了系统管理员密码后启动postgre ...

  7. nacos实现服务注册与两种消费方式

    nacos实现服务注册与两种消费方式 运行nacos 服务注册实例 两种服务消费方式 RestTemplet Feign 测试 参考 运行nacos 预备环境:64位操作系统.64位JDK1.8+.M ...

  8. WCF 客户端调用服务操作的两种方法

    本节的主要内容:1.通过代理类的方式调用服务操作.2.通过通道的方式调用服务操作.3.代码下载 一.通过代理类的方式调用服务操作(两种方式添加代理类) 1.手动编写代理类,如下: 客户端契约: 1 u ...

  9. QTCreator中字符编码问题以及WINDOWS API A/W两种版本的说明

    首先说明下windows中API有两种结尾的一种以A结尾一种以W结尾, A代表ANSI编码,W代表UTF-16编码,  这里承清下unicode不是编码方式, 而是字符集. ANSI编码对于不同的国家 ...

最新文章

  1. 斯坦福大学深度学习与自然语言处理第四讲:词窗口分类和神经网络
  2. HBase Shell 的基本操作
  3. python memory usage_Python Pandas Index.memory_usage()用法及代码示例
  4. knockoutJS学习笔记01:从拼接字符串到编写模板引擎
  5. 设计模式系列--Singleton
  6. android 字体加粗_Android小技巧之TextView字体加粗
  7. 刚刚,2020年中国信息通信技术服务大会盛大召开!
  8. XMind8update6 补丁
  9. 良品铺子的2021:营收创新高后的“战术调整”
  10. 西门子g120变频器接线图_西门子1500PLC通过工艺对象对G120变频器组态和调试
  11. 一对一直播源码是什么?一对一直播平台如何成功搭建?
  12. 2022年电力电缆操作证考试题模拟考试平台操作
  13. httpd的MPM工作模式
  14. python 对比两张图片是否相同
  15. PFC的数据类型及命名规则
  16. Windows如何使文件显示扩展名
  17. 直播相关知识之二 采集、处理、编码和封装
  18. 【摘录】Ubuntu 10.10编译Android froyo可能需要注意的几个地方
  19. 【中英双语】Linux黑客教程从初学者到高级!
  20. 微机原理与接口技术(一)

热门文章

  1. php读取文件行读,如何在php中按行读取文件
  2. python按行读取文件取消空白行_Python 将以空格分隔的文件行读取为单独的行
  3. CAS原理 基础篇(漫画版)
  4. python取字符串首字母_python学习之字符串
  5. python打飞机躲子弹
  6. mc服务器定时重启linux,我的世界如何让服务器自动重启
  7. 小程序数据可视化图表绘制wxcharts
  8. 肝一个嵌入式日历吧!LVGL『Calendar日历控件』介绍
  9. IDEA搭建Vue项目
  10. c# winform vlcPlayer播放器