javascript-obfuscator / javascript-obfuscator/webpack-obfuscator
Obfuscation doesn't work on ionic angular mobile iOS app
- 主要语言
- TypeScript
- 星标
- 928
- 派生
- 92
- PR 合并指标
- 30 天内没有已合并 PR
描述
I am using
"webpack-obfuscator": "^3.5.1"
My goal is to obfuscate my 'ionic build' output folder called www. This www folder is archived in the .ipa the iPhone executable. The source code in that www folder which mainly consists of html, css and js files. This is readable and its readability can be avoided using obfuscation.
I have made changes in my angular.json file as follows to be able to inject web Obfuscator plugin as shown as below:
"architect": {
"build": {
"builder": "@angular-builders/custom-webpack:browser",
"options": {
"customWebpackConfig": {
"path": "./extra-webpack.config.js",
"mergeStrategies": {
"externals": "replace",
"module.rules": "append",
"plugins": "append"
}
},
"serve": {
"builder": "@angular-builders/custom-webpack:dev-server",
"options": {
"browserTarget": "app:build",
"customWebpackConfig": {
"path": "./extra-webpack.config.js",
"mergeStrategies": {
"externals": "replace",
"module.rules": "append",
"plugins": "append"
}
}
},
Nothing fancy, angular.json file finds a custom web pack json and reads the plugin from there resulting in code obfuscation. Please refer extra-webpack.config.js contents below:
var WebpackObfuscator = require('webpack-obfuscator');
const path = require('path');
module.exports = {
resolve: {},
plugins: [
new WebpackObfuscator({
rotateStringArray: true
}, ['polyfills.js'])
],
module: {
rules: [
{
test: /\.js$/,
exclude: [
path.resolve(__dirname, 'excluded_file_name.js')
],
enforce: 'post',
use: {
loader: WebpackObfuscator.loader,
options: {
rotateStringArray: true
}
}
}
]
}
}
Code obfuscation is done, the output www folder code is not readable but the app throws console errors while running which is shown as below:
2023-11-28 14:11:15.575547+0530 Digital Token[9722:1028322] ERROR: Unhandled Promise rejection: undefined is not a function (near '...iamsdk[_0x52d2dd(0x1b8)]...') ; Zone: ; Task: Promise.then ; Value: TypeError: undefined is not a function (near '...iamsdk[_0x52d2dd(0x1b8)]...') @ionic://localhost/main.js:1:15659
@ionic://localhost/main.js:1:14925
generatorResume@[native code]
_0x312057@ionic://localhost/vendor.js:3119:210
_0x2a195e@ionic://localhost/vendor.js:3119:728
@ionic://localhost/vendor.js:3119:960
l@ionic://localhost/polyfills.js:29:3107
@ionic://localhost/vendor.js:3119:543
onInvoke@ionic://localhost/vendor.js:2163:3089
@ionic://localhost/polyfills.js:14:2296
@ionic://localhost/main.js:1:14635
generatorResume@[native code]
_0x312057@ionic://localhost/vendor.js:3119:210
_0x2a195e@ionic://localhost/vendor.js:3119:728
@ionic://localhost/vendor.js:3119:960
l@ionic://localhost/polyfills.js:29:3107
@ionic://localhost/vendor.js:3119:543
callbackFromNative@ionic://localhost/cordova.js:295:63
@ionic://localhost/plugins/cordova-plugin-ionic-webview/src/www/ios/ios-wkwebview-exec.js:129:35
@ionic://localhost/polyfills.js:14:2296
@ionic://localhost/polyfills.js:29:2809
@ionic://localhost/polyfills.js:14:2965
A@ionic://localhost/polyfills.js:14:10319
promiseReactionJob@[native code]
Even If we ignore these console logs in the iOS app while running the app, the navigation stack is completely broken. The app doesn't not navigate to new screen.
Any help is appreciated. I am out of ideas here.
Thanks in advance
贡献指南
这个仓库没有索引到贡献指南
调研方向
从 angular.json 和 extra-webpack.config.js 开始,然后重现 ionic build,并结合报告的 iOS 堆栈跟踪检查生成的 www/main.js、vendor.js 和 polyfills.js 文件。检查哪种混淆配置会导致运行时错误和导航异常;完成的标准是混淆后的 iOS 应用能够在没有这些错误的情况下运行和导航。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- angular, ios, javascript
- 领域
- build-system, mobile-dev
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100