这么多年写过很多 APP ,也研究过很多别的 APP
安卓 APP 通过抓包和反编译很容易获取 REST API 调用机制,有什么方法可以尽量避免吗(包括服务端)?
1,通常都是把 method 和请求参数 hash 或者 rsa 后发送到服务器比较,比如 :
method+p1+v1+p2+v2+p3+v3
Hash 或者 RSA 后发送到服务器进行验证
2,Hash 的话,可以稍微增加一点难度,本地自定义一个乱序字典,来进行请求参数排序,比如 : 字典是[3,1,2],那么 method+p3+v3+p1+v1+p2+v2
3 ,但通常还是 RSA ,这里就涉及到公钥保存的问题
最简单的储存字符串或者文件,只要反编译后很容易就找到了;
见过比较复杂一点的(某国外著名社交软件),存在一张图片里,程序读几个固定点的 rgb 值来拼成 key ;
也有复杂一点的,把 key 或者 rsa 加密过程写在 so 里面(这个就多了,比如 163 系),但是这样一样可以通过 load so 文件来进行调用
基本上遇到过的都是在这个范畴内,难度有高低,但是都能破解。大家还有更好的想法吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.