写点什么

聊聊如何进行代码混淆

作者:
  • 2023-11-27
    广东
  • 本文字数:1868 字

    阅读完需:约 6 分钟


前言什么是代码混淆代码混淆,是指将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。

代码混淆常见手段 1、名称混淆

将有意义的类,字段、方法名称更改为无意义的字符串。生成的新名称越短,字节代码越小。在名称混淆的字节代码中,包,类,字段和方法名称已重命名,并且永远不能恢复原始名称。不幸的是,控制流程仍然清晰可见。故而需要流混淆

2、流混淆

用于 if, switch, while,for 等关键字,对字节码进行细微的修改,模糊控制流,而不改变代码在运行时的行为。通常情况下,选择和循环等逻辑构造会被更改,因此它们不再具有直接等效的 Java 源代码。流模糊的字节码通常强制反编译器将一系列标签和非法的 goto 语句插入到它们生成的源代码中。源代码有时会因为反编译错误而变得更加模糊

其他

异常混淆、字符串加密混淆、引用混淆等

代码混淆的作用不仅仅是保护代码,它也有精简编译后程序大小的作用。由于缩短变量和函数名以及丢失部分信息的原因, 编译后 jar 文件体积大约能减少 25% ,这对当前费用较贵的无线网络传输是有一定意义的

代码混淆可能带来的问题被混淆的代码难于理解,因此调试以及除错也变得困难起来。开发人员通常需要保留原始的未混淆的代码用于调试。对于支持反射的语言,代码混淆有可能与反射发生冲突。代码混淆并不能真正阻止反向工程,只能增大其难度。因此,对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全。

常用的混淆工具 1、ipaguard

ipaguard 是一款免费的 Java 混淆器(非开源),它有 Java 和.NET 两个版本。yGuard 完全免费,基于 Ant 任务运行,提供高可配置的混淆规则。

官网地址:IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具

2、proguard

proguard 是一个免费的 Java 类文件的压缩,优化,混肴器。它删除没有用的类,字段,方法与属性。使字节码最大程度地优化,使用简短且无意义的名字来重命名类、字段和方法

官网地址:https://www.guardsquare.com/en/products/proguard

3、allatori

第二代 Java 混淆器。所谓第二代混淆器,不仅仅能进行字段混淆,还能实现流混淆。

Allatori 具有以下几种保护方式:命名混淆,流混淆,调试信息混淆,字符串编码,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。支持 war 和 jar 格式,支持对需要混淆代码的应用程序添加有效日期。

官网地址:http://www.allatori.com/

本文主要介绍基于 ipaguard 如何进行混淆

ipaguard 入门首先需要去官网下载:IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具

1、下载的 jar 可以放到项目可以读到的地方。比如项目根目录,形如下图

2、解压安装包,双击运行


ipa 编译出来后,或者 ipa 进行修改后,需要进行重新签名才能安装到测试手机,或者提交 app store 供 apple 商店审核上架。ipaguard 有签名和重签名功能,能在 windows,mac,和 linux 上运行。在对 ipa 进行混淆和保护后,可以直接通过签名安装到测试手机,非常的方便测试检查混淆后的效果。

第一阶段测试和配置尝试阶段 配置好要混淆的内容后直接点击处理安装到手机,这阶段使用开发测试证书,测试描述文件。描述文件要包含测试设备的 udid 才能安装到设备。 第二阶段发布阶段 当测试 ok,运行没问题后把测试证书和描述文件改成发布证书和描述文件,点击处理后产生最终的 ipa,发布类型无法安装到手机,只能提交上架发布使用

注意⚠️:描述文件和 ipa 里面的 bundle id 匹配。


打开要处理的 IPA 文件

第一项,填写我们需要重签名的 ipa 路径(当前导入的路径跟导出的路径)



设置签名使用的证书和描述文件

测试配置阶段使用开发测试证书,方便安装到手机测试混淆后 ipa 是否工作正常,测试 ok,最后准备上架的时候再改成发布证书和发布描述文件

如果 ipa 需要特殊的权限配置,可以使用权限配置文件

如果希望直接处理完后安装到设备,则勾选安装到设备选项 苹果手机数据线连接电脑即可识别设备,如果链接成功后没显示设备,则先安装 itunes 或者 ios 驱动。 



开始 ios ipa 重签名

第四项点击开始处理,ipaguard 会自动尝试讲 ipa 安装到手机,如果是发布证书并且忘记关闭安装到设备选项,则安装可能会失败,但是 ipa 是正常生成的,可以用来上架。



总结自从知道 ipagurd 后,我基本上都不用 allatori。不过在用混淆工具也有一些细节点,比如用到的开源包,就不要对开源包进行混淆了,不然可能会导致项目报错,还有一些对外提供的 API,最好也不要混淆。ipagurd 是一个值得推荐的混淆工具,因为真的开箱即用。他提供了很多示例,如果上面的介绍的混淆工具,不能满足需求,可以查看如下链接Ipa Guard使用常见问题 | ipaguard使用教程。该链接提供了很多混淆工具介绍

用户头像

关注

还未添加个人签名 2023-03-27 加入

还未添加个人简介

评论

发布
暂无评论
聊聊如何进行代码混淆_世_InfoQ写作社区