最近公司做的项目小火了,于是出现一堆外挂程序,有的甚至直接抓包模拟请求,简直猖狂!
虽然我们接口做了校验,但是salt+md5这种套路大家都懂,只要apk被反编译了,基本就阻止不了敌人。
所以我们要把关键的salt藏起来,比如藏到so里。
具体的so我参考了以下两篇文章做了出来↓
使用 Android Studio 写出第一个 NDK 程序(超详细)
Android 安全系列之如何在 native 层保存关键信息
但是,做完之后的so我试着用IDA打开,发现字符串暴露无疑,签名暴露也就算了,salt也暴露简直可怕!
所以我简单设计了一下,由App端传入一个字符串key1,再跟so中的一个字符串key2按照写好的规则进行组合,这个规则可以自己写的复杂点,增加破解难度。
再用IDA打开,就只能看到so中的字符串key2,和一堆看不懂的汇编代码,真正的salt是要运行过so才能获取的,而运行so会校验签名,保证了不会被敌人直接运行获取到。
当然,如果敌人看得懂汇编代码,又拿到了key1跟key2,那就认命了吧。