安卓逆向3:逆向練習,通過修改smali文件,破解簽名校驗


####

shuqi.apk

mumu模擬器

###

正常的shuqi.apk,是在模擬器可以正常運行的,

###

首先第一步使用apktool.sh d shuqi.apk

反編譯出來這個apk,

###

然后再次打包這個apk,

使用命令,apktool.sh b shuqi

會在產生一個dist文件夾,里面有一個shuqi.apk

####

進入這個dist文件夾,cd 進入,

開始生成簽名,

使用命令:keytool -genkey -keystore my-release-key.keystore -alias my_alias -keyalg RSA -keysize 4096 -validity 10000

輸入密碼123456

簽名就生成了

###

使用生成的簽名文件,對apk進行簽名,

使用命令:jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore -signedjar shuqi_sign.apk shuqi.apk my_alias

會生成一個簽名的apk

####

在模擬器再次安裝這個apk

發現安裝失敗了,

分析

第一步,因為你啟動的時候就退出了,所以應該是在啟動的某一個階段, 做了簽名的校驗,所以你要找到是在啟動的哪一個階段做的校驗,

因為app啟動是會去讀取,Androidmanifest.xml的,一個apk只有一個這個文件,里面有一個,application,這個加載完,app的生命周期就啟動了,

所以應該是還沒有加載完這個application,就退出了,

第二步,所以我們去找application,找到Android.name的地方,這個就是app啟動的入口,

大概率是會在這個啟動的入口文件里,做一些事情,然后校驗了簽名的,我們要做的就是找到這個校驗 簽名的地方,

這個地方的文件是不會混淆的,因為混淆了app就找不到了,

 

###

這個就是對簽名進行了校驗,

開發簽名了之后是記錄到代碼里面的, 每次app啟動,會讀取這個簽名,如果不對就會有問題,

我們下一步要找到這個簽名的地方在哪里,

###

使用jadx打開shuqi.apk

是啟動的時候就退出了,可以猜測是啟動的時候做了校驗,

找到啟動application頁面,

 

找到書旗的application,

 

可以通過右鍵的方式,找到這個函數的具體位置,

我們猜測是做了校驗,就要重點關注if,check,verify,這樣的詞,

 

就是這個地方做了校驗了,我們要做的就是把這一句注釋掉,然后重新打包,

###

我們找到對應的路徑,修改smali文件,

 

把對應的四行刪除,然后再去打包,

###

重新簽名,打包,

注意把之前生成的build和dist刪除掉,

首先重新打包

使用命令,apktool.sh b shuqi

會在產生一個dist文件夾,里面有一個shuqi.apk

####

進入這個dist文件夾,cd 進入,

開始生成簽名,

使用命令: 

輸入密碼123456

簽名就生成了

###

使用生成的簽名文件,對apk進行簽名,

使用命令:jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore -signedjar shuqi_sign.apk shuqi.apk my_alias

會生成一個簽名的apk

###

再次安裝這個簽名之后的apk,

哈哈,就可以正常安裝了,繞過了他的簽名校驗!!!!

####

為什么能夠繞過這個簽名,

本質還是對安卓系統,對app加載流程有一個深刻的認識啊!

#####


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM