检测对进程的内存访问
本文关键字:内存 访问 进程 检测 | 更新日期: 2023-09-27 18:19:02
我试图检查应用程序是否试图操纵特定进程(例如钩子本身)。我找不到一个合适的方法来完成这件事。是否可以在运行过程中计算校验和?如果不是,我怎么能发现这种情况?
其他进程不能在你的进程中制造钩子,可以修改内存,但是要制造钩子,这个代码必须在你的地址空间中,这可以在启动时向你的进程注入DLL(在运行时注入DLL是一个困难的),你可以通过列出你的进程中的DLL并在代码中搜索一些ReadProcessMemory
, WriteProcessMemory
, OpenProcess
, CallNextHookEx
函数调用来轻松检查这一点。为此,获取函数的地址(GetProcAddress
)并在代码中搜索值(您可以为其添加一些asm call
预测,以获得窄范围结果)。
你可以检查你的PE文件在磁盘和内存中的问题,当启动时发生DLL注入时,你的PE文件从文件复制到内存后应该被损坏,在最后一个DLL库之后,你应该用额外的DLL导入覆盖调试符号。这个修改可以在文件中进行,就像在内存中一样。
当你使用c#语言时,最好的方法是混淆你的代码,但可能对你来说并不容易。我认为这是一个很好的方法,因为你不会勾起一些你不知道如何工作的东西,因为你不知道你必须做什么钩子以及在哪里。但是要想写出好的、容易混淆的c#代码,你必须找到好的软件,而且可能要付出不小的代价。