提高反向工程C共享库更困难

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

似乎不可能完全防止,但是您可以采取可能需要更长时间的步骤,因此不太有吸引力/更昂贵的做法

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

也有兴趣在以$或人工小时为单位的逆向工程相对困难的任何想法a〜5KLOC C共享库(.so大小〜200kb).

解决方法

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

>使用–strip-unneeded选项删除所有符号,除了重定位所需的所有符号(因为我们在谈论一个共享库):

strip – 不需要的libmylib.so
>与标准libc静态链接,这导致了一个更大的库/二进制,这意味着更多的代码可以通过,也是混淆,因为更容易将函数与库函数分开:

gcc -static …
>强制编译器内联小功能,这将在代码中嵌入小的函数,而不是调用它们,因此几乎不可能区分代码和标准库代码.

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...