亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1379 | 回復(fù): 0
打印 上一主題 下一主題

[Android] Android APP二次打包操作步驟介紹 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-05-26 14:07 |只看該作者 |倒序?yàn)g覽
的二次打包現(xiàn)象已經(jīng)屢見(jiàn)不鮮,為何“打包黨”就吃準(zhǔn)了Android平臺(tái),二次打包的操作過(guò)程到底有多簡(jiǎn)單?本文將從Android apk的結(jié)構(gòu)、二次打包的工具、步驟等方面向移動(dòng)開(kāi)發(fā)者說(shuō)明二次打包操作的簡(jiǎn)單性,從而引起開(kāi)發(fā)者對(duì)APP安全的重視,并及時(shí)對(duì)APP進(jìn)行代碼混淆或加固保護(hù)等安全措施。


安卓apk的文件結(jié)構(gòu)首先來(lái)看一下Android apk的內(nèi)部文件結(jié)構(gòu)。隨便下載一款手機(jī)APP,用解壓工具即可查看到其內(nèi)部文件結(jié)構(gòu)
Apk中的主要文件內(nèi)容有:
1.AndroidManifest.xml:Android主配置文件,編譯過(guò)程中由文本格式轉(zhuǎn)化為二進(jìn)制AXML文件格式。
2.Classes.dex: java代碼編譯后產(chǎn)生的一種類似字節(jié)碼的文件。
3.res/文件夾:資源文件,其中的.xml文件,在編譯過(guò)程中由文本格式轉(zhuǎn)化為二進(jìn)制AXML文件格式。
4.META-INF/文件夾:簽名文件。
5.Lib: native代碼編譯后的so。
6.其他文件夾:由開(kāi)發(fā)者自己添加的文件
Android apk的核心邏輯主要存在于classes.dex中,通常破解者在進(jìn)行破解和二次打包時(shí),會(huì)對(duì)classes.dex和AndroidManifest.xml文件進(jìn)行操作,所以對(duì)這兩個(gè)文件進(jìn)行保護(hù)尤為重要。了解了Android apk每個(gè)文件的含義與用途,就可以有針對(duì)性的對(duì)其進(jìn)行二次打包操作。


二、apk二次打包步驟
通常,Android apk的二次打包步驟主要包括:
1.反編譯
(1)反編譯java:classes.dex反編譯成中間文件(smali、jar)。
(2)反編譯布局文件:Axml文件反編譯成xml文件。
2.修改
(1)修改smali文件。
(2)修改xml文件。
3.重新編譯
(1)修改后的smali編譯成classes.dex。
(2)修改后的xml編譯成Axml。
4.重簽名
對(duì)新的apk進(jìn)行重簽名,一款新的APP便產(chǎn)生了。


三、反編譯工具
1、反編譯java代碼工具:
(1)APKTool
(2)Smali/baksmali
(3)Dex2jar + jd—gui
(4)集成化圖像窗口工具:改之理、JEB
2、反編譯布局文件(xml)工具:
(1)AXMLPrinter2
(2)APKTool
(3)Github上的解析AXML文件的開(kāi)源項(xiàng)目


四、反編譯apk
反編譯java是指把classes.dex文件利用反編譯工具,生成一種中間語(yǔ)言.samli文件或者jar文件的過(guò)程,常用手段有:
(1)Java  –jar  Apktool.jard  –r  –f  input.apk  output目錄。
(2)java  -jar  baksmali-1.4.1.jar -o  output目錄  classes.dex。
(3)dex2jar.bat  classes.dex。     
(4)圖像窗口工具:改之理或者JEB。
(5)Android sdk自帶dexdump工具。
其中,dex2jar.bat工具輸出的是.jar文件,是只讀不可修改的。如果還需要修改并二次打包,不可選用該工具。其他的工具生成的都是smali文件。


五、修改.samli文件
修改.samli語(yǔ)言的一些技巧:
(1)信息反饋法(彈出提示信息未突破點(diǎn))。
(2)特征函數(shù)法(Toast、Log、getPublicKey等)。
(3)代碼注入法(Log輸出配合LogCat查看狀態(tài)數(shù)據(jù))。
(4)棧跟蹤法
可疑點(diǎn)插入以下代碼,既可以得到函數(shù)調(diào)用順序:new Exception(“print trace”).printStackTrace();


六、 反編譯布局文件(xml)工具
反編譯布局文件是指:把APK中,二進(jìn)制的Axml文件還原成文本格式xml文件。常用手段:
Java  –jar  Axmlprinter2.jar AndroidManifest.xml  > out.xml
Java  –jar  Apktool.jar d  input.apk  output目錄
其中AxmlPrinter2.jar只是單向的,無(wú)法把文本文件重新編譯成AXML。另外如果有比較高級(jí)的需求,以上2中工具無(wú)法滿足。讀者可以自己實(shí)現(xiàn)一個(gè)Axml文件解析器。網(wǎng)絡(luò)上已經(jīng)有許多類似的開(kāi)源項(xiàng)目。


七、 修改布局文件:
由Axml文件得到文本格式的xml文件后,就可以根據(jù)需求,隨意的修改AndroidManifest.xml文件了。例如:
<meta-data
      android:name="BaiduMobAd_APP_ID"
android:value="10035477" />
這是一個(gè)百度廣告標(biāo)識(shí)字段。其中android:value是開(kāi)發(fā)者的認(rèn)證值,直接和廣告收入聯(lián)系。只要修改該字段就可以盜取別人的廣告的收入。


八、 重新編譯APK
為了使修改生效,需要重新編譯文件,生成新的APK。
重新編譯java代碼:用修改后的.smali文件重新生成classes.dex文件。
(1)
java –jar Apktool.jar  b  –f  input目錄  new.apk
(2)
java -jar smali-1.4.1.jar classout/ -oclasses.dex
(3)
圖像窗口工具:改之理或者JEB
(4)
重新編譯xml文件:
(5)
java –jar  Apktool.jar  b –f  input目錄  new.apk
(6)基于github開(kāi)源項(xiàng)目自己實(shí)現(xiàn)Axml文件解析器。
注意:APK反編譯和重新編譯使用的工具要配套,例如:使用APKTool進(jìn)行反編譯,那么重新編譯也要使用APKTool。


九、重新簽名
1. 重新編譯APK,生成新的APK后,由于改動(dòng)了文件內(nèi)容,所以必須進(jìn)行重簽名。
2. 安裝運(yùn)行新APK。就可以看到改動(dòng)生效了。
以上就是二次打包的步驟,操作起來(lái)真的很簡(jiǎn)單。為了避免自己辛苦開(kāi)發(fā)的APP慘遭破解和二次打包,出現(xiàn)了不少第三方的加固保護(hù)類產(chǎn)品。本人也使用并進(jìn)行了分析,下次就為大家介紹其中360加固保是如何做到防止APP破解和二次打包的。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP