概述
环境:Win 7 x86
工具:OD调试器
1、添加映像劫持
在HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows NT CurrentVersion Image File Execution Options下
新建以调试进程为名的项,例如新建svchost.exe,然后在新建字符串并命名Debugger,填写为调试器.exe路径。
2、修改调试器与服务的交互检测并开启服务的桌面交互检测服务
一旦调用CreateService,服务控制台中就有显示该服务了,可以通过运行services.msc命令打开服务控制台。
两种方法修改
一种是在服务控制台中打开服务属性窗口,选择登录项,将本地系统账户和允许服务与桌面交互打钩。
另一种是修改对应服务注册表中type值,打开HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesservicename,将原值与0x100异或后写入,操作完以后便打开了调试器与服务的交互检测。启动Interactive Service Detection服务,打开桌面交互检测服务。
3、修改服务与服务控制管理器的通信服务时间
打开HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl,新建DWORD值ServicesPipeTimeout,然后修改数值数据为86400000(24小时),如果不修改就会超时,服务控制管理器就结束承载服务的进程。这一步需要重启才会生效。(重启之前记得先把映像劫持删掉,重启之后再重新写回去,不然重启凡是调用svchost.exe启动服务时都会附加到调试器)
4、在服务控制台中找到服务后点击启动,就能挂载到调试器了
5、此时注意会弹出一个窗口,也有可能不弹出,选择查看消息,就到了调试界面
6、进到调试界面以后,肯定是在svchost.exe领空,可以在OD选项中选择中断于新模块
当病毒模块加载时就会断下来了,然后可以在相关病毒模块基址空间可疑代码处下断点进行调试。
最后
以上就是爱听歌狗为你收集整理的Windows下如何调试由dll文件运行的服务的全部内容,希望文章能够帮你解决Windows下如何调试由dll文件运行的服务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复