Mobile的安全测试之前一直关注的是应用本身,没怎么关注过代码--这是我的弱项。
以前在公司做开发,没有测试,代码验证这块都是自己做,所以现在做安全我也很少去做代码验证这块。
在我的概念里面,代码只有完全没问题了才能拿出去溜溜。。。
但今天收到的移动端安全问题就是代码方面的。有完整性问题,逆向分析和二次打包的安全问题存在。
解决方案:
这边的解决方案是客户提供的,开发代码中第三方加固。至于怎么加固我这边就不细说。
我这边介绍一下针对上面三个问题我做的安全验证:
逆向分析:
1. 开发给一个加固后的新包,将apk修改为Zip文件,解压缩后有个clases.dex文件,这里面就是java源码
2. 下载dex2jar,解压
3.将上面的clases.dex文件拷贝到dex2jar目录里面
4.执行命令d2j-dex2jar.bat classes.dex
5.下载JD-Gui,下载下来是Zip文件,解压后会被杀毒软件隔离,个人建议之前就在杀毒软件上面做个例外处理
注:从安全角度来看,用完记得把它干掉。
6. 打开Xjad.exe
7.然后再打开上面的.\classes-dex2jar.jar
8.运行完后发现:
9. 这里面都是java代码,你可以看看里面有没有自己代码泄露。
安全性检测和二次打包
1. apktool 工具安装
2. apktool d 上面的新打包apk文件,
3.生成的文件中修改app_name和图表
Path: /res/values/strings.xml ---->搜索app_name进行修改
/res/values/drawable-hdpi 文件夹里面对图片进行修改
4. 重新编译文件夹:
5. 反编译失败,可以看出开发代码层安全加固成功。