Android应用安全防护实践一辣敌方眼睛之代码混淆成空白字符和乱码(四)
37/100
发布文章
weixin_44515491

代码混淆应该很多人听过 但是很少使用 因为他会修改编译后的最终代码 可能会导致软件闪退啊 什么乱七八糟的 对此敬而远之 不想去碰他

下面来简单说下我的使用经验

混淆 不能混淆四大组件名字和路径、自定义view的名字和部分方法名字(什么动画要用到)、ndk的类 不能混淆名字 方法名字、以及之前说过的ndk调java的 那个java方法名字、还有webview的一些东西也和被反射的类不能混淆
以上的网上都有说明和每个混淆参数的简洁 我这里就不多讲了 自己先把基础了解下
例如这个博客的文章或者其他的文章 去了解下各个指令的用途

其他的就无所谓了

一般的配置按照你学习的办法搞就行了 然后我这里只重点说明一下

  1. 不要使用网上的那些什么狗劳子 第三方库通用混淆配置大全 没篮子用ojbk
  2. 使用的开源库 如果没有说明混淆要配置什么 就不要去配置他的排除
  3. 如果因为第二条出现运行时错误 先去仔细找一下官方有没有混淆说明 是不是之前没注意到 然后再通过-keep等相关的之类去排除 写代码这些都行怎么搞都懂 这里懒得讲
  4. 一定要了解项目 和自己使用的第三方库(低优先级) 其中代码可能用到反射等操作 这时候一定要排除被反射的类名 和方法 也尽量避免使用反射 第三方库用到反射一般会说明混淆排除的 除非那个开源十分不负责任
  5. 项目使用了webview的要注意混淆配置 以及使用了h5 js交互的 要排除

Json实体类混淆参照我之前的文章Json混淆办法

记得我说的重点 然后开始你的混淆配置 编译混淆包后 测试一遍检查是否存在问题 没有其他问题就可以开始了解一下下面几个指令

    #混淆时重打包 把你包名里面的代码抽取到你指定的包名底下 没有会创建
    #比如我这里就比较皮了 伪装到v4包里面 玩几秒钟的捉迷藏
    -repackageclasses 'android.support.v4'

    #自定义混淆字典 配和名字一样 成员的名字 类名 包名 各种都可以设置字典
    -obfuscationdictionary dict.txt
    -classobfuscationdictionary dict.txt
    -packageobfuscationdictionary dict.txt

这个字典比较重要了 我们默认的规则就是一些字母 混淆后也不算很难阅读

但是这个字典就比较骚了 空白字符+特殊字符 看起来完全分不清啥是啥看下图 手段极其残忍
效果图
这里是字典下载地址 我找了很久才找到这个开源的字典生 我copy了一份点我为飞机直达
简单混淆就到这里了
下面再补充一发 字符串混淆 防止别人通过文本搜索定位到某个功能代码段
下面是混淆后的字符串(来呀 你搜啊 哇咔咔
字符串全部变成byte了 完全卡不出是个啥
在这里插入图片描述
混淆工具github地址 这个也不是我的 我只是copy了一份点我飞机直达
按照github上面的说明使用就行 这里不说了
Markdown 已选中 1746 字数 46 行数 当前行 46, 当前列 24HTML 1108 字数 30 段落

标签: none

添加新评论