使反向工程成为C共享库的提示更加困难

bph*_*bph 10 c obfuscation decompiling reverse-engineering

我对您可以采取的预防措施感兴趣,以使逆向工程C共享库变得更加困难

似乎不可能完全阻止,但你可以采取可能需要更长时间的步骤,因此不那么有吸引力/成本更高

代码混淆,编译器优化选项编译器调试标志等等(我会特别感兴趣的是gcc编译器)

对于以$或工时等方式逆向工程~5KLOC C共享库(.so大小~200kb)的相对难度的任何想法也感兴趣.

iab*_*der 7

这些是我所知道的一些技巧:

  • 使用strip--strip-unneeded选项删除只是需要搬迁(因为我们正在谈论的共享库)中的那些所有符号:

    strip --strip-unneeded libmylib.so

  • 静态链接标准libc ,这会产生更大的库/二进制文件,这意味着需要更多的代码进行处理以及混淆,因为将函数与库函数分开将更加困难:

    gcc -static ...

  • 强制编译器内联小函数,这会在代码中嵌入小函数而不是调用它们,因此几乎不可能区分代码和标准库代码.

话虽如此,我必须补充一点,我有一个使用上述措施的二进制文件,我能够在几个小时内对其进行逆向工程,我开始重建,symtab如果你很好奇,我就没有逆向工程大师.