為什么要加固APP?
答:因為黑客通過反編譯APK得到源碼后,會在應用中插入代碼,獲取利益,比如添加廣告,盜取用戶賬號、密碼,后台定制活動等。
反編譯的方法?
反編譯是指apk文件通過反編譯工具(例如ApkTool,BakSmali,dex2jar等)對其進行反編譯,
反編譯后會失去原版APP的什么屬性?
在反編譯時會失去原本的程序簽名
在反編譯后,如果修改代碼,會破壞代碼的完整性。
一、破解者如何盜取移動支付用戶賬號密碼--防劫持和校驗技術
1.界面劫持:在登陸界面上布置一層透明的UI界面,當用戶輸入密碼時是輸入在透明UI界面上,獲取用戶賬戶密碼。
反劫持技術:APP自身進行檢測自己的Activity是否是在棧頂,通過彈窗提示用戶。
2.校驗:完整性校驗、簽名校驗。防止二次打包。防止打包黨通過反編譯后在apk內添加廣告。
2.1完整性校驗:運行時計算md5、sha1等。
2.2簽名校驗:判斷應用簽名,是否為正版簽名,否則提示或退出。
由於Java層代碼容易被反編譯,所以我們要把校驗技術放在native層(系統運行庫層)
二、破解者如何盜取移動支付用戶賬號密碼--自定義鍵盤
Android軟鍵盤采用了一套統一的通信機制,通過重載BaseInputConnection類方法,可以攔截到輸入字符,EditText類也有類似的監聽攔截方法。
1、自定義鍵盤一般采用標准的數字鍵和qwerty鍵盤布局。
2、更優秀的做法,采用亂序,大大提高了安全等級。
關於第三方的加固方案
安卓dalvik虛擬機要求dex文件在內存中以明文形式存在,那么任何加殼方法,到頭來到了內存還是明文存在,各種dump方法終究是可以獲得它的.那么APP究竟應該如何加固才能防止APP被篡改?