反转 Windows 服务

逆向工程 视窗 ollydbg 恶意软件
2021-07-09 03:49:41

我正在尝试对在 OllyDbg 中动态打开 Windows 服务的恶意软件进行逆向工程。当恶意软件调用 时StartServiceCtrDispatcherW,我收到一个错误: 在此处输入图片说明

如何继续动态分析此恶意软件?

注意:我已经用过 Image File Execution Options

2个回答

如果您想调试服务初始化并且它自动发生(不是由您执行的某些操作触发),您可能无法在任何比 XP 新的 Windows 上使用 ollydbg 进行调试。您必须使用 WinDbg。

您需要为您的进程名称设置 IFEO Debugger 以将 CDB作为服务器运行(例如cdb.exe -server tcp:port=12345 -noio),并将 WinDbg 作为客户端运行并连接到您的服务器(windbg.exe -remote tcp:server=localhost,port=12345)。

您可能希望将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServicesPipeTimeout注册表值更改为更长一点。这是 SCM 等待它运行的服务与之对话的时间。

如果不需要调试初始化,只需在服务启动后附加到服务,然后就可以使用ollydbg。

所有这些以及您需要了解的几乎所有内容都记录在标题为Debugging a Service Application的 MSDN 页面下


编辑:如果可以修补二进制文件,您可以像gandolf建议的那样在入口点添加一个无限循环,然后在登录后附加调试器。

或者,如果二进制文件没有执行任何干扰它的 SEH 技巧:向入口点添加异常(0xCC - int 3 是明显的选择),设置AeDebug为长时间运行的进程(例如notepad.exe),然后附加调试器. 这就是Inside Windows Debugging 的建议(第 139 页)。

或者,更简单、更有意义的方法是:添加相同的 INT3,并设置AeDebug为与cdb.exe放入 IFEO相同的命令行,并在登录后将 WinDbg 连接到它。

好吧,据我所知,您无法在调试器(证明)中调试服务的处理代码

如果您真的需要它,我认为您应该坚持在运行恶意软件的情况下对 vm 进行内核调试,但也许有人会提供更好的解决方案 - 这是第一个想到的解决方案。

UPD

评论中有一个链接,涵盖了内核调试所需的基础知识。但是,在您完成所有相关的设置后,您可能会面临在服务启动的确切位置中断的问题。

我认为以下命令将帮助您走得更远,除非您自己已经这样做了:

bp ADVAPI32!StartServiceCtrlDispatcherW; dd esp或使用备忘单获取更多关于 Windbg 的灵感。