我正在开发一个共享库(Linux中的.so),它有一个用于小型数据库的XML文件,并且该xml文件已加密。这是我的代码的摘要:
void my_fucnt(char *in, char *out)
{
static char key[] = {0x34, 0x6c, 0x54....};
enrcryption(key, in, out);
}
首先是第一件事;前几天我用objdump检查了库,我发现许多符号(甚至是那些声明为静态的符号)都被发现在目标文件中,我认为这些文件揭示了我的大部分代码逻辑,所以我在网上搜索了我发现了 strip 实用程序,我也是如此。
很高兴知道剥离实用程序适用的方法是什么,并且它是否放置了符号的地址而不是它们的名称?
其次,我仍然看到目标文件的 .data 部分中的密钥,它显示了数据库密钥,尽管我已经剥离了符号。有什么方法可以隐藏吗?或者可以应用其他什么技术来加密我的数据库文件?
任何帮助都将不胜感激。
答案 0 :(得分:2)
strip
做的是删除 debug 符号和信息。这通常会占用可执行文件的很大一部分,这就是实用程序存在的原因。
至于密钥,它将在某处。你可以对它进行模糊处理(加密密钥本身,将密钥的每个字节存储在不同的地方等),但如果一个黑客想要找到它,他或她会找到它。众所周知,他们擅长逆向工程,并弄清楚汇编代码的作用。