uniapp打包iOS应用并通过审核:代码混淆的终极解决方案 ✨

摘要

本篇博客将教你如何使用 JavaScript-obfuscator 插件来一键发行和混淆 iOS 上的 uniapp 代码。通过安装插件、创建运行脚本,并执行混淆操作,你将能够轻松通过审核,提高应用程序的安全性。🔒

引言

在将 uniapp 项目打包并上传到 iOS 应用市场时,我们经常会遇到一个问题,即代码重复率过高导致无法通过审核。为了解决这个问题,我们可以使用 JavaScript-obfuscator 插件对代码进行混淆,以绕过审核限制。本篇博客将详细介绍安装插件、创建运行脚本以及执行混淆操作的步骤,并附有代码案例演示。

正文

第一步:安装 JavaScript-obfuscator 插件

在项目终端中执行以下命令来安装 JavaScript-obfuscator 插件:

npm install javascript-obfuscator -g

安装完成后,你可以通过以下命令检查插件版本号,确认是否安装成功:

javascript-obfuscator -v

第二步:创建运行脚本

在项目根目录下创建一个 build.bat 脚本文件,文件内容如下:

C:
javascript-obfuscator C:\Users\zy\Desktop\xiangmu\demo\unpackage\dist\build\mp-weixin\pages --output C:\Users\zy\Desktop\xiangmu\demo\unpackage\dist\build\mp-weixin\pages && javascript-obfuscator C:\Users\zy\Desktop\xiangmu\demo\unpackage\dist\build\mp-weixin\components --output C:\Users\zy\Desktop\xiangmu\demo\unpackage\dist\build\mp-weixin\components 

以上代码表示对指定文件夹中的文件进行混淆,并将混淆后的文件输出到指定目录。如果还需要混淆其他文件代码,可以直接在命令后面添加相应的混淆操作。

第三步:执行运行脚本

双击 build.bat 文件,即可执行混淆操作。混淆成功后,命令弹窗会自动关闭。

可以看出上述混淆工具混淆还是很繁琐的,我们推荐另外一个好用简单方便的小工具-ipaguard。

二、使用

class-dump在dump从appstore上下载下来的app的时候,首先是需要对app进行砸壳处理的,具体的砸壳工具是ipaguard、clutch等等。

以ipaguar为例,

使用ipaguard来对程序进行加固

代码加固是进一步保护应用的一种方式,通常通过特定平台来对应用进行加固处理。

这边以ipaguard为例,目前还在免费阶段,想薅羊毛的快快试试。

Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加ipa破解反编译难度。可以对图片,资源,配置等进行修改名称,修改md5。只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。

所以就要使用到混淆器,混淆器是把里面的代码变量等信息进行重命名,这样可读性会变得非常差,接着,

到这里,我们完成了对代码的混淆,但是还没有进行加固,防止反编译,所以,请往下看

然后导入自己的包就可以了,这里是流水式的走下来,所以只需要导入和导出就可以了,

添加单个文件,选择好刚刚混淆后的包,然后你做的事情就是等,等待上传完–加固完–下载完–已完成,当到已完成的时候,说明这里已经可以导出了,导出需要前面提到的自己创建的签名,这里可是会用到的,如果不用,则包安装包可能会出现问题

选择导出签名包,选择签名文件,输入密码,然后点击开始导出

导出的包是经过混淆,经过加固比较安全的包了

总结

通过本篇博客介绍的步骤,你可以轻松地一键发行和混淆 iOS 上的 uniapp 代码,从而通过审核并提高应用程序的安全性。希望本篇博客对你有所帮助。💪

参考资料

  • JavaScript-obfuscator GitHub 仓库

希望本篇博客对你有所启发,祝你在uniapp开发中取得更多成果!🚀🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/223096.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【二分答案法】寻找峰值

题目:162. 寻找峰值 - 力扣(LeetCode) 题目描述: 题目分析: (1)据题知,索引-1、索引n(n为数组长度)处的元素都默认为无穷小,我们可以在一开始特判…

逻辑漏洞之越权漏洞

一、越权漏洞简介 越权访问(Broken Access Control,简称 BAC)是Web应用程序中一种常见的漏洞。它的威胁在于一个账户即可控制全站用户数据。 该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利…

计算机网络:传输层(TCP详解)

文章目录 前言一、面向连接传输TCP1.段结构TCP往返延时(RTT)和超时 2.可靠数据传输TCP发送方事件TCP重传产生TCP ACK的建议[RFC 1122. RFC 2581]快速重传 3.流量控制4.TCP连接管理同意建立连接(2次握手)TCP三次握手TCP关闭连接&am…

JavaScript <有道翻译之数据解密‘23年12月06日版‘>--案例(三)

前言: 记得上半年还是去年,有道翻译还是直接返回明文数据;现在也跟着,用接口返回加密数据了; 娱乐一下,破他的密文数据... 成品效果图: js部分: 对于找他的密文数据有点费时,针对密文--->搜他地址和启动器不是特别容易,辗转多时(搜:descrypt/json.parse 结合使用更快),有图…

Linux环境下的MySQL安装

文章目录 前提说明1.卸载内置环境2.检查系统安装包3.卸载这些默认安装包4.获取MySQL官方yum源5.安装MySQLyum源,对比前后yum源6.查看yum源是否生效7.安装MySQL服务8.查看相对应的配置文件9.启动服务10.查看启动服务11.登录方法一12.登录方法二13.登录方法三14.设置开…

uniapp实战 —— 分类导航【详解】

效果预览 组件封装 src\pages\index\components\CategoryPanel.vue <script setup lang"ts"> import type { CategoryItem } from /types/index defineProps<{list: CategoryItem[] }>() </script><template><view class"category&…

Codeforces Round 913 (Div. 3)补题

Rook 题目大意&#xff1a;我们给定一个棋盘(如下图)&#xff0c;棋盘上有一个车&#xff0c;问车可以到的位置&#xff0c;任意顺序输出即可。 思路&#xff1a;输出车的行列中非它本身的点即可。 #include<bits/stdc.h> using namespace std; int main() {int t;scanf…

构建一个语音转文字的WebApi服务

构建一个语音转文字的WebApi服务 简介 由于业务需要&#xff0c;我们需要提供一个语音输入功能&#xff0c;以便更方便用户的使用&#xff0c;所以我们需要提供语音转文本的功能&#xff0c;下面我们将讲解使用Whisper将语音转换文本&#xff0c;并且封装成WebApi提供web服务…

【WebSocket】使用ws搭建一个简单的在线聊天室

前言 什么是WebSockets&#xff1f; WebSockets 是一种先进的技术。它可以在用户的浏览器和服务器之间打开交互式通信会话。使用此 API&#xff0c;你可以向服务器发送消息并接收事件驱动的响应&#xff0c;而无需通过轮询服务器的方式以获得响应。 webscokets 包括webscoket…

AntDesignBlazor示例——创建列表页

本示例是AntDesign Blazor的入门示例&#xff0c;在学习的同时分享出来&#xff0c;以供新手参考。 示例代码仓库&#xff1a;https://gitee.com/known/AntDesignDemo 1. 学习目标 使用Table组件创建列表页面使用DisplayName特性显示中文表头使用模板和Tag组件显示高温数据使…

2023站酷CUBE设计大会,以AIGC赋能创意人

12月6日&#xff0c;2023站酷CUBE设计大会在厦门举行。大会以“AI与热爱”为主题&#xff0c;由美图与站酷联合举办&#xff0c;邀请了多位创意先锋进行分享&#xff0c;旨在构建设计新生态&#xff0c;以AIGC内容生产新范式为创意人持续赋能&#xff0c;共同提升设计价值。 美…

简单自定义vuex的设计思路

vuex集中式存储管理应用所有组件的状态&#xff0c;并以响应的规则保证状态以可预测的方式 发生变化。 步骤&#xff1a; 1.Store类&#xff0c;保存选项&#xff0c;_mutations&#xff0c;_actions&#xff0c;getters 2.响应式状态&#xff1a;new Vue方式设置响应式。 …

电脑开机提示“未正确启动”怎么办?

有时我们在打开电脑时&#xff0c;会出现蓝屏&#xff0c;并提示“电脑未正确启动”&#xff0c;那么&#xff0c;这该怎么办呢&#xff1f;下面我们就来了解一下。 方法一&#xff1a;执行系统还原 我们在上文中提到了Windows无法正确启动的问题可能是由于三方程序或者近期的…

Java利用TCP实现简单的双人聊天

一、创建新项目 首先创建一个新的项目&#xff0c;并命名为聊天。然后创建包&#xff0c;创建两个类&#xff0c;客户端&#xff08;SocketClient&#xff09;和服务器端&#xff08;SocketServer&#xff09; 二、实现代码 客户端代码&#xff1a; package 聊天; import ja…

Spring Boot 3.2项目中使用缓存Cache的正确姿势!!!

你是否曾想过为什么在 Spring Boot 应用中缓存是如此重要&#xff1f;答案在于它通过减少数据检索时间来提高性能。在本文中&#xff0c;我们将深入探讨缓存对微服务模式的影响&#xff0c;并探讨根据操作易用性、速度、可用性和可观测性等因素选择正确缓存的重要性。我们还将探…

[RISCV] 发现一个可以看RISC-V CPU行为的开源项目

最近在浏览某大型程序员交友 网站的时候发现一个好玩的项目,介绍如下: A small program that handles mie, msi, mti and trap interrupts and updates some global variables on interrupts. 重点是他下面还放了一张图: 能看到RISCV CSR的行为太酷啦!!! 下面一起setup一…

Sourcepawn脚本入门(二)命令与事件监听

&#x1f34e;Sourcepawn脚本入门(二)命令与事件监听 &#xff08;控制台&#xff09;命令是常用的插件形式&#xff0c;eg. noclip …等都是常用的命令&#xff0c;在游戏中使用也很容易,souremod可以注册自己的命令。 事件的监听则需要考虑到不同的起源游戏支持的事件不同&am…

中文BERT模型预训练参数总结以及转化为pytorch的方法

1.目前针对中文的bert预训练模型有三家&#xff1a; 谷歌发布的chinese_L-12_H-768_A-12 还有哈工大的chinese-bert-wwm / chinese-bert-wwm-ext 以及HuggingFace上的bert-base-chinese(由清华大学基于谷歌的BERT在中文数据集上训练开发的模型&#xff0c;上传在HuggingFace) …

彻底删除VsCode配置和安装过的插件与缓存

前言 当你准备对 Visual Studio Code&#xff08;VSCode&#xff09;进行重新安装时&#xff0c;可能遇到一个常见问题&#xff1a;重新安装后&#xff0c;新的安装似乎仍然保留了旧的配置信息&#xff0c;这可能会导致一些麻烦。这种情况通常是由于卸载不彻底所致&#xff0c…

【LVS实战】04 LVS+Keepalived实现负载均衡高可用

一、介绍 Keepalived 是一个用于 Linux 平台的高可用性软件。它实现了虚拟路由器冗余协议 (VRRP) 和健康检查功能&#xff0c;可以用于确保在多台服务器之间提供服务的高可用性。Keepalived 可以检测服务器的故障&#xff0c;并在主服务器宕机时&#xff0c;自动将备份服务器提…
最新文章