移动端 App 被反编译了怎么办?

长孙雯婷 阅读 51

我用 React Native 打了个 APK 包,结果被人用 apktool 反编译后直接看到了源码,连接口地址都暴露了,这太危险了吧?

我试过开启 Proguard 混淆,但好像对 JS 代码没用,是不是得额外处理?有没有办法保护 JSBundle 不被轻易读出来?

我来解答 赞 14 收藏
二维码
手机扫码查看
1 条解答
极客子轩
这事儿确实挺常见的,React Native 默认打包的 JSBundle 就是明文存放在 APK 里的,apktool 解包后直接就能看到 index.android.bundle 这个文件。

Proguard 确实对 JS 代码没用,它是给 Java/Kotlin 用的。JS 代码需要另外处理。

几个有效的保护手段:

一是开启 Hermes 引擎。从 RN 0.60 开始默认就带 Hermes 了,它会把 JS 编译成字节码形式,不是源码直接暴露,虽然不是完全不可逆,但比明文 bundle 难读多了。配置方式是在 android/app/build.gradle 里把 enableHermes 设为 true。

二是如果不用 Hermes 或者想加强混淆,可以用 react-native-obfuscator 这类工具对 JS 代码做混淆处理后再打包。

三是最重要的:接口地址绝对不要硬编码在前端代码里。任何人用抓包工具都能看到你请求的地址,暴露源码只是多走一步。正确的做法是接口地址通过配置下发,或者至少放在 native 层做一层转发。

四是如果你的业务对安全要求很高,可以考虑把核心业务逻辑用 native 模块实现,JS 层只负责 UI 渲染。

简单说就是:Hermes 开启 + 接口地址不要写死 + 敏感逻辑放 native。这是最实际的防护方案。
点赞
2026-03-17 13:00