uni-app 原生JS混淆无效果

uni-app 原生JS混淆无效果

信息类别 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.4.7
手机系统 Android
手机系统版本号 Android 10
手机厂商 华为
手机机型 mate30
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

示例代码:

"app-plus" : {  
    "confusion" : {  
        "description" : "原生混淆",  
        "resources" : {  
            "utils/api.js" : {},  
            "utils/request.js" : {}  
        }  
    },  
}

操作步骤:

"app-plus" : {  
    "confusion" : {  
        "description" : "原生混淆",  
        "resources" : {  
            "utils/api.js" : {},  
            "utils/request.js" : {}  
        }  
    },  
}

预期结果:

  • 实现加密效果

实际结果:

  • 没有加密

bug描述:

配置了manifest.json加密JS文件不能混淆,在APP包里还是看到源代码,

"app-plus" : {  
    "confusion" : {  
        "description" : "原生混淆",  
        "resources" : {  
            "utils/api.js" : {},  
            "utils/request.js" : {}  
        }  
    },  
}

JS文件没有配置全局方法,在单独vue界面调用的


更多关于uni-app 原生JS混淆无效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

js路径对不对

更多关于uni-app 原生JS混淆无效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在使用 Uni-App 开发时,如果你发现原生 JavaScript 代码混淆没有效果,可能有以下几个原因:

1. 混淆工具配置问题

  • 混淆工具未正确配置:确保你使用的混淆工具(如 UglifyJS、Terser 等)已经正确配置,并且已经应用于你的项目。
  • 混淆范围问题:检查混淆工具是否只混淆了部分文件,而没有覆盖到你想要混淆的 JavaScript 代码。

2. Uni-App 构建流程问题

  • 构建流程未启用混淆:在 Uni-App 的构建流程中,默认可能不会启用 JavaScript 混淆。你需要在构建配置中手动启用混淆。
  • 构建配置错误:检查 vue.config.jsmanifest.json 等配置文件,确保混淆选项已正确启用。

3. 代码结构问题

  • 代码未打包:如果代码未经过打包工具(如 webpack)处理,混淆工具可能无法正确识别和混淆代码。
  • 代码分离:如果代码被分离到多个文件中,确保混淆工具能够处理所有相关文件。

4. 混淆工具版本问题

  • 工具版本过旧:确保你使用的混淆工具是最新版本,旧版本可能存在一些 bug 或功能缺失。
  • 兼容性问题:某些混淆工具可能与 Uni-App 或其他工具链存在兼容性问题,尝试更换其他混淆工具。

5. 混淆工具本身问题

  • 混淆工具功能有限:某些混淆工具只能进行简单的变量名替换,无法进行更复杂的混淆操作。如果需要更高级的混淆,可以考虑使用专门的混淆工具或服务。

解决方案

  1. 检查混淆工具配置:确保混淆工具已正确配置并应用于项目。
  2. 启用 Uni-App 构建混淆:在 vue.config.jsmanifest.json 中启用混淆选项。
  3. 使用专门的混淆工具:如果内置的混淆工具效果不佳,可以尝试使用专门的混淆工具或服务,如 JScrambler、JavaScript Obfuscator 等。
  4. 手动混淆:如果自动混淆工具无法满足需求,可以考虑手动对关键代码进行混淆。

示例:在 vue.config.js 中启用 Terser 混淆

module.exports = {
  configureWebpack: {
    optimization: {
      minimize: true,
      minimizer: [
        new TerserPlugin({
          terserOptions: {
            compress: {
              drop_console: true, // 移除 console.log
            },
            mangle: true, // 混淆变量名
          },
        }),
      ],
    },
  },
};
回到顶部