我的位置: 首頁(yè) > 學(xué)習(xí)專區(qū) > 安卓技術(shù) > android如何防止apk程序被反編譯

android如何防止apk程序被反編譯

2012-08-22 11:42:00
來(lái)源:
[導(dǎo)讀] 作為Android應(yīng)用開發(fā)者,不得不面對(duì)一個(gè)尷尬的局面,就是自己辛辛苦苦開發(fā)的應(yīng)用可以被別人很輕易的就反編譯出來(lái)。Google似乎也發(fā)現(xiàn)了這個(gè)...

作為Android應(yīng)用開發(fā)者,不得不面對(duì)一個(gè)尷尬的局面,就是自己辛辛苦苦開發(fā)的應(yīng)用可以被別人很輕易的就反編譯出來(lái)。

Google似乎也發(fā)現(xiàn)了這個(gè)問(wèn)題,從SDK2.3開始我們可以看到在android-sdk-windows\tools\下面多了一個(gè)proguard文件夾

proguard是一個(gè)java代碼混淆的工具,通過(guò)proguard,別人即使反編譯你的apk包,也只會(huì)看到一些讓人很難看懂的代碼,從而達(dá)到保護(hù)代碼的作用。

下面具體說(shuō)一說(shuō)怎么樣讓SDK2.3下的proguard.cfg文件起作用,先來(lái)看看android-sdk-windows\tools\lib\proguard.cfg的內(nèi)容:

[html] view plaincopyprint?

-optimizationpasses 5

-dontusemixedcaseclassnames

-dontskipnonpubliclibraryclasses

-dontpreverify

-verbose

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity

-keep public class * extends android.app.Application

-keep public class * extends android.app.Service

-keep public class * extends android.content.BroadcastReceiver

-keep public class * extends android.content.ContentProvider

-keep public class * extends android.app.backup.BackupAgentHelper

-keep public class * extends android.preference.Preference

-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {

native ;

}

-keepclasseswithmembernames class * {

public (android.content.Context, android.util.AttributeSet);

}

-keepclasseswithmembernames class * {

public (android.content.Context, android.util.AttributeSet, int);

}

-keepclassmembers enum * {

public static **[] values();

public static ** valueOf(java.lang.String);

}

-keep class * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator *;

}

-optimizationpasses 5-dontusemixedcaseclassnames-dontskipnonpubliclibraryclasses-dontpreverify-verbose-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*-keep public class * extends android.app.Activity-keep public class * extends android.app.Application-keep public class * extends android.app.Service-keep public class * extends android.content.BroadcastReceiver-keep public class * extends android.content.ContentProvider-keep public class * extends android.app.backup.BackupAgentHelper-keep public class * extends android.preference.Preference-keep public class com.android.vending.licensing.ILicensingService-keepclasseswithmembernames class * { native ;}-keepclasseswithmembernames class * { public (android.content.Context, android.util.AttributeSet);}-keepclasseswithmembernames class * { public (android.content.Context, android.util.AttributeSet, int);}-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *;}

從腳本中可以看到,混淆中保留了繼承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本組件以及com.android.vending.licensing.ILicensingService,

并保留了所有的Native變量名及類名,所有類中部分以設(shè)定了固定參數(shù)格式的構(gòu)造函數(shù),枚舉等等。(詳細(xì)信息請(qǐng)參考/examples中的例子及注釋。)

讓proguard.cfg起作用的做法很簡(jiǎn)單,就是在eclipse自動(dòng)生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了

完整的default.properties文件應(yīng)該如下:

[html] view plaincopyprint?

# This file is automatically generated by Android Tools.

# Do not modify this file -- YOUR CHANGES WILL BE ERASED!

#

# This file must be checked in Version Control Systems.

#

# To customize properties used by the Ant build system use,

# "build.properties", and override values to adapt the script to your

# project structure.

# Project target.

target=android-9

proguard.config=proguard.cfg

# This file is automatically generated by Android Tools.# Do not modify this file -- YOUR CHANGES WILL BE ERASED!## This file must be checked in Version Control Systems.## To customize properties used by the Ant build system use,# "build.properties", and override values to adapt the script to your# project structure.# Project target.target=android-9proguard.config=proguard.cfg

大功告成,正常的編譯簽名后就可以防止代碼被反編譯了。反編譯經(jīng)過(guò)代碼混淆的apk得到的代碼應(yīng)該類似于下面的效果,是很難看懂的:

評(píng)論
熱點(diǎn)專題
>>
相關(guān)文章推薦
>>
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
视频一区二区三区四区在线综合网 | 日本精品久久免费观看 | 欧美亚洲另类小说图片视频 | 精品一区二区三区亚洲欧洲 | 曰韩欧美亚洲美日更新在线 | 日韩理论中文在线观看 |