2011-05-27 72 views
1

我希望能够使用HTTPS和JSON将我的Android应用程序中的数据安全地发送到我的服务器。Android + JSON防止反编译?

有了HTTPS,我可以防止嗅探,但不会对反编译,所以我也会使用Proguard来混淆。

我的问题是JSON是发送数据的纯文本方法,熟练的反编译器将能够计算出正在发送和接收的内容。那么发送这些数据的更好方式是什么 - 如果我假设某些时候有人会反编译APK或JAR(取决于我如何启动程序)。

我可以混淆JSON

"x":{"xx":12345678} 

但同样我认为这将只是一个时间问题有人工作的是我试图发送一个时间码等

回答

1

那么......你不能。抱歉。如果你能想出来,音乐和电影业会让你成为英雄。

+0

哈哈,好的,所以不是应用程序我需要设法在服务器端做到这一点 – Matt 2011-05-27 15:34:07

+0

如果你确实需要客户端的信息,你可以尝试模糊你的意图。例如,如果您需要时间信息,则可以让客户端发送位置信息,或者对位置进行IP查找并计算出他的时区。 – bdares 2011-05-27 15:49:40

+0

是的,这就是我的想法。添加看起来有用的随机和无用数据,然后丢弃这个数据服务器端来屏蔽我实际需要的数据。通过默默无闻的安全性,但我想它必须完成 – Matt 2011-05-27 15:52:52

1

没有之前防止反编译的方法。混淆使反编译的结果更难使用,但专用的黑帽仍然可以使用它。

+0

确切地说,我如何在应用程序上创建敏感数据并将其发送到服务器,而不会读取数据或创建敏感数据的方法被发现? – Matt 2011-05-27 15:16:21

+0

您可以使用非对称加密(RSA是最常见的),其中您的应用程序只有公钥...您使用公钥对数据进行加密,并且服务器使用私钥对其进行解密。我不确定这会比仅使用https更安全(但它可以防止中间人攻击)。 – mah 2011-05-27 15:56:16

+0

但通过反编译,黑帽会在通过RSA加密之前看到我的数据。 SSL(我相信)对传输来说足够好,这是我需要/希望保护的数据创建。 – Matt 2011-05-27 16:03:02

0

我发现的最佳组合是DojoToolkit和高级模式下的Closure编译器。

高级模式下的关闭使JavaScript代码几乎不可能进行反向工程,即使在通过美化器之后。一旦您的JavaScript代码被混淆,超出了任何认可和反向工程的可能性,您的HTML将不会透露您的许多秘密。

此链接,使用Dojo Toolkit与关闭编译器在高级模式下的移动应用:

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

如果使用关闭编译器,你就可以扔在JavaScript中的加密引擎书面方式,然后加密你的JSON数据。随着Closure Compiler提供的级别混淆,人们很难对您的代码进行反向工程,以发现您用来解密的密钥。