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 ...
随机推荐
- android project 文件夹
android多国语言文件夹 http://www.blogjava.net/zhaojianhua/archive/2012/02/09/369676.html Android平板开发精确适配不同的 ...
- Tomcat多站点部署方式
1.同一个Tomcat 同一个端口 部署多个项目 第一步:把待发布的多个项目.war文件放入tomcat的webapps文件下下 第二步:修改 $TOMCAT_HOME\conf 下的server.x ...
- 【笔试面试】神马搜索C++程序猿电话面试
面试时间:2015.07.15 预约时间:2015.07.14.电话面试前一天,会电话咨询你方面电话面试的时间. 面试环节: 无自我介绍(这是我面试这么多家公司碰到的第一次),直接面试内容. 问题1: ...
- 【Oracle】强制关闭会话
select sid, serial# from V$session where sid in (select sid from v$LOCK where TYPE in ('TM','TX')); ...
- Redis 入门指令
-- -- string SET key value GET key GETRANGE key start end GETSET key value GETBIT key offset MGET ke ...
- 树莓派(Raspberry Pi)USB无线网卡自动连接,二代B
Raspberry Pi 使用USB无线网卡的时候不会因为路由重启而掉线. #!/bin/bash while true ; do if ifconfig wlan0 | grep -q " ...
- Python中的类(下)
本文将介绍一下类的构造函数和初始化函数,以及如何通过"魔术方法"定制一个类. 类构造和初始化 在前面的文章中,经常使用初始化函数"__init__",下面看看& ...
- ios开发之--跳转到指定的TabBarViewController中的某一个VIewController
比较简单,也很实用,方法大同小异,仅做记录,方法的系统记录如下: [self dismissViewControllerAnimated:YES completion:^{ // 这是从一个模态出来的 ...
- Docker-创建和分享应用(3)
Dockerfile定义容器内环境中发生的事情.对网络接口和磁盘驱动器等资源的访问在此环境中进行虚拟化,该环境与系统的其他部分隔离,因此您需要将端口映射到外部世界,并具体说明要“复制”哪些 ...
- GSAP JS基础教程--动画的控制及事件
好多天没有写无博文啦,今天无聊就再写一下! 今天要讲的是TweenLite的一些事件以及,TweenLite动画的控制,TweenMax类似,请自行参考官方文档:http://api.greensoc ...