今天说说安卓混淆那点事:

在很多文章混淆都是开启minifyEnable之类的,其实这都是对class文件的混淆;当你反编译微信apk时你发现资源文件都是a b c...打开里面也找不到微信的图片信息和布局文件信息,其实微信对资源文件也做混淆压缩处理。

1:class文件混淆

在你的app的build里面配置

android {compileSdkVersion 28defaultConfig {applicationId "cn.wqgallery.myproguard"minSdkVersion 15targetSdkVersion 28versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}//签名配置signingConfigs {//开发版debug {storeFile file("D:\\studio  key\\studio  key\\GXY.keystore")//自己的签名保存路径storePassword "android"keyAlias "androiddebugkey"keyPassword "android"}//发布版release {keyAlias 'androiddebugkey'keyPassword 'android'storeFile file('D:/studio  key/studio  key/GXY.keystore')//自己的签名保存路径storePassword 'android'}}//编译配置buildTypes {//发布版release {minifyEnabled true     //混淆buildConfigField "boolean", "LOG_DEBUG", "false" //不显示logzipAlignEnabled true     //Zipalign优化shrinkResources true    // 移除无用的resource文件proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'signingConfig signingConfigs.release}//开发版debug {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}

//关于signingConfigs签名的配置可以看看这篇文章https://blog.csdn.net/bzlj2912009596/article/details/78188570

配置好了我们就可以配置自定义规则了打开proguard-rules.pro文件,下面是一些常用的混淆语法

#自定义混淆配置#配置UserBean类名不被混淆+变量和方法混淆  语法 -keep class 全类名
#-keep class cn.wqgallery.myproguard.UserBean#配置UserBean类名+类里面变量+方法都不被混淆  语法 -keep class 全类名{*;}
#-keep class cn.wqgallery.myproguard.UserBean{*;}#配置UserBean类指定的成员变量不被混淆+类名混淆  语法 -keep class 全类名
#-keepclassmembers  class cn.wqgallery.myproguard.UserBean{*;}#类名不混淆+ 变量方法混淆
#-keepclasseswithmembers class cn.wqgallery.myproguard.UserBean{*;}#配置类里面的native 方法不被混淆
-keepclasseswithmembers class cn.wqgallery.myproguard.UserBean{
native <methods>;
}

//根据你的实际项目代码看那些代码不能混淆(一般自定义view,需要被反射的类,枚举等等只要改变了名字导致不能使用的都不能混淆)

//现在以发布版本为例,切换AS到release的build模式

//如果你切换到这个模式报错,可以按这篇文章配置下https://blog.csdn.net/bzlj2912009596/article/details/78188570

//选择build》Generate singed APK打包签名Apk

//这样打包成的apk就是混淆过的apk了。

来两张图对比下混淆前和混淆后效果

//没有混淆的

//混淆了图片

UserBean类混淆后变成了a

>>------------------------------------------------------------------------------------------------

2:现在介绍如何对资源文件的混淆

我们使用微信的开源框架andresguard

//GitHub地址:https://github.com/shwenzhang/AndResGuard/blob/master/README.zh-cn.md

//使用步骤

1:在工程的的build里面配置依赖

dependencies {classpath 'com.android.tools.build:gradle:3.2.0'//微信资源压缩混淆配置classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.17'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files
}

2:在app的目录下新建个and-res-guard.gradle文件,复制下面白名单配置(注意名字可以自定义但是尽量不要特殊符号)

apply plugin: 'AndResGuard'andResGuard {mappingFile = nulluse7zip = trueuseSign = truekeepRoot = falsecompressFilePattern = ["*.png","*.jpg","*.jpeg","*.gif","resources.arsc"]whiteList = [// your icon"R.drawable.icon",// for fabric"R.string.com.crashlytics.*",// for umeng update"R.string.tb_*","R.layout.tb_*","R.drawable.tb_*","R.drawable.u1*","R.drawable.u2*","R.color.tb_*",// umeng share for sina"R.drawable.sina*",// for google-services.json"R.string.google_app_id","R.string.gcm_defaultSenderId","R.string.default_web_client_id","R.string.ga_trackingId","R.string.firebase_database_url","R.string.google_api_key","R.string.google_crash_reporting_api_key",//友盟"R.string.umeng*","R.string.UM*","R.layout.umeng*","R.drawable.umeng*","R.id.umeng*","R.anim.umeng*","R.color.umeng*","R.style.*UM*","R.style.umeng*",//融云"R.drawable.u*","R.drawable.rc_*","R.string.rc_*","R.layout.rc_*","R.color.rc_*","R.id.rc_*","R.style.rc_*","R.dimen.rc_*","R.array.rc_*"//项目中自己使用反射 获取资源id的资源"R.drawable.bd"]sevenzip {artifact = 'com.tencent.mm:SevenZip:1.2.10'}
}

3:在APP的build下配置下面代码

apply plugin: 'com.android.application'//系统的//引用微信压缩资源库,白名单配置
apply from: 'and-res-guard.gradle'

4:同步后点击最右边的gradle ,选择tasks》andresguard》resguardRelease(tasks下面是些执行脚本,点击就执行这些脚本,andresguard下有三种类型脚本我们今天是要发布版,点击resguardRelease执行脚本)

//下面运行日志提示下面就是成功

//在APP》build》outputs》apk》release》AndResGuard_app-release》temp》选择app-release_7zip_aligned_signed.apk

这样你反编译资源文件就是混淆了

//最近建议再使用360或者乐固进行加固处理

注意 项目中使用反射获取的资源 需要添加到 白名单 (and-res-guard.gradle),

//这个是的一个demo地址:https://github.com/zhudaihao/MyProguard

安卓混淆-微信混淆同款相关推荐

  1. 安卓与“Proguard”——安卓的代码混淆

    什么是代码混淆 混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义.被混淆过的程序代码,仍然遵照 ...

  2. 安卓Hook微信-计步器、万能骰子、自动回复、反撤回、抢红包思路分享

    此篇博客仅实现的思路分享,不提供最终成品 目录 学完你能收获什么 要求 前置条件 运行环境 成果 最终效果 开发耗时 最终Hook的类 实现 需知 1.选择root或VA 2.反编译代码工具 3.YA ...

  3. 微信 android 省略号,安卓版微信再现重大Bug,点击链接直接崩溃

    原标题:安卓版微信再现重大Bug,点击链接直接崩溃 [PConline 资讯]微信作为当下即时通信软件,日均活跃用户数量高达10亿人.就是这样一款高活跃度软件,Bug却频频出现. 3月3日,有大量网友 ...

  4. 安卓端微信H5下载文件处理:让微信自动弹起跳转外部浏览器窗口

    配套视频:https://www.bilibili.com/video/BV1oA411B7gv/ 背景 今天鼓捣了一下手机投屏到笔记本,就想录个视频展示一下学习成果,正好就想起了很早之前实现的这个功 ...

  5. android朋友圈动态视频,安卓版微信7.0.5尝鲜,朋友圈可发30秒视频,网友最爱的功能是?...

    原标题:安卓版微信7.0.5尝鲜,朋友圈可发30秒视频,网友最爱的功能是? 微信现在已经是成为人们每天最常使用的聊天工具之一,因此微信的每一次更新和变化都会引起人们的注意.这不,安卓版的微信又悄悄推出 ...

  6. 微信小程序:王者荣耀战力查询微信小程序源码下载支持安卓苹果微信QQ等多区查询

    这是一款战力查询的微信小程序源码 源码内自带了接口 目前支持了微信,QQ,苹果,安卓全区都可以查询 支持流量主收益,而且搭建安装简单 使用微信开发者工具打开源码然后设置一下合法域名上传审核即可 该小程 ...

  7. 小程序源码:王者荣耀战力查询微信小程序源码下载支持安卓苹果微信QQ等多区查询-多玩法安装简单

    这是一款战力查询的微信小程序源码 源码内自带了接口 目前支持了微信,QQ,苹果,安卓全区都可以查询 支持流量主收益,而且搭建安装简单 使用微信开发者工具打开源码然后设置一下合法域名上传审核即可 该小程 ...

  8. 基于安卓/android/微信小程序的老年人智慧服务平台管理系统app-#计算机毕业设计

    介绍 困扰管理层的许多问题当中,老年人智慧服务也是平台不敢忽视的一块.但是管理好老年人智慧服务又面临很多麻烦需要解决,例如有几个方面:第一,往往老人人数都比较多,如何保证能够管理到每一老人;第二,如何 ...

  9. 安卓手机微信记录还能找回吗

    安卓手机微信记录还能找回吗 现在只要用智能手机,十个有八个都会安装微信app,走到哪里聊到哪里.随着微信的不断啊改版,功能也越来越强.人们使用微信的目的也各不相同,一开始也许只是为了和亲朋好友聊天,但 ...

最新文章

  1. 感受hook里useEffect的执行顺序,hook倒计时
  2. ubuntu18.10下面安装nodejs和npm和cnpm
  3. android 最新写法,详解Android 硬布局item的高级写法
  4. 你认识的老罗又回来了!罗永浩:我的创造力才刚刚开始猥琐发育
  5. 解除Xcode中Miss File的警告
  6. r语言正则表达式_R中的正则表达式
  7. html flash背景透明写法,如何让Flash不遮挡HTML div元素的技巧
  8. 华为v9计算机在哪方面的应用,华为手机助手怎么用 HiSuite详细使用教程
  9. c语言校招笔试试题,腾讯2014校园招聘C语言笔试题
  10. pygame安装教程(window)
  11. 戴德金--连续性和无理数--我自己做的中文翻译第5页
  12. 化学专业有必要学python吗-cnBeta.COM - 中文业界资讯站
  13. 学而思总裁曹允东谈创业:融资意识很重要
  14. 【vpn异地组网专题】linux(centos7)安装 PPTP服务器
  15. android小米推送,Android手机端小米推送Demo解析和实现方法
  16. OpenGLES学习(一)图片显示
  17. Pytorch1.1.0 入门 自定义op(python)
  18. Mysql Data types in summary.
  19. Joplin+七牛云+vscode 免费云端同步笔记工具(跨平台)
  20. 一种射频卡读写原理及实现

热门文章

  1. 深度学习与多层神经网络的区别
  2. MyBatis四大对象
  3. Idea工具如何使用
  4. 一款网页电路仿真软件
  5. 政府大数据的资源库建设
  6. fik在计算机领域英语缩写,计算机常用英语词汇表
  7. uni 讯飞文字转语音 详解
  8. 基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第三篇)故障保护及问题诊断
  9. c盘满了但是d盘有空间如何扩容-windows
  10. STM32-IIC模拟从模式