微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

window服务调试二:调试windows服务方法

调试服务程序的方法有三种 直接设置EIP法   设置循环法  设置JIT法

一、直接设置EIP法

较为简单的服务程序,可以用这个方法,直接启动调试,用调试器设置当前EIP为svcMain的入口,调试功能

二、设置循环法

由于直接调试的服务程序与SCM(Services Control Manager)启动的程序表现不一样,所以我们用附加SCM启动的程序,但是有个问题是,一旦启动那么就会执行功能,我们如何动态调试前面的功能呢,其实很简单,我只要的服务程序的入口点设置无限循环如EB FE,这个指令的意思是跳转到当前位置,这样就会陷入无限循环,这个时候附加后还原改动的代码就能调试完整的功能

三、设置JIT法

设置JIT法就是设置认调试器,每当系统接收到的程序不能自己处理的异常就会启动认调试器,所以我们可以修改程序在合适的位置触发异常,这样当异常发生的时候就会自动打开调试器附加程序,这个时候附加后还原改动的代码就能调试完整的功能

注意:

1.SCM开始启动服务后,认等待30秒,若30秒后,服务程序没有设置启动标识为运行,SCM就会认为启动失败,这时我们可以修改注册表的HKEY_LOCAL_MACHINE\SYstem\CurrentControlSet\Control\ServicesPipeTimeout

image

值可以设长一点,单位为秒
2.JIT的设置方法x64dbg和ollydeg都有自动设置

x64dbg:
菜单栏选择 选项(o)->选项(p)->杂项->将这份x64dbg设为即时调试器

image


ollydbg:
菜单栏选择 选项(T)->实时调试设置(J)->设置OllyICE为实时调试器

image

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐