保护资源免受逆向工程影响的最佳实践

Best practice to protect resources against reverse engineering

为了在一定程度上防止逆向工程或反编译,我决定根据描述的方法将我的 C# 应用程序的重要部分(包括几个 xml 资源移动到本机 C++ DLL 文件中 here for using resources in C++ programs and practice1 and practice2 用于在 C# 应用程序中使用 C++ DLL 文件。现在我有两个问题:

  1. 这是解决应用程序反逆向工程保护的正确方法吗?
  2. W̶h̶a̶t̶ ̶i̶s̶ ̶t̶h̶e̶ ̶c̶o̶r̶r̶e̶c̶t̶ ̶w̶a̶y̶ ̶o̶f̶ ̶r̶e̶t̶u̶r̶n̶i̶n̶g̶ ̶t̶e̶x̶t̶ ̶c̶o̶n̶t̶e̶n̶t̶s̶ ̶i̶n̶ ̶C̶+̶+̶ ̶D̶L̶L̶ ̶f̶i̶l̶e̶s̶ ̶b̶a̶s̶e̶d̶ ̶o̶n̶ ̶p̶r̶a̶c̶t̶i̶c̶e̶1̶ ̶a̶n̶d̶ ̶p̶r̶a̶c̶t̶i̶c̶e̶2̶.̶ ̶I̶ ̶h̶a̶v̶e̶ ̶r̶e̶a̶d̶ ̶m̶a̶n̶a̶y̶ ̶s̶a̶m̶p̶l̶e̶s̶,̶ ̶b̶u̶t̶ ̶a̶l̶l̶ ̶o̶f̶ ̶t̶h̶o̶s̶e̶ ̶t̶h̶a̶t̶ ̶I̶ ̶r̶e̶a̶d̶ ̶h̶a̶d̶ ̶d̶e̶s̶c̶r̶i̶b̶e̶d̶ ̶b̶y̶ ̶u̶s̶i̶n̶g̶ ̶A̶d̶d̶/̶S̶u̶b̶t̶r̶a̶c̶t̶ /̶M̶u̶l̶t̶i̶p̶l̶y̶/̶D̶e̶v̶i̶d̶e̶̶f̶u̶n̶c̶t̶i̶o̶n̶s̶.̶

更新: 我跳过第二个问题,因为可能是编码问题,而第一个问题是关于实践的问题。

将文本资源放在 DLL 中是一种隐藏资源的技术,而不是保护它们。如果目标是保护您的资源免受逆向工程的侵害,则此技术只能作为 "security by obscurity," 的最低和最不有效的措施,它无法提供任何安全措施来防止任何决心入侵您的资源的人。

对于任何程度的实际保护,您都需要使用加密,因为使用自定义密钥加密您的资源需要对任何试图对您的系统进行逆向工程的人进行更高程度的复杂化。这不会完全不可能对您的系统进行逆向工程,但足以阻止知识有限的黑客乱搞您的代码。