调试器无法附加到所选进程

逆向工程 拆卸 艾达 视窗 反编译
2021-06-18 07:32:45

我想调试一个应用程序,当它打开时,它将从中打开一个分支。

例如 program.exe 将在任务管理器中运行 2 program.exe

该软件是EMS SQL Management Studio for PostgreSQL

当我尝试将调试器附加到第一个 .exe 文件(试用向导)时,消息框显示如下:

调试器无法附加选定的进程。这可能表明进程刚刚终止,您没有必要的权限..

我可以将调试器附加到第二个 .exe(主程序窗口)文件。但它没有用。

我认为我的问题是其中一个是父进程,另一个是子进程。我可以知道如何单独打开子进程(也许检查参数),以便我可以将调试器附加到它。

我的问题:如何将调试器附加到应用程序试用向导?

在调试器保护的情况下,我可以打破它或跳过它以进行调试或解包吗?

2个回答
  1. 根据您尝试实现的目标,您可以尝试在非侵入模式下附加 WinDbg :F6 -> 选择进程并在左侧选择非侵入模式。
  2. 其他建议是,在输入点修补磁盘上的可执行文件,例如,您可以使用CFF 资源管理器和无限跳转来定位0xEB 0xFE完成补丁后,只需执行它并附加调试器并恢复初始字节。你可以从这里继续做你想做的事。至于绕过调试器保护,有很多调试器插件可以帮助你:OllyDbg - OllyExtaadp和关于Windbg
  3. 如果存在将在输入点代码之前执行的 Tls 调用(您也可以使用 CFF 资源管理器检查它),您也可以修补它们,并尝试附加调试器。

要调试子进程,您可以使用procmon检查整个流程并获取有关执行子进程的参数的信息。或者,您可以在 CreateProcessA(W) 或类似的地方断点并从那里开始。

HxD可以用作上述的十六进制编辑器。

它可能有一种防止调试器附加的保护形式。程序可以调用IsDebuggerPresent或以不同的方式处理调试器检测。他们通常会弹出一个假的“错误”或立即终止。

您可以修改kernel32.dll(它具有调试器检查功能)并使其返回false,但是弄乱系统文件通常不是一个好主意。