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

C++ 从共享库和加密密钥中剥离符号,c++,c,encryption,shared-libraries,C++,C,Encryption,Shared Libraries,我正在开发一个共享库(.so in Linux),它有一个用于小型数据库的XML文件,并且该XML文件是加密的。以下是我的代码摘要: void my_fucnt(char *in, char *out) { static char key[] = {0x34, 0x6c, 0x54....}; enrcryption(key, in, out); } 第一件事;前几天,我用objdump检查库,发现很多符号(甚至那些声明为静态的符号)都在目标文件中,我认为它揭示了我的大部分代码

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

void my_fucnt(char *in, char *out)
{
    static char key[] = {0x34, 0x6c, 0x54....};
    enrcryption(key, in, out);
}
第一件事;前几天,我用objdump检查库,发现很多符号(甚至那些声明为静态的符号)都在目标文件中,我认为它揭示了我的大部分代码逻辑,所以我在互联网上搜索并找到了关于strip实用程序的信息,我也是这样做的

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

第二,我仍然在对象文件的.data部分看到键,它显示了数据库键,尽管我已经去掉了符号。我有什么办法可以隐瞒吗?或者可以应用什么其他技术来加密我的数据库文件


任何帮助都将不胜感激。

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


至于钥匙,它会在那里的某个地方。您可以混淆它(加密密钥本身,将密钥的每个字节存储在不同的位置,等等),但如果黑客想要找到它,他或她会找到它。众所周知,他们擅长逆向工程和计算汇编代码的功能。

哦,是的!我在脑海中提出了一个问题,逆向工程师发现一段代码中存在加密过程有多困难。@如果它的部分输入是加密的,那么就不难猜测它在什么地方被解密了。