admin管理员组文章数量:1130349
1、反编译工具
(1)apktool 主要用于资源文件的获取
java -jar apktool_2.4.0.jar d app-debug.apk -o dir
在反编译之后,生成一个文件夹,文件夹中包含assets、res等等资源文件。
(2)dex2jar 将apk中的dex文件编译成jar文件
d2j-dex2jar.bat app-debug.apk -o app-debug.jar
(3)jd-jui 查看反编译后jar文件中的class
(4)jadx 直接查看apk
通过jadx可以直接查看apk中的源码,但是是已经被混淆过的了。
2、混淆配置 proguard
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
在进行混淆的时候,有一个默认混淆规则proguard-android-optimize.txt,还有一个文件proguard-rules.pro,可以自定义混淆规则。
在build—intermediates—proguard_files目录下,有默认的混淆规则。
(1)-keep 指定类和成员不能被混淆
-keep @android.support.annotation.Keep class * {
*;}
-keep @androidx.annotation.Keep class * {
*;}
如果在默认的混淆规则中,没有对该类进行设置,那么就需要在proguard-rules.pro文件中声明。
在项目中添加一个User类,并没有去引用,那么混淆之后,该类就会被移除。
引用之后,就会参与混淆,但是如果不想让某个类参与混淆,有两种方式。
1—在实体类添加@Keep注解
@Keep
public class User {
String name;
int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
}
2-----在自定义proguard-rules.pro中声明这个类不能被混淆
//-keep关键字 加上该类的全类名
-keep class com.example.myapplication.User
(2)-keepclassmembers 指定类成员不被混淆
//类中的native方法不参与混淆
-keepclasseswithmembernames class * {
native <methods>;
}
# Keep setters in Views so that animations can still work.
//继承自View的类中的set和get方法不能被混淆
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
# We want to keep methods in Activity that could be used in the XML attribute onClick.
//Activity中的一些onClick方法,形参是View的方法,不能被混淆
-keepclassmembers class * extends android.app.Activity {
public void1、反编译工具
(1)apktool 主要用于资源文件的获取
java -jar apktool_2.4.0.jar d app-debug.apk -o dir
在反编译之后,生成一个文件夹,文件夹中包含assets、res等等资源文件。
(2)dex2jar 将apk中的dex文件编译成jar文件
d2j-dex2jar.bat app-debug.apk -o app-debug.jar
(3)jd-jui 查看反编译后jar文件中的class
(4)jadx 直接查看apk
通过jadx可以直接查看apk中的源码,但是是已经被混淆过的了。
2、混淆配置 proguard
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
在进行混淆的时候,有一个默认混淆规则proguard-android-optimize.txt,还有一个文件proguard-rules.pro,可以自定义混淆规则。
在build—intermediates—proguard_files目录下,有默认的混淆规则。
(1)-keep 指定类和成员不能被混淆
-keep @android.support.annotation.Keep class * {
*;}
-keep @androidx.annotation.Keep class * {
*;}
如果在默认的混淆规则中,没有对该类进行设置,那么就需要在proguard-rules.pro文件中声明。
在项目中添加一个User类,并没有去引用,那么混淆之后,该类就会被移除。
引用之后,就会参与混淆,但是如果不想让某个类参与混淆,有两种方式。
1—在实体类添加@Keep注解
@Keep
public class User {
String name;
int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
}
2-----在自定义proguard-rules.pro中声明这个类不能被混淆
//-keep关键字 加上该类的全类名
-keep class com.example.myapplication.User
(2)-keepclassmembers 指定类成员不被混淆
//类中的native方法不参与混淆
-keepclasseswithmembernames class * {
native <methods>;
}
# Keep setters in Views so that animations can still work.
//继承自View的类中的set和get方法不能被混淆
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
# We want to keep methods in Activity that could be used in the XML attribute onClick.
//Activity中的一些onClick方法,形参是View的方法,不能被混淆
-keepclassmembers class * extends android.app.Activity {
public void版权声明:本文标题:Android APK加固----混淆 加密 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1763719405a2957431.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论