c# - 禁用附加到进程

标签 c# c++ c#-4.0 attach-to-process

我正在寻找一种方法来检查是否有人依附于我启动的程序/进程。

我想通过禁用附加到进程来增加对我的程序进行逆向工程的难度。

这行吗?是否有一些 API 调用可以查看我的进程是否附加了某些内容,如果是则结束进程。

根据我的理解,我可以或应该能够在我的代码中检查这一点,如果我看到这是真的,我可以杀死我自己或我自己的附属物。

#if DEBUG
RTBconsole.Text = "Debug version";
#endif

这只会阻止我调试我的代码我希望能够停止在我的进程中发生的任何附件表单。

最佳答案

一些策略...

#1:

有一些用于检测调试器存在的 API:

但这里有明显的局限性:如果调试器暂停了执行,则此检查显然没有用。所以这不是水密的。

#2:

将您自己的调试器附加到您关心的进程。这样用户就无法附加自己的(一个进程只能同时调试一次)。

当然,用户可以终止您的调试器进程。

或者使用您无法阻止或检测的内核调试器。

由此得出结论:在某种程度上,只要用户拥有对系统的完全访问权限,他们就可以为所欲为,因此请务必权衡反调试工作与意识到新手黑客将花费更少的时间来解决它。

关于c# - 禁用附加到进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917781/

相关文章:

c++ - 为什么我收到错误 C2061(语法错误 : identifier)?

C++ 头文件依赖

html - 如何在 Windows Phone 中将 HTML 代码转换为 XAML

c# - 如果匹配字段位于 URL 或发布数据中,MVC 4.5 会忽略模型中的值吗?

c# - 如何完全获取c#中方法的路径?

c# - 如果类本身具有自定义属性,如何要求在所有类成员上使用自定义属性?

c# - 使用 JSON 为 AnnotatedTimeLine 填充 google.visualization.DataTable

c++ - 如何计算数字范围内的数组项

c# - 单例事件

c# - 为什么这会返回零结果?