首页
论坛
专栏
课程

[求助] 求教各位大佬,编写的xposed模块怎样进行加固或者混淆

2019-8-23 11:00 841

[求助] 求教各位大佬,编写的xposed模块怎样进行加固或者混淆

2019-8-23 11:00
841
## 如题,小白求教各位大佬,自己编写的xposed模块怎样保护

### 我尝试的方法如下:

  1. 我使用了 proguard 想对代码进行混淆,不太会配置就在网上找了个模板,结果混淆之后应用就直接装不上了
  2. 于是使用360加固保,但使用之后模块能装上是能装上,但hook不生效
### 想问下大佬们都是怎么防护的,特别是proguard怎么配置自定义混淆?
### 最后非常感谢大佬们

附上我用的proguard混淆模板  在csdn找的 底部附有链接

#############################################

#

# 基本指令区域(没什么别的需求不需要动)

#

#############################################

# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改

-optimizationpasses 5


# 混合时不使用大小写混合,混合后的类名为小写

-dontusemixedcaseclassnames


# 指定不去忽略非公共库的类

-dontskipnonpubliclibraryclasses


# 这句话能够使我们的项目混淆后产生映射文件

# 包含有类名->混淆后类名的映射关系

-verbose


# 指定不去忽略非公共库的类成员

-dontskipnonpubliclibraryclassmembers


# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。

-dontpreverify


# 保留Annotation不混淆

-keepattributes *Annotation*,InnerClasses


# 避免混淆泛型

-keepattributes Signature


# 抛出异常时保留代码行号

-keepattributes SourceFile,LineNumberTable


# 指定混淆是采用的算法,后面的参数是一个过滤器

# 这个过滤器是谷歌推荐的算法,一般不做更改

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



#############################################

#

# Android开发中一些需要保留的公共部分(没什么别的需求不需要动)

#

#############################################


# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆

# 因为这些子类都有可能被外部调用

-keep public class * extends android.app.Activity

-keep public class * extends android.app.Appliction

-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 * extends android.view.View

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



# 保留support下的所有类及其内部类

-keep class android.support.** {*;}


# 保留继承的

-keep public class * extends android.support.v4.**

-keep public class * extends android.support.v7.**

-keep public class * extends android.support.annotation.**


# 保留R下面的资源

-keep class **.R$* {*;}


# 保留本地native方法不被混淆

-keepclasseswithmembernames class * {

    native <methods>;

}


# 保留在Activity中的方法参数是view的方法,

# 这样以来我们在layout中写的onClick就不会被影响

-keepclassmembers class * extends android.app.Activity{

    public void *(android.view.View);

}


# 保留枚举类不被混淆

-keepclassmembers enum * {

    public static **[] values();

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

}


# 保留我们自定义控件(继承自View)不被混淆

-keep public class * extends android.view.View{

    *** get*();

    void set*(***);

    public <init>(android.content.Context);

    public <init>(android.content.Context, android.util.AttributeSet);

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

}


# 保留Parcelable序列化类不被混淆

-keep class * implements android.os.Parcelable {

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

}


# 保留Serializable序列化的类不被混淆

-keepclassmembers class * implements java.io.Serializable {

    static final long serialVersionUID;

    private static final java.io.ObjectStreamField[] serialPersistentFields;

    !static !transient <fields>;

    !private <fields>;

    !private <methods>;

    private void writeObject(java.io.ObjectOutputStream);

    private void readObject(java.io.ObjectInputStream);

    java.lang.Object writeReplace();

    java.lang.Object readResolve();

}


# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆

-keepclassmembers class * {

    void *(**On*Event);

    void *(**On*Listener);

}


# webView处理,项目中没有使用到webView忽略即可

#-keepclassmembers class fqcn.of.javascript.interface.for.webview {

#    public *;

#}

#-keepclassmembers class * extends android.webkit.webViewClient {

#    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);

#    public boolean *(android.webkit.WebView, java.lang.String);

#}

#-keepclassmembers class * extends android.webkit.webViewClient {

#    public void *(android.webkit.webView, jav.lang.String);

#}


# 移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用

# 记得proguard-android.txt中一定不要加-dontoptimize才起作用

# 另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制

#-assumenosideeffects class android.util.Log {

#    public static int v(...);

#    public static int i(...);

#    public static int w(...);

#    public static int d(...);

#    public static int e(...);

#}

# ———————————————— 

#版权声明:本文为CSDN博主「csdn_mm」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

#原文链接:https://blog.csdn.net/csdn_mm/article/details/80598153




[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (6)
ilanlanya 2019-8-23 14:19
2
0
我来顶顶帖子
飞飞fei 2019-8-23 14:56
3
0
xposed 入口keep下。举例: -keep public class * extends de.robv.android.xposed.IXposedHookLoadPackage
最后于 2019-8-23 14:58 被飞飞fei编辑 ,原因:
ilanlanya 2019-8-23 15:17
4
0
飞飞fei xposed&nbsp;入口keep下。举例: -keep&nbsp;public&nbsp;class&nbsp;*&nbsp;extends& ...
嗯呐  非常感谢小哥哥  是不是我加上这一句就可以了呀
blanke 2019-8-23 15:22
5
0
java 层混淆基本没用,反混淆之后就能看懂逻辑,核心逻辑写到 so,ollvm 会好点
ilanlanya 2019-8-23 15:30
6
0
blanke java 层混淆基本没用,反混淆之后就能看懂逻辑,核心逻辑写到 so,ollvm 会好点
呜呜好 还没写过so  我回去试试 感谢感谢啦 不过xposed编写的代码不是只能用java写嘛  不太懂 
最后于 2019-8-23 15:31 被ilanlanya编辑 ,原因:
pancts 2019-8-24 12:23
7
0
试试论坛上的dex2c
游客
登录 | 注册 方可回帖
返回