首页
社区
课程
招聘
[求助] 求教各位大佬,编写的xposed模块怎样进行加固或者混淆
发表于: 2019-8-23 11:00 8695

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

2019-8-23 11:00
8695
## 如题,小白求教各位大佬,自己编写的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



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (19)
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
2
我来顶顶帖子
2019-8-23 14:19
0
雪    币: 3897
活跃值: (157)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
xposed 入口keep下。举例: -keep public class * extends de.robv.android.xposed.IXposedHookLoadPackage
最后于 2019-8-23 14:58 被飞飞fei编辑 ,原因:
2019-8-23 14:56
0
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
4
飞飞fei xposed&nbsp;入口keep下。举例: -keep&nbsp;public&nbsp;class&nbsp;*&nbsp;extends& ...
嗯呐  非常感谢小哥哥  是不是我加上这一句就可以了呀
2019-8-23 15:17
0
雪    币: 8971
活跃值: (3659)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
java 层混淆基本没用,反混淆之后就能看懂逻辑,核心逻辑写到 so,ollvm 会好点
2019-8-23 15:22
0
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
6
blanke java 层混淆基本没用,反混淆之后就能看懂逻辑,核心逻辑写到 so,ollvm 会好点
呜呜好 还没写过so  我回去试试 感谢感谢啦 不过xposed编写的代码不是只能用java写嘛  不太懂 
最后于 2019-8-23 15:31 被ilanlanya编辑 ,原因:
2019-8-23 15:30
0
雪    币: 285
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
试试论坛上的dex2c
2019-8-24 12:23
0
雪    币: 850
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
大佬,你是怎么保护自己的xposed模块的呀?
2020-5-27 10:30
0
雪    币: 2155
活跃值: (4532)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
xposed的我认为核心就是hook点 也就是hook的方法名和类名
你把这些地方加密了就行
2020-5-28 23:28
1
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
10
小黄鸭爱学习 xposed的我认为核心就是hook点 也就是hook的方法名和类名 你把这些地方加密了就行
明白了  谢谢师傅
2020-6-1 19:11
0
雪    币: 75
活跃值: (587)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
核心写so里面
2020-6-19 18:17
0
雪    币: 88
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
其实用几维加固后可以正常使用模块,只是免费加固强度不是很高,收费版本没试过。
2020-6-20 09:51
0
雪    币: 4256
活跃值: (3843)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
D-t
13
你见过哪一个xp模块加固用360  360无法对xp这种生效吧 还是用混淆
2020-6-21 16:24
0
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
14
jione 核心写so里面
谢谢师傅 学习啦
2020-7-20 14:03
0
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
15
D-t 你见过哪一个xp模块加固用360 360无法对xp这种生效吧 还是用混淆
对哦  谢谢啦
2020-7-20 14:03
0
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
16
zhenyyh 其实用几维加固后可以正常使用模块,只是免费加固强度不是很高,收费版本没试过。[em_13]
回头试试  谢谢师傅
2020-7-20 14:03
0
雪    币: 1478
活跃值: (846)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
快1年了,楼主这个问题搞定了没
2020-7-23 01:11
0
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
18
林雪 快1年了,楼主这个问题搞定了没
现在自己开发着用  不防护了
2020-7-28 11:00
0
雪    币: 3366
活跃值: (14033)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
19
找我...二次编译强混淆
2020-7-28 16:03
0
雪    币: 431
活跃值: (1755)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
20
xposedApi.jar混淆+编译xposed的zip包混淆规则保持一致即可
2020-8-12 11:05
0
游客
登录 | 注册 方可回帖
返回
//