布局混淆是最簡(jiǎn)單的混淆方法,它不改變軟件的代碼和執(zhí)行過(guò)程。 數(shù)據(jù)混淆 數(shù)據(jù)混淆是修改程序中的數(shù)據(jù)域,而對(duì)代碼段不作處理。常用的數(shù)據(jù)混淆方式有合并變量、分割變量、數(shù)組重組、字符串加密等。
創(chuàng)新互聯(lián)是專(zhuān)業(yè)的汾陽(yáng)網(wǎng)站建設(shè)公司,汾陽(yáng)接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行汾陽(yáng)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
缺省情況下,proguard會(huì)混淆所有代碼,但是下面幾種情況是不能改變java元素的名稱(chēng),否則就會(huì)導(dǎo)致程序出錯(cuò)。
Project target.target=android-16 復(fù)制代碼 以上的配置信息即是 project.properties 文件中內(nèi)容,藍(lán)色文字為我們?cè)诖a混淆過(guò)程中需要添加的配置信息,其中:sdk.dir 為你在當(dāng)前機(jī)器上 SDK 的安裝路徑。
簡(jiǎn)單來(lái)說(shuō),Android 進(jìn)行ProGuard,可以起到壓縮,混淆,預(yù)檢,優(yōu)化的功能,雖然不能說(shuō)更安全但還是一個(gè)不容忽視的環(huán)節(jié)。
1、兩種方式,一種開(kāi)發(fā)工具eclipse,還有就是用apktool工具。 I、只要Run As Android Application 過(guò),到工作目錄的bin文件夾下就能找到與項(xiàng)目同名的apk文件。
2、運(yùn)行apktool.bat d xxx.apk,把a(bǔ)pk反編譯成smali 如果想要進(jìn)一步查看源碼,可下載smali2java 使用smali文件的文件名進(jìn)行分析,如果存在1個(gè)或1個(gè)以上的資源類(lèi)的smali文件,就可以證明該apk沒(méi)有被混淆過(guò)。
3、對(duì)代碼進(jìn)行優(yōu)化(使用adt插件導(dǎo)出的apk,還進(jìn)行zipalign優(yōu)化)缺省情況下,proguard會(huì)混淆所有代碼,但是下面幾種情況是不能改變java元素的名稱(chēng),否則就會(huì)導(dǎo)致程序出錯(cuò)。
這個(gè)時(shí)候只需要對(duì)相關(guān)接口進(jìn)行例外(-keep)即可,然后用android-studio,直接打開(kāi)或者dex2jar進(jìn)行反解可以看到相關(guān)的接口是否被簡(jiǎn)單替換。
代碼編譯成class文件代碼打成jar包混淆jar包用jar包生成classes.dexresources.ap_生成apk以及簽名只不過(guò)工具幫我們一次性全做了,如果你要寫(xiě)批處理來(lái)做,就要按上面的步驟來(lái)做了。
布局混淆是最簡(jiǎn)單的混淆方法,它不改變軟件的代碼和執(zhí)行過(guò)程。 數(shù)據(jù)混淆 數(shù)據(jù)混淆是修改程序中的數(shù)據(jù)域,而對(duì)代碼段不作處理。常用的數(shù)據(jù)混淆方式有合并變量、分割變量、數(shù)組重組、字符串加密等。
防止Android apk被反編譯的方法:判斷apk簽名是否與原版簽名是否一致。代碼混淆,將混淆的級(jí)別設(shè)置高點(diǎn),混淆出來(lái)以后代碼全部變亂。使用NDK編程,將核心算法用c/c++來(lái)編寫(xiě),打包成so庫(kù)供java層調(diào)用。
代碼混淆有兩種重要功能。其一,混淆代碼。其二,優(yōu)化代碼。進(jìn)行代碼混淆的程序被稱(chēng)為代碼混淆器(混淆工具)。進(jìn)行代碼混淆的意義主要在于對(duì)代碼進(jìn)行一定程度的加密。
第一個(gè)文件是描述文件,第二個(gè)文件是配置文件。如果要實(shí)現(xiàn)代碼混淆,需要修改第二個(gè)文件。打開(kāi)第二個(gè)文件,如下:其中紅線部分說(shuō),如果你要實(shí)現(xiàn)代碼混淆,你需要把下面一行給反注釋掉。
特定類(lèi)的public函數(shù)不做實(shí)際的事情,只做簡(jiǎn)單處理后調(diào)用private函數(shù)。proguard對(duì)會(huì)對(duì)一些特定類(lèi)的public函數(shù)不做混淆,以便被AndroidManifest.xml和各種layout引用。
shrinking, 所以minifyEnabled也必須打開(kāi)。proguard-rules.pro 為混淆規(guī)則文件,放置在Module根目錄下。配置完后你就可以在Android studio中 Build-Generate Signed APK... 生成代簽名和混淆的APK文件了。
1、改為 call %java_exe% -jar %PROGUARD_HOME%\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9 就ok了。
2、因?yàn)槭菍?duì)接口名進(jìn)行替換,如果出現(xiàn)混淆問(wèn)題的話,log里面一定會(huì)有類(lèi)似 這個(gè)時(shí)候只需要對(duì)相關(guān)接口進(jìn)行例外(-keep)即可,然后用android-studio,直接打開(kāi)或者dex2jar進(jìn)行反解可以看到相關(guān)的接口是否被簡(jiǎn)單替換。
3、混淆是不會(huì)導(dǎo)致反編譯失敗的,只是說(shuō),代碼變得難以讀懂,而不會(huì)導(dǎo)致反編譯失敗! 混淆和反編譯是兩個(gè)互不相干的概念。
4、一般采用的技術(shù)有插入指令、偽裝條件語(yǔ)句、斷點(diǎn)等。偽裝條件語(yǔ)句是當(dāng)程序順序執(zhí)行從A到B,混淆后在A和B之間加入條件判斷,使A執(zhí)行完后輸出TRUE或FALSE,但不論怎么輸出,B一定會(huì)執(zhí)行。
5、代碼混淆有兩種重要功能。其一,混淆代碼。其二,優(yōu)化代碼。進(jìn)行代碼混淆的程序被稱(chēng)為代碼混淆器(混淆工具)。進(jìn)行代碼混淆的意義主要在于對(duì)代碼進(jìn)行一定程度的加密。
1、特定類(lèi)的public函數(shù)不做實(shí)際的事情,只做簡(jiǎn)單處理后調(diào)用private函數(shù)。proguard對(duì)會(huì)對(duì)一些特定類(lèi)的public函數(shù)不做混淆,以便被AndroidManifest.xml和各種layout引用。
2、代碼混淆有兩種重要功能。其一,混淆代碼。其二,優(yōu)化代碼。進(jìn)行代碼混淆的程序被稱(chēng)為代碼混淆器(混淆工具)。進(jìn)行代碼混淆的意義主要在于對(duì)代碼進(jìn)行一定程度的加密。
3、shrinkResources 去除無(wú)用資源 ,要注意,這個(gè)功能的使用依賴于code shrinking, 所以minifyEnabled也必須打開(kāi)。proguard-rules.pro 為混淆規(guī)則文件,放置在Module根目錄下。
4、第一個(gè)文件是描述文件,第二個(gè)文件是配置文件。如果要實(shí)現(xiàn)代碼混淆,需要修改第二個(gè)文件。打開(kāi)第二個(gè)文件,如下:其中紅線部分說(shuō),如果你要實(shí)現(xiàn)代碼混淆,你需要把下面一行給反注釋掉。
5、因?yàn)槭菍?duì)接口名進(jìn)行替換,如果出現(xiàn)混淆問(wèn)題的話,log里面一定會(huì)有類(lèi)似 這個(gè)時(shí)候只需要對(duì)相關(guān)接口進(jìn)行例外(-keep)即可,然后用android-studio,直接打開(kāi)或者dex2jar進(jìn)行反解可以看到相關(guān)的接口是否被簡(jiǎn)單替換。
6、運(yùn)行apktool.bat d xxx.apk,把a(bǔ)pk反編譯成smali 如果想要進(jìn)一步查看源碼,可下載smali2java 使用smali文件的文件名進(jìn)行分析,如果存在1個(gè)或1個(gè)以上的資源類(lèi)的smali文件,就可以證明該apk沒(méi)有被混淆過(guò)。