javascript-obfuscator / javascript-obfuscator/webpack-obfuscator

Obfuscation doesn't work on ionic angular mobile iOS app

オープン
#168 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
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 を再現して、生成された www/main.js、vendor.js、polyfills.js ファイルを報告された iOS のスタックトレースと併せて調査します。どの難読化設定がランタイムエラーとナビゲーションの不具合を引き起こしているかを確認します。難読化された iOS アプリがそれらのエラーなしで実行およびナビゲーションできれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
angular, ios, javascript
領域
build-system, mobile-dev
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。