我知道WinAPI具有内置的黑客功能。
我甚至在Pinvoke的C#中使用它们......破解扫雷......很容易......所以......
如何保护我的应用程序免受进程内存编辑,拒绝DLL注入和其他黑客攻击方式。怎么样?!
希望WinAPI有类似void DontTouchMeOrIWillTerminateYou(bool protect)
...
答案 0 :(得分:9)
Windows中的访问控制是基于每个对象的。如果要保护进程对象,则需要在创建进程时(通过CreateProcess的lpProcessAttributes)或之后(通过SetKernelObjectSecurity)设置进程对象的ACL。如果向ACL添加“拒绝所有”条目,则攻击者尝试打开该进程将失败。
当然,进程的所有者(以及用户运行的任何恶意代码)都可以将ACL更改回原来的状态 - 恶意代码可能不会这样做。为了有效防止来自用户空间的攻击,您需要以非交互式用户身份运行该过程(例如,作为LocalSystem)。
没有多少保护可以防止来自内核空间的攻击,因此任何可以安装驱动程序的人也可以破解系统上的任何进程。
答案 1 :(得分:4)
黑客?不。它被称为调试(大部分)
对你的问题的简短回答是“不,你不能那样做”。我听说在Vista中以后会有一些你无法调试的操作系统进程(DRM进程等),但我不确定你是否可以让你的进程以这种方式运行。
真正的问题是你为什么要这样做,而且你没有更重要的事情需要担心(比如性能和可用性,更不用说软件的正确性了)?
答案 2 :(得分:1)
关于内存编辑,检测它的一种简单方法是为你的某些数据保留校验和。
答案 3 :(得分:0)
不要在最终用户控制的计算机上部署/运行您的流程:而是在您自己的计算机上运行您的流程,让最终用户通过互联网与您的流程进行通信。