是否有任何方法可以防止将纯C#程序集可执行文件转储到最初由32位Exe本机代码 Package 器保护的内存中。
eyh26e7m1#
@Hasan说没有办法防止内存转储是正确的。然而,我认为这里有一个更深层次的问题。当你写一个C#程序集“最初 * 受32位EXE本机代码 Package 器保护 ”时(强调我的),似乎你想阻止某人检查C#程序集本身的内容。一旦有人拿到了这个程序集,他们就可以破解它,并了解到比你预期的更多的信息。例如,他们可以使用dotPeek或ILSpy将它反编译为C#源代码。你可以使用混淆器来让使用这些工具的人更难,但即使是混淆也只能做到这一点。底线是:一旦你把它提供给其他人,它就不在你的控制之下了。 期待 * 其他人会反编译你的代码并在torrent网站上发布副本(除非它是免费的). * 不要 * 把你的超级机密数据库密码放在你的代码中,因为有人可以反编译代码并以纯文本形式读出密码.即使你在服务器上运行这些代码,也不要把密码放在代码中,原因我在另一个SO答案here中描述。注意:一旦你开始分发你的软件,也没有办法阻止某人将调试器附加到你正在运行的可执行文件上,所以除了检查可执行文件本身的问题,某人甚至不需要内存转储来检查运行时信息。
qjp7pelc2#
没有傻瓜证明的方法来防止内存转储。你可以把值放在secure strings。这是加密的,因此,如果有人采取内存转储;他们就无法理解了
rkttyhzu3#
编写一个作为受保护进程运行的windows驱动程序。仅通过此驱动程序启动程序,并将其作为受保护进程启动。如果你这样做,即使是反病毒程序也无法扫描你程序的内存,这就好像你试图调用一个受保护进程的openprocess或readprocessmemory,你将收到拒绝访问的消息。这里的主要问题是驱动程序必须是windows认证的驱动程序,这是耗时的实现。此外,您还必须实现一种方法来检查程序是否已被受保护的进程驱动程序调用,如果没有,则打开程序。这种检查可以很容易地删除。
bvjveswy4#
虽然没有完全可靠的方法来防止某人转储您的.net可执行文件,但有一些方法可以使其更加困难。看看我的.net/c#反调试和反转储技术库:https://github.com/Mecanik/Anti-DebugNET为了回答您的具体问题,有一种方法可以防止“MegaDumper”转储您的可执行文件。希望这能帮上忙。
4条答案
按热度按时间eyh26e7m1#
@Hasan说没有办法防止内存转储是正确的。然而,我认为这里有一个更深层次的问题。当你写一个C#程序集“最初 * 受32位EXE本机代码 Package 器保护 ”时(强调我的),似乎你想阻止某人检查C#程序集本身的内容。
一旦有人拿到了这个程序集,他们就可以破解它,并了解到比你预期的更多的信息。例如,他们可以使用dotPeek或ILSpy将它反编译为C#源代码。你可以使用混淆器来让使用这些工具的人更难,但即使是混淆也只能做到这一点。
底线是:一旦你把它提供给其他人,它就不在你的控制之下了。 期待 * 其他人会反编译你的代码并在torrent网站上发布副本(除非它是免费的). * 不要 * 把你的超级机密数据库密码放在你的代码中,因为有人可以反编译代码并以纯文本形式读出密码.即使你在服务器上运行这些代码,也不要把密码放在代码中,原因我在另一个SO答案here中描述。
注意:一旦你开始分发你的软件,也没有办法阻止某人将调试器附加到你正在运行的可执行文件上,所以除了检查可执行文件本身的问题,某人甚至不需要内存转储来检查运行时信息。
qjp7pelc2#
没有傻瓜证明的方法来防止内存转储。你可以把值放在secure strings。这是加密的,因此,如果有人采取内存转储;他们就无法理解了
rkttyhzu3#
编写一个作为受保护进程运行的windows驱动程序。仅通过此驱动程序启动程序,并将其作为受保护进程启动。
如果你这样做,即使是反病毒程序也无法扫描你程序的内存,这就好像你试图调用一个受保护进程的openprocess或readprocessmemory,你将收到拒绝访问的消息。
这里的主要问题是驱动程序必须是windows认证的驱动程序,这是耗时的实现。
此外,您还必须实现一种方法来检查程序是否已被受保护的进程驱动程序调用,如果没有,则打开程序。这种检查可以很容易地删除。
bvjveswy4#
虽然没有完全可靠的方法来防止某人转储您的.net可执行文件,但有一些方法可以使其更加困难。
看看我的.net/c#反调试和反转储技术库:
https://github.com/Mecanik/Anti-DebugNET
为了回答您的具体问题,有一种方法可以防止“MegaDumper”转储您的可执行文件。
希望这能帮上忙。