从共享库和加密密钥中剥离符号

时间:2012-11-17 17:03:57

标签: c++ c encryption shared-libraries

我正在开发一个共享库(Linux中的.so),它有一个用于小型数据库的XML文件,并且该xml文件已加密。这是我的代码的摘要:

void my_fucnt(char *in, char *out)
{
    static char key[] = {0x34, 0x6c, 0x54....};
    enrcryption(key, in, out);
}

首先是第一件事;前几天我用objdump检查了库,我发现许多符号(甚至是那些声明为静态的符号)都被发现在目标文件中,我认为这些文件揭示了我的大部分代码逻辑,所以我在网上搜索了我发现了 strip 实用程序,我也是如此。

很高兴知道剥离实用程序适用的方法是什么,并且它是否放置了符号的地址而不是它们的名称?

其次,我仍然看到目标文件的 .data 部分中的密钥,它显示了数据库密钥,尽管我已经剥离了符号。有什么方法可以隐藏吗?或者可以应用其他什么技术来加密我的数据库文件?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

strip做的是删除 debug 符号和信息。这通常会占用可执行文件的很大一部分,这就是实用程序存在的原因。

至于密钥,它将在某处。你可以对它进行模糊处理(加密密钥本身,将密钥的每个字节存储在不同的地方等),但如果一个黑客想要找到它,他或她会找到它。众所周知,他们擅长逆向工程,并弄清楚汇编代码的作用。