二进制和资源文件自检
10 二进制和资源文件自检
我们把自己的程序发布到 app store,但是不能保证每一个用户都是从 app store 下载官方 app,也不能保证每一个用户都不越狱。 换句话说,我们无法保证程序运行环境在 MAC 管控策略下就绝对的安全。 所以,在有些情况下,尤其是和钱有关系的 app ,我们有必要在和服务器通信时,让服务器知道客户端到底是不是官方正版的 app 。
何以判断自己是不是正版 app 呢? hackers 们破解你的 app ,无非就 2 个地方可以动,1 个是二进制,1 个是资源文件。
二进制都重新编译过了自然肯定是盗版……
有些低级的 hackers 喜欢修改人家的资源文件然后贴上自己的广告,或者给用户错误的指引……修改资源文件是不需要重新编译二进制的。
因此,我们有必要在敏感的请求报文中,增加正版应用的二进制和资源文件的标识,让服务器知道,此请求是否来自正版的未经修改的 app 。 在沙盒中,我们可以读到自己程序的二进制,也可以读到资源文件签名文件,这两个文件都不算大,我们可以对其取 md5 值然后以某种组合算法得到一个标记字符串,然后发给服务器。
我封装了相关文件的读取地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
|
md5方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
这样做就 100% 安全了吗?
答案是:不……
所谓魔高一尺,道高一丈,不过也能阻止一些低级的 hack 手段了~