首页 > 其他分享 >聊聊如何进行代码混淆

聊聊如何进行代码混淆

时间:2023-11-27 18:11:22浏览次数:29  
标签:混淆 ipa 聊聊 代码 测试 安装 ipaguard

 聊聊如何进行代码混淆

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

代码混淆常见手段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使用教程。该链接提供了很多混淆工具介绍

标签:混淆,ipa,聊聊,代码,测试,安装,ipaguard
From: https://www.cnblogs.com/sdges/p/17860021.html

相关文章

  • 写代码的经验和习惯总结
    前言:这篇文章全部记录代码规范,目的是为了让自己写出更加高效优美的代码。持续更新!(草稿)代码书写规范的目的提升代码运行效率增加代码可读性......
  • 【打怪升级】【万字长文】聊聊并发编程(前言)
    在之前无意中看到有群友关于:业务中尽量不要使用并发编程和线程池一文中,引发了几点思考:对于不熟悉并发编程的开发者,引入并发设计确实会导致意想不到的问题出现,增加了维护难度和周期;但是现实在某些设计场景中,我们无法避免这种设计,并发带来的好处显而易见。今年再重温了几遍并发设计......
  • Go 自动生成代码工具 一( go-zero 中 goctl rpc 命令代码生成原理)
    总共分为三篇:1.分析`go-zero`中`coctlrpc`通过一个`proto`文件生成一系列文件。2.模仿这个原理,结合`protoc`生成代码的特性,把gin的接口定义,也放入proto文件中,自动生成gin的接口代码。3.自动生成项目中error错误定义文档。(通过go源码自动生成文档)go-zero中goctl......
  • git 代码回退到指定版本
     先下载代码 gitclone地址.git 进入到指定目录cd 查看提交记录gitlog退出(:q)输入英文字符q回退到之前提交的版本(完全恢复,现有修改提交全删除)gitreset--hard提交的版本commit ......
  • bat批量复制文件(一键打包更新代码,避免手动一个个复制)
    如果文件夹不存在,也可以复制过去。复制文件夹用copy,复制目录和里面的文件用xcopy命令:xcopy  /y/e/s/i/k 源文件夹路径目标文件夹路径 @echooffChcp65001echo-----copystart-----echo-----copycssxcopy/y/e/s/i/kD:\crd\cms\workspace\cms\web\styles......
  • Day04:编写第一个代码“Hello World!”
    HelloWorld随便新建一个文件夹,存放代码新建一个java文件文件后缀名为.javaHello.java[注意点]系统显示后缀名编写代码publicclassHello{ publicstaticvoidmain(String[]args){ System.out.print("Hello,World!"); }}java文件路径前加CMD运行,打开控制......
  • 软件工程读后感7-代码阅读方法与实践1
    最近,我阅读了代码阅读方法与实践的一部分。有时,阅读代码是一件不得不去做的事。有些时候,阅读代码也许是为了了解程序是如何工作的。您阅读代码可能是将代码作为一种文献。每种原因的代码阅读都有自己的一套技术,强调不同方面的技能。过去,我对于为什么以及如何阅读代码的理解不够深......
  • 代码随笔-Python练习之读取本地文件
    1importre2importrequests34#读取本地的xml文件5withopen('.\lol.txt','r',encoding='utf-8')asf:6forlineinf:7if'"instance_id"'inline:8start_index=line.fi......
  • 【Python爬虫】第10篇:js逆向解析和Mongodb数据库。md集合文档(已分享,附代码)
    本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本文我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。全套笔记和代码自取地址:请移步这里感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~共8章,37子模块JS的解析......
  • 写代码不用"if"行不行,曾经的反 if 运动
    如果在IT行业的时间够长的话,可能还记得大约10几年前,设计模式风靡一时的时候,有过一段反"if"的运动。所谓的反"if"运动,其实是夸大了"if"语句带来的问题,比如当时提出的问题有:代码不好维护,特别是if或者else中的代码比较多的时候if和elseif分支太多的时候,代码难以阅读和修改阅......