c - 使用 rtld/free loader/linkers 加载加密的共享对象

标签 c linux elf

我正在做一些关于加密/软件保护的研究。我想链接动态加密的共享对象(Linux、x86架构、ELF32/64格式)

  • 要保护的代码包含在共享对象中(已加密,没有有效的 ELF)。
  • 对象本身是一个有效的 ELF 文件,包含一个 init 方法
  • 应该开始解密,这取决于加载程序调用的 init 函数中的可用许可证。
  • 加密后,代码作为有效的 ELF 文件存在于内存中。

还有一些进一步的要求:

  • 不得存储解密后的代码(即使是临时存储在磁盘上)- 防止容易的对象转储和代码重用
  • 不得发布保护算法,因此我可能不会使用部分 GNU 代码(即使人们在那里做了很棒的工作!)

我认为困难的方法是重新实现一个提供所需功能的加载器/链接器...也许有一种方法可以使用 Linux rtld 或它的一部分,其他链接器? 有没有更简单的方法?
感谢您的每一个想法/提示

一些相关链接/信息

最佳答案

看看Shiva如果你对此感兴趣。没有向公众发布源代码,但理论仍然存在。

关于c - 使用 rtld/free loader/linkers 加载加密的共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5740853/

相关文章:

linux - 如何从 elf 文件格式创建可执行十六进制

c++ - 关于 C++ 中的指针和数组

c - 隐式释放

linux - 如何在 unix 上找到没有日志文件的死进程的原因?

c++ - 关于 DSO 引用隐藏符号的警告到底意味着什么?

c - SPARC 程序集 jmp\boot

c - 为什么我们可以读取这个分配的指针中的任何字符而不写入它?

c - 两个元素相加的数据结构

java - 编译带有嵌套子类的 Java 类突然不起作用, "access denied"

linux - 您如何访问您在 Bash 中获取的文件的基本文件名?