2012-11-17 39 views
1

我正在使用一个共享库(Linux中的.so),它为小型数据库提供了XML文件,并且该XML文件已加密。这里是我的代码的摘要:从共享库和加密密钥中剥离符号

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

第一件事第一件事;有一天我用objdump检查了这个库,发现许多符号(甚至那些声明为静态的)都被发现在目标文件中,我认为这些文件揭示了我的大部分代码逻辑,所以我在互联网上搜索并发现了实用程序,因此没有一

这将是很好知道什么方法呢实用适用,它把符号而不是他们的名字的地址?

其次,我仍然看到。数据部分的对象文件揭示了数据库键,尽管我已经去掉了这些符号。有什么方法可以隐藏它吗?或者可以应用哪些其他技术来加密我的数据库文件?

任何帮助,将不胜感激。

+0

讽刺用户名... –

回答

2

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

至于关键,它将在那里某处。你可以混淆它(加密密钥本身,将密钥的每个字节存储在不同的地方等),但是如果一个黑客想找到它,他或她会找到它。他们在反向工程方面非常出色,并且搞清楚了汇编代码的作用。

+0

哦,是的!我在脑海中提出这个问题,要求逆向工程师发现在一段代码中正在进行加密过程有多困难。 –

+0

@JewelThief,如果其输入的一部分是加密的,那么不难猜测它是在某个地方解密的。 – AProgrammer