溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android中怎么實(shí)現(xiàn)靜態(tài)分析

發(fā)布時(shí)間:2021-06-28 15:02:25 來(lái)源:億速云 閱讀:164 作者:Leah 欄目:數(shù)據(jù)安全

這篇文章給大家介紹Android中怎么實(shí)現(xiàn)靜態(tài)分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

先從一個(gè)很簡(jiǎn)單的apk包入手,一個(gè)假登錄頁(yè)面:

Android中怎么實(shí)現(xiàn)靜態(tài)分析點(diǎn)擊登錄的時(shí)候彈出提示:Android中怎么實(shí)現(xiàn)靜態(tài)分析

代碼用得是Android Studio3.5的版本,Android Studio的版本更新后,代碼的書(shū)寫(xiě)方式也跟以前不一樣了:Android中怎么實(shí)現(xiàn)靜態(tài)分析

主頁(yè)面完成后,打包成apk文件,這里我試了三種打包方式,結(jié)果都是一樣的:

未簽名打包:

Android中怎么實(shí)現(xiàn)靜態(tài)分析

V1方式簽名的正式包:

Android中怎么實(shí)現(xiàn)靜態(tài)分析Android中怎么實(shí)現(xiàn)靜態(tài)分析

V2方式簽名的正式包:Android中怎么實(shí)現(xiàn)靜態(tài)分析

打包完成后,找到apk包文件,Android中怎么實(shí)現(xiàn)靜態(tài)分析

使用apktool直接反編譯:Android中怎么實(shí)現(xiàn)靜態(tài)分析

.\apktool.bat d -f .\app-release.apk -o test

解釋:

d表示decode,意思是反編譯,與之對(duì)應(yīng)的是b ,building,編譯

-f 表示force,強(qiáng)制刪除目標(biāo)目錄

-o 表示輸出地址

反編譯后進(jìn)入到test文件夾下的/smali/com/example/hellosmali中,可以看到有兩個(gè)MainActivity的smali文件:Android中怎么實(shí)現(xiàn)靜態(tài)分析

其中MainActivity$onCreate$1.smali文件中有我們希望修改的onclick操作:

Android中怎么實(shí)現(xiàn)靜態(tài)分析

修改const-string v1值為:hello smali

Android中怎么實(shí)現(xiàn)靜態(tài)分析

這里修改完成后需要重新回編譯為apk包,書(shū)上說(shuō)的是用Android逆向助手,但是我試過(guò)后并沒(méi)有打包成功:Android中怎么實(shí)現(xiàn)靜態(tài)分析

apktool也可以進(jìn)行回編譯:Android中怎么實(shí)現(xiàn)靜態(tài)分析

這里報(bào)錯(cuò)了,因?yàn)楦甙姹镜腁ndroid Studio和Gradle使用了aapt2打包apk,但是apktool卻是使用的aapt1打包。按照網(wǎng)上教的辦法在gradle.properties文件添加了android.enableAapt2=false:Android中怎么實(shí)現(xiàn)靜態(tài)分析

重新編譯apk包,繼續(xù)報(bào)錯(cuò):Android中怎么實(shí)現(xiàn)靜態(tài)分析

這里點(diǎn)報(bào)錯(cuò)信息后定位到了minSdkVersion,我還以為是最低版本的問(wèn)題,改為20后,還是報(bào)錯(cuò)……

想了想,又將apktool升級(jí)到了最新版本,重新回編譯,還是報(bào)錯(cuò),但是錯(cuò)誤提示已經(jīng)跟之前不一樣了:Android中怎么實(shí)現(xiàn)靜態(tài)分析

刪除了報(bào)錯(cuò)的xml文件后,又繼續(xù)提示其他文件報(bào)錯(cuò)T_T……

本來(lái)打算下個(gè)3.0以下版本的android studio再重新打包個(gè)apk,不過(guò)后來(lái)在網(wǎng)上看到一個(gè)回答說(shuō)可以把C:\Users\XX\AppData\Local\apktool\framework\1.apk刪掉試試,抱著試試的心態(tài)刪掉了1.apk,再重新回編譯:

.\apktool.bat b .\test\

Android中怎么實(shí)現(xiàn)靜態(tài)分析

看著成功了,去dist目錄下看果然有了新包:Android中怎么實(shí)現(xiàn)靜態(tài)分析

將新打的包安裝到Android機(jī)上,又報(bào)錯(cuò):Android中怎么實(shí)現(xiàn)靜態(tài)分析

NO_CERTIFICATES,沒(méi)有簽名,不能安裝,那就先給apk包簽個(gè)名好了,用得是jdk自帶的keytool和jarsigner工具。

使用keytool工具先生成簽名文件:Android中怎么實(shí)現(xiàn)靜態(tài)分析Android中怎么實(shí)現(xiàn)靜態(tài)分析

.\keytool.exe -genkey -alias "test" -keyalg "RSA"

解釋:

-genkey 創(chuàng)建新密鑰

-alias 密鑰別名

-keyalg 生成密鑰對(duì)的算法

-validity ,后面跟天數(shù),代表創(chuàng)建的證書(shū)有效期,也可默認(rèn)

再使用jarsigner工具進(jìn)行簽名:Android中怎么實(shí)現(xiàn)靜態(tài)分析Android中怎么實(shí)現(xiàn)靜態(tài)分析

.\jarsigner.exe -verbose -keystore C:\

Users\xxx\.keystore -signedjar C:\Users\xxx\app-debug-signed.apk C:\Users\xxx\app-debug.apk "test"

解釋:

-verbose  簽名/驗(yàn)證時(shí)輸出詳細(xì)信息

-keystore  密鑰庫(kù)位置

-signedjar 已簽名的jar文件的名稱

注意最后跟的是別名(alias),寫(xiě)錯(cuò)了會(huì)報(bào)錯(cuò)的:Android中怎么實(shí)現(xiàn)靜態(tài)分析

最后終于生成了一個(gè)簽名包:Android中怎么實(shí)現(xiàn)靜態(tài)分析

再次安裝:Android中怎么實(shí)現(xiàn)靜態(tài)分析

提示已經(jīng)存在這個(gè)包了,刪除手機(jī)上的原來(lái)的app,重新安裝,成功:Android中怎么實(shí)現(xiàn)靜態(tài)分析

再點(diǎn)擊登錄按鈕時(shí),可以看到提示語(yǔ)已經(jīng)被修改過(guò)了:

Android中怎么實(shí)現(xiàn)靜態(tài)分析

關(guān)于Android中怎么實(shí)現(xiàn)靜態(tài)分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI