dhroid - dhroid ioc模块对 加密混淆问题
大家应该已经看过ioc的知识
在ioc基础中中
视图事件都是通过注解实现的
问题1
如果有某个属性只声明了一下,其他代码没有引用由于混淆时会进行属性优化,将没用的属性去掉,这时需要处理
处理方法:在混淆配置文件中保留属性
问题2
混合代码时方法名都会变成a,b,c等,这样ioc事件可能就找不到方法
如下面的注解
InjectView(id=R.id.listView,itemClick="toEditStudent",itemLongClick="toDeleteStudent")
处理方法
在写代码时要有规范所有方法  所有事件方法都是以  on或to开头
在配置 混淆配置文件 对以on 和to的方法名保留
事件总线OnEvent 注解的方法也需要这样处理 ,不然方法可能被注释掉
当然现在还有更好的选择  使用第三方工具进行加密
     爱加密的加密功能还是很牛的
http://www.ijiami.cn/treg?regCode=1003705
     爱加密最后生成的classe.dex只有2k
     我和他们客服聊了下
     他说   
原本的DEX文件被隐藏了的
现在这里的只是它们做的一个壳
这个基础版做了两部分处理,一是对apk内部每一个文件进行唯一值验证,只要apk内部的任何一个文件被修改 此文件的唯一值必定变化。运行时检测到变化程序将卡死。另一个就是DEX加壳隐藏
有点像帮他们做广告的嫌疑啊 当然你也可以先混淆后在让爱加密的加密
附上我的混淆配置文件
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontoptimize
-ignorewarnings
#工程中用到的第三方包
-libraryjars libs/android-support-v13.jar
#工程中用到的第三方包
-libraryjars libs/baidu_moni.jar #不混淆第三方包
-keep class android.support.v13.**
#忽略第三方包导致的异常
-dontwarn android.support.v4.**
#忽略第三方包导致的异常
-dontwarn android.support.v13.**
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.support.v4.app.Fragment -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 * implements android.os.Parcelable
-keep public class * extends OrmLiteSqliteOpenHelper
-keep public class net.duohuo.dhroid.net.cache.Cache
-keep public class net.duohuo.dhroid.net.cache.CacheManager
-keep public class * extends net.duohuo.dhroid.util.Perference -keep public class com.android.vending.licensing.ILicensingService -keep class net.duohuo.dhroid.net.cache.CacheManager{ *; }
-keep class net.duohuo.dhroid.net.cache.Cache{ *; }
-keep class com.j256.ormlite.dao.*{ *; }
-keep class com.j256.ormlite.db.*{ *; }
-keep class com.j256.ormlite.table.*{ *; }
-keep class com.j256.ormlite.stmt.*{ *; }
-keep class com.j256.ormlite.support.*{ *; }
-keep class com.j256.ormlite.misc.*{ *; }
-keep class com.j256.ormlite.field.*{ *; }
-keep class com.j256.ormlite.logger.*{ *; }
-keep class com.j256.ormlite.android.*{ *; }
-keep class com.j256.ormlite.android.apptools.*{ *; } -keep class com.google.gson.*{ *; }
-keep class com.google.gson.stream.*{ *; }
-keep class com.google.gson.reflect.*{ *; }
-keep class com.google.gson.internal.*{ *; }
-keep class com.google.gson.annotations.*{ *; }
-keep class com.google.gson.internal.bind.*{ *; }
-keep class net.duohuo.dhroid.util.*{ *; }
-keep class net.duohuo.ivory.util.*{ *; }
-keep public class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper{ *; } -keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
} #保存itemclick的回调
-keepclassmembers class *{
public void on*(android.widget.AdapterView, android.view.View,int,long);
public void to*(android.widget.AdapterView, android.view.View,int,long);
public void on*( android.view.View);
public void to*( android.view.View);
public void on*();
public void to*(); }
#保存所有的属性
-keepclassmembers class * {
<fields>; } -keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
dhroid - dhroid ioc模块对 加密混淆问题的更多相关文章
- 加密混淆.Net程序
		记录在这里,以便学习使用! 一 加密混淆.Net程序 打开Intellilock进处此界面 点击add按钮加入你要操作的程序集, Merge Assemblie 可以合并当前程序集列表中的程序集为一个 ... 
- SWF加解密资源索引之加密混淆篇【转】
		============================ SWF加解密资源索引之加密混淆篇 ============================ [心得] swf加密混淆器(带源码) http:/ ... 
- hashlib 模块:加密
		import hashlib # 基本使用 cipher = hashlib.md5('需要加密的数据的二进制形式'.encode('utf-8')) print(cipher.hexdigest() ... 
- Spring IOC模块的简单介绍
		首先,本人正在学习spring,这是一点心得体会,所以本文中会有不足.错误之处,欢迎各位大佬进行指点. 其次对于框架而言,知道反射是很重要,所以建议在学会反射了后在去看看框架. Spring:是企业级 ... 
- Python模块02/序列化/os模块/sys模块/haslib加密/collections
		Python模块02/序列化/os模块/sys模块/haslib加密/collections 内容大纲 1.序列化 2.os模块 3.sys模块 4.haslib加密 5.collections 1. ... 
- 手写“SpringBoot”近况:IoC模块已经完成
		jsoncat:https://github.com/Snailclimb/jsoncat (About 仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架) ... 
- vue项目配置 `webpack-obfuscator` 进行代码加密混淆
		背景 公司代码提供给第三方使用,为了不完全泄露源码,需要对给出的代码进行加密混淆,前端代码虽然无法做到完全加密混淆,但是通过使用 webpack-obfuscator 通过增加随机废代码段.字符编码转 ... 
- KRPano资源分析工具使用说明(KRPano XML/JS解密 切片图批量下载 球面图还原 加密混淆JS还原美化)
		软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ... 
- 使用Dotfuscator加密混淆程序以及如何脱壳反编译
		混淆演示 首先介绍如何使用Dotfuscator对.net程序加密码混淆/加壳 C#或vb.net编写的应用程序或DLL. 这里随便创建了一个C#的命令行控制台程序.程序很简单,对当前的时间进行了AE ... 
随机推荐
- Linux top和负载的解释(转载)
			转载自://www.blogjava.net/freeman1984/archive/2011/12/08/365853.html op命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程 ... 
- kafka学习之-server.properties详细说明
			http://blog.csdn.net/lizhitao/article/details/25667831 -- 参考文章 http://kafka.apache.org/documentatio ... 
- 75道阿里Java面试题,你能答上几道?
			整理了下阿里近几年的java面试题目,大家参考下吧,希望对大家有帮助,可以帮大家查漏补缺. 答对以下这些面试题,可以淘汰掉 80 % 的求职竞争者. 1.hashcode相等两个类一定相等吗?equa ... 
- linux系统负载
			系统负载System Load:系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度 平均负载(Load Average):一段时间内系统的平均负载,这个一段时间一般取1分钟.5分钟.15分钟 查 ... 
- 通过phoenix在hbase上创建二级索引,Secondary Indexing
			环境描述: 操作系统版本:CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 phoenix版本:phoenix-4.10.0 hbase版本: ... 
- phoenix客户端连接hbase数据库报错:Traceback (most recent call last): File "bin/sqlline.py", line 27, in <module> import argparse ImportError: No module named argparse
			环境描述: 操作系统版本:CentOS release 6.5 (Final) phoenix版本:phoenix-4.10.0 hbase版本:hbase-1.2.6 现象描述: 通过phoenix ... 
- jquery.fileupload插件 ie9下不支持上传
			根据https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support The following browsers support ... 
- Android反编译工具介绍与简单实用方法
			Android反编译的目的无非就是为了看到APK的xml.资源和代码: 得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar class ... 
- HNOI2015题解
			奇了怪了我上次发的题解怎么不见了? 题意自己戳链接-- Day 1 id=4008">HNOI2015 Arthur 思路:期望DP 直接DP是死也D不出的 转化一下 令f[i][j] ... 
- scala spray 概念性内容的总结
			spray 是基于 akka 的轻量级 scala 库,可用于编写 REST API 服务.了解 spray 的 DSL 后可以在很短的时间内写出一个 REST API 服务,它的部署并不需要 tom ... 
