APP安全分析之打車軟件
最近發(fā)現(xiàn)某款打車軟件的APK非常的火,并聽說他們進(jìn)行了非常嚴(yán)密的防護(hù),防止用戶進(jìn)行二次打包。今天我們來分析一下他的安全性到底如何。
經(jīng)過嚴(yán)密的分析發(fā)現(xiàn):該打車APP(司機(jī)版)主要的防護(hù)在兩個地方
***個是:登錄過程中,通過傳遞context對象到so庫中的方式去拿到apk的簽名信息的md5簽名信息上傳。
第二個是:在主界面中,每次onResume中,調(diào)用一個私有類進(jìn)行校驗,如果校驗不通過,則彈出“請卸載該軟件后再使用~”的提示。迫使點擊確定的方式退出app。
首先我們來說***個校驗:本身使用so作為獲取簽名信息的地方相應(yīng)的比在java中獲取簽名信息的方式要安全。但是so獲取簽名信息必須給底層傳遞context對象。那么防護(hù)弱點也主要在這個context對象的傳遞上。
在com.sdu.didi.net包的c方法中
里面的SecurityLib.getUUID(this.b)便是調(diào)用so庫的getUUID方法,并傳遞context。
其中UUID是在so庫中通過簽名信息換算過來的,this.b是application的getContext。
那么我們在application中添加重寫getPackageManager方法,并修改其中的返回值。返回我們自己寫的PackageManager。如下
修改其中的getPackageInfo方法,返回我們自己的packageInfo對象。
ChangesSignture方法如下:其中的Signature的值是司機(jī)正版的簽名信息的MD5值。
通過以上的修改,經(jīng)過測試。登錄過程的校驗已經(jīng)沒有任何作用了。
下面我們來說第二個校驗:
在com.sdu.didi.gui.main包下的MainActivity中
其中checkCheatTool();會進(jìn)行校驗。如果是盜版會彈出提示:“請卸載該軟件后再使用”,這種防護(hù)更沒有安全性可言了。我們只需要把這行代碼注釋或者刪除掉。這個校驗就沒有任何的作用了。
筆者***想說:
加密技術(shù),也是一個很是需要深度研究的項目,有興趣的話可以多看看別人用的加密方式,也可以去研究一些專門提供加密服務(wù)的第三方平臺,當(dāng)然,你要是懶省事兒的話也是可以直接用的。