首页 > 系统相关 >调试windows服务

调试windows服务

时间:2022-10-09 15:33:12浏览次数:78  
标签:桌面 启动 windows 设置 服务 交互 调试

windows服务启动后,进程是system权限,一般od等无法附加,通常有2个办法

 

方法1(不完美): 

找到服务对应的进程pe文件,直接拖入od载入,如果直接跑起来会闪退,因为服务进程肯定是会检测是否在服务启动的,所以需要在入口断点后,去寻找 StartServiceCtrlDispatcher 函数的位置

 

 

StartServiceCtrlDispatcher  的入参是 SERVICE_TABLE_ ENTRY 结构体

 

typedef struct _SERVICE_TABLE_ENTRYA {
LPSTR lpServiceName;
LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
} SERVICE_TABLE_ENTRYA, *LPSERVICE_TABLE_ENTRYA;

根据入参倒推,可以获取到 lpServiceProc 的地址,也就是主函数的地址

然后直接设置EIP跳转到该地址调试

虽然是进入main方法了,但因为不是服务启动的,所以他调用服务的函数的时候会报错,我们可以让调试器来接管异常,但如果因为报错引起的连锁反应的话,闪退还是迟早的事。。所以这个方法不完美

 

 

 

方法2:

1.先设置改进程的映像劫持,映像劫持可看我的另一个博客  通过 映像劫持 来调试程序 - 、有妖气 - 博客园 (cnblogs.com)

2.停止该服务

3.当调试服务.exe文件时,其实是在从服务启动时进行调试的,系统对启动服务设置了默认的超时时间,超过时间就会退出启动并报错:

 

 

 

 

系统默认启动服务的超时时间是30秒,但30秒远远不够对服务进行分析,所以要延长服务超时的时长。

 

打开注册表,在HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control 键值下查找ServicesPipeTimeout参数,一般不存在,需要新建。新建DWORD值“ServicesPipeTimeout”,其值为欲设置的超时时间,先选择为十进制,数值单位是毫秒,如设置 24小时,则值为86400000毫秒:

 

 

 

 

 

在设置好貌似不能直接起到作用,需要重启才能有效果。

 

 4. 设置要调试的服务与桌面交互

之有打开了桌面交互功能才能够在服务被加载的时候弹出OD/Windbg。首先是打开服务的桌面交互功能。在cmd中输入,services.msc,打开服务控制版面,找到要被调试的服务,然后勾选桌面交互选项:

 

 

 

实际上这等同于修改注册表中的要调试服务的type选项。选择“Type”,修改其值为:原值 OR 0x00000100(如原值为:0x00000010 OR 0x00000100 =0x00000110):

 

 

 除了要打开服务的桌面交互选项之外,还要开启服务的桌面交互检测服务,系统默认通常是关闭的,需要手动打开。如果不打开该服务,OD/windbg调试窗口就不会弹出:

 

 

 启动该服务。

 

注意:很多电脑找不到桌面交互检测服务,尤其是win10 就算开启来也会有问题,建议虚拟机里装win7 调试

 

5. 启动服务
保证上面的步骤都设置好之后,启动要调试的服务,会弹出如下对话框:

 

 

点击查看信息,此时调试器会跳出,加载到服务起始处:

 

 

参考连接:[原创]使用Windbg&OllyDbg从头调试windows服务-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com

 

标签:桌面,启动,windows,设置,服务,交互,调试
From: https://www.cnblogs.com/youyaoqi/p/16772249.html

相关文章

  • Git代码托管服务
    常用的代码托管服务借助互联网上提供的一些代码托管服务来实现,比较常用的有GitHub,码云,GitLib等GitHub(https://github.com),是一个面向开源及私有软件的托管平台,只支......
  • kerberos开启后服务报错Unable to obtain password from user
    异常日志022-10-0910:26:16,230ERRORorg.apache.hadoop.hdfs.qjournal.server.JournalNode:Failedtostartjournalnode.org.apache.hadoop.security.KerberosAuthExce......
  • node+express搭建服务器环境
    一、概述express是一个基于​​Node.js​​平台,快速、开放、极简的Web开发框架,网址​​Express-基于Node.js平台的web应用开发框架-Express中文文档|Express......
  • 案例分享:Qt工程机械真空激光焊接系统软件产品定制(西门子PLC,mysql数据库,用户权限控制,界
    需求  1.触摸屏控制,按照客户需求,ui由本司美工承担设计,显示分辨率1280x1024,同时支持鼠标操作。  2.权限控制:三种权限,分为管理员(可以定制模块界面,修改产品名称等定制......
  • 【Web开发】Python实现Web服务器(Sanic)
    1、简介https://sanic.dev/zh/https://github.com/sanic-org/sanicSanic是Python3.7+Web服务器和Web框架,旨在提高性能。它允许使用Python3.5中添加的async/awa......
  • 手把手教你玩转 Gitea|在 Windows 系统上安装 Gitea
    Gitea支持在Windows系统上安装和使用。Gitea本身作为一个单体应用程序,即点即用,如需长期驻留作为后台服务并开机运行就要依靠Windows服务工具sc.exe。通过本文,你将......
  • SpringBoot 后台服务端 杂记
    由于公司人手不足,导致桌面应用、微信小程序以及两端对应的服务端都由我自己开发。为了加快开发进度,采用SpringBoot+SpringSecurity+JWT的方式(桌面应用的服务端,微信小......
  • MQTT服务端安装ubuntu
    https://blog.csdn.net/weixin_43850980/article/details/122217933MQTT安装发送订阅terminalmosquitto_pub-t"test"-m"msssss测试内容"接收订阅terminalmosquitto_......
  • 搭建nginx下载服务器
    1,获取nginx的安装包​​ http://nginx.org/download/nginx-1.9.0.tar.gz​​2,解压tar xvf nginx-1.9.0.tar.gz3,配置nginx的安装目录./configure--prefix=/home/work/......
  • 《分布式服务架构:原理、设计与实战》 免费电子版
    /*免责声明:全部内容都属于是段友分享,我只是属于整理。**/   /*  写在前边,个人觉得****弄一个积分下载,就是在自掘坟墓。表面上看起来是可以为个人赚积分,实际砍掉分享交......