当前位置: 首页 > 科技观察

APP安全分析:打车软件

时间:2023-03-19 02:22:04 科技观察

最近发现某款打车软件的APK很火,听说他们做了非常严格的保护,防止用户重新打包。今天我们就来分析一下他到底有多安全。经过严谨的分析,发现打车APP(司机版)的主要保护在两个地方。第一种是:登录过程中,通过将context对象传递给so库获取apk的签名信息的md5签名。资料已上传。第二种是:在主界面中,每次onResume,都会调用一个私有类进行校验。如果验证失败,会弹出“使用前请先卸载软件~”的提示。用力单击“确定”退出应用程序。首先说一下第一个验证:使用so本身作为获取签名信息的地方,相对于java中获取签名信息的安全性是相应的。但因此要获取签名信息必须将上下文对象传递给底层。那么防御的弱点主要是这个上下文对象的传递。com.sdu.didi.net包的c方法中的SecurityLib.getUUID(this.b)是调用so库的getUUID方法,传递上下文。UUID由so库中的签名信息转换而来,this.b为应用的getContext。然后我们在应用程序中添加并覆盖getPackageManager方法并修改返回值。返回我们自己写的PackageManager。修改getPackageInfo方法如下,返回我们自己的packageInfo对象。ChangesSignture方法如下:Signature的值为驱动程序真实签名信息的MD5值。通过以上修改,测试。登录过程的验证无效。再说第二个验证:在com.sdu.didi.gui.main包下的MainActivity中,checkCheatTool();将执行验证。如果是盗版,会弹出提示:“使用前请先卸载软件”。这种保护更不安全。我们只需要注释或删除这行代码即可。该检查无效。作者***想说:加密技术也是一个需要深入研究的项目。有兴趣的可以多看看别人用的加密方式,也可以研究一些提供加密服务的第三方平台。当然,如果你比较懒,省事的话,可以直接用。