javascript-obfuscator / javascript-obfuscator/webpack-obfuscator

Obfuscation doesn't work on ionic angular mobile iOS app

Abierto
#168 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
928
Forks
92
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza con angular.json y extra-webpack.config.js, luego vuelve a ejecutar ionic build e inspecciona los archivos generados www/main.js, vendor.js y polyfills.js junto con el stack trace de iOS informado. Comprueba qué configuración de ofuscación causa los errores en tiempo de ejecución y la navegación rota; se considera terminado cuando la aplicación iOS ofuscada se ejecuta y navega sin esos errores.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
angular, ios, javascript
Área
build-system, mobile-dev
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.