映像劫持,windows服务启动的两种形式
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服务启动的两种形式相关推荐
- Windows服务启动进程----Cjwdev.WindowsApi.dll
windows服务下无法启动外部程序 做一个windows服务监听服务,涉及到windows服务启动外部程序的一个过程,但是调试测试发现,无法简单的用process.start()这种方法, 原因是在 ...
- C#穿透session隔离———Windows服务启动UI交互程序
在Windows服务里面启动其他具有界面的应用程序,需要穿透session隔离,尝试了很多种方法,都可行,现在一一列举下来,并写下几个需要注意的地方. 需要注意的地方 首先要将服务的Account属性 ...
- python开发服务程序_Python 编写Windows服务程序:将Python作为Windows服务启动 | 学步园...
Python程序作为Windows服务启动,需要安装pywin32包.下载路径: #-*- coding:utf-8 -*- import win32serviceutil import win32s ...
- windows服务启动路径修改方法
** windows服务启动路径修改方法 1.进入服务,查看路径,[开始]=>[运行]=>[services.msc] 2.进入注册表,修改服务路径[开始]=>[运行]=>[r ...
- windows服务启动失败解决流程
最近遇到windows服务启动失败的情况,网上查阅了一下相关的解决方式,顺便记录一下解决的一般流程和方式: (一般是软件的配置文件出现问题,先检查配置文件是否有问题,例如没有符合yml格式(不可使用t ...
- windows 服务启动失败的解决办法
标签: windows 服务启动失败的解决办法 当启动服务失败,原因往往在于用户更改了用户名或者密码所引起. 今天我遇到该问题是我改了系统管理员密码后碰到的,在我该了系统管理员密码后启动postgre ...
- nacos实现服务注册与两种消费方式
nacos实现服务注册与两种消费方式 运行nacos 服务注册实例 两种服务消费方式 RestTemplet Feign 测试 参考 运行nacos 预备环境:64位操作系统.64位JDK1.8+.M ...
- WCF 客户端调用服务操作的两种方法
本节的主要内容:1.通过代理类的方式调用服务操作.2.通过通道的方式调用服务操作.3.代码下载 一.通过代理类的方式调用服务操作(两种方式添加代理类) 1.手动编写代理类,如下: 客户端契约: 1 u ...
- QTCreator中字符编码问题以及WINDOWS API A/W两种版本的说明
首先说明下windows中API有两种结尾的一种以A结尾一种以W结尾, A代表ANSI编码,W代表UTF-16编码, 这里承清下unicode不是编码方式, 而是字符集. ANSI编码对于不同的国家 ...
最新文章
- 斯坦福大学深度学习与自然语言处理第四讲:词窗口分类和神经网络
- HBase Shell 的基本操作
- python memory usage_Python Pandas Index.memory_usage()用法及代码示例
- knockoutJS学习笔记01:从拼接字符串到编写模板引擎
- 设计模式系列--Singleton
- android 字体加粗_Android小技巧之TextView字体加粗
- 刚刚,2020年中国信息通信技术服务大会盛大召开!
- XMind8update6 补丁
- 良品铺子的2021:营收创新高后的“战术调整”
- 西门子g120变频器接线图_西门子1500PLC通过工艺对象对G120变频器组态和调试
- 一对一直播源码是什么?一对一直播平台如何成功搭建?
- 2022年电力电缆操作证考试题模拟考试平台操作
- httpd的MPM工作模式
- python 对比两张图片是否相同
- PFC的数据类型及命名规则
- Windows如何使文件显示扩展名
- 直播相关知识之二 采集、处理、编码和封装
- 【摘录】Ubuntu 10.10编译Android froyo可能需要注意的几个地方
- 【中英双语】Linux黑客教程从初学者到高级!
- 微机原理与接口技术(一)