【发布时间】:2012-11-09 21:49:16
【问题描述】:
我对您可以采取的预防措施感兴趣,以使逆向工程 C 共享库变得更加困难
似乎不可能完全预防,但您可以采取一些措施,使其花费更长的时间,从而降低吸引力/成本更高
代码混淆、编译器优化选项、编译器调试标志等(我对 gcc 编译器特别感兴趣)
还对在 $ 或工时等方面对 ~5KLOC C 共享库(.so 大小约为 200kb)进行逆向工程相对困难的任何想法感兴趣。
【问题讨论】:
-
这个问题更像是“你想隐藏什么?”。 DRM 措施很难隐藏,因为它们归结为 if 语句“如果未获得许可,则警告”。由于庞大的规模和复杂性,实际算法很难进行逆向工程,并且在数月的工作之外可能被视为“无法进行逆向工程”。
-
您应该问的问题是,“谁真正关心反编译我的代码并尝试对其进行逆向工程?”你会发现答案通常是“没人”。更好的是,你可以尝试所有你想要的,但你不会阻止那些真正想要对你的代码进行逆向工程的人。而是将时间和精力花在改进产品上。
-
绝对不是代码混淆。
-
@Hiett 我想我被你的“代码混淆”提到了错误的轨道。您不打算将您的库作为混淆源代码分发,是吗? (如果你这样做了,我会给你一个答案。)
-
@Hiett 如果您只使用非优化编译器,它可能会有所帮助,但它不会比优化编译器做得更糟。事实上,通过降低源代码模式的惯用性,源代码混淆甚至可能阻止优化并使目标代码更容易进行逆向工程。
标签: c obfuscation reverse-engineering decompiling