如何混淆我的react-native JS代码?我在build.gradle文件中设置了以下内容:
release {
minifyEnabled true
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
下面是我的proguard-rules.pro文件(默认):
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
但是在解压缩apk之后,我仍然可以找到我的JS组件名称、变量和URL
由于您的React原生JavaScript代码构建在Android和iOS的原生代码之上,整个模糊处理过程将考虑所有三个代码库:
幸运的是,您的项目已经包含proguard
混淆器,可以按以下方式启用:
>
在android/app/
文件夹中的build.gradle
文件中更新发布配置:
def enableProguardInReleaseBuilds = true
android {
// other config omitted for brevity
buildTypes {
release {
debuggable false
shrinkResources enableProguardInReleaseBuilds
zipAlignEnabled enableProguardInReleaseBuilds
minifyEnabled enableProguardInReleaseBuilds
useProguard enableProguardInReleaseBuilds
setProguardFiles([getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'])
}
}
}
启用ProGuard模糊处理,并相应地在Android/app/
文件夹中的proguard-rules.pro
文件中编辑规则。
下面的代码行需要注释掉(在行首添加#
):
#-dontobfuscate
在这个阶段,构建Android应用程序的发布版本应该包含模糊的Java代码。通过分析您的APK来检查它,您应该找到函数调用,如A
、B
,而不是它们的实际名称。
上面的代码引用自玛丽亚·科洛蒂安的媒体帖子。还可以从GitHub存储库中查看最新的默认React原生ProGuard配置。
从Android3.3测试版开始,可以使用一个更优化的模糊处理程序R8。
iOS项目中没有会混淆代码的内置库,因此必须使用外部包。PPiOS-Rename和ObjC-Obfuscator是这里的两个选项。详细的文档可以在他们的GitHub存储库中找到。
这将是模糊处理中最重要的部分,因为我们的实际代码是用JavaScript编写的。这里可以使用react-native-obfuscating-transformer npm包:
npm install react-native-obfuscating-transformer
在项目根目录的rn-cli.config.js
中添加/更新CLI配置,Android
和IOS
文件夹位于该目录中。
module.exports = {
getTransformModulePath() {
return require.resolve("./transformer")
},
}
如果该文件还不存在,请创建该文件。
在根目录中创建transformer.js
文件,并指定适当的配置选项:
const obfuscatingTransformer = require("react-native-obfuscating-transformer");
module.exports = obfuscatingTransformer({
/* Insert here any required configuration */
});
特别要注意模糊处理过程的范围,默认情况下,它只针对src/
文件夹中的文件(默认情况下不包括node_modules)。
以上所述,混淆应用程序不会使其具有内在的安全性--尽管安全性和模糊性可能比前者更好,但在React本机应用程序中可以实现许多其他安全增强(如果不是需求的话)。这包括在安全存储中存储敏感信息(Android中的Keystore/iOS中的Keychain),在适当的情况下实现证书钉扎,以及其他。
其他有用的链接:
通过Skip Hovsmith的证书钉扎在React Native中增强TLS
问题内容: 由于fxml- files使用Controller类来处理事件,因此如何混淆JavaFX应用程序?当混淆的conntroller类具有不同的名称和路径时,fxml文件将找不到它们。 混淆后编辑fxml文件不是我想要的解决方案。 还有其他选择吗? 问题答案: 没有意义重塑轮子; 快速的google搜索产生了这个网站。 它使用Proguard混淆器。
我有一个用Kotlin(android studio)编写的android应用程序和用React Native编写的应用程序的UI。我的问题是这些能联系在一起吗?如果是,怎么做?还有,你们能发布一些我可以通过的链接吗。 附注:我对react Native一无所知。
因此,我正在创建一个React本机应用程序,我想从应用程序的本机部分调用JavaScript函数。 我知道我可以使用Native模块在Native和React Native之间建立一座桥梁,我还知道从Native模块我可以发出React Native可以接收的事件。 但是,本机模块内的任何函数调用只能从React本机本身内部发生,因为它需要一个React本机上下文,因此我只能在React本机本身调
我们计划在开发新的移动应用程序时采用混合方法。我们在开发过程中的主要目标是: 在进行webUI更改时最小化应用商店提交和批准 在手机上实现指纹认证、条码扫描器和推送通知 如果可能,尽量减少其他团队的参与(我们需要一些特定的iOS,所以我们不必等待他们的计划) 现在,在我们移动团队的帮助下,我们仍在两种方法之间做出决定,这是我们迄今为止得到的结果: > 我们的移动团队创建了一个简单的本机包装应用程序
问题内容: 混淆Java Web应用程序值得吗?为什么呢? 问题答案: 否。代码存储在服务器上,希望外部用户无法访问该服务器。如果您认为值得(最低限度)的IP保护,则可能希望混淆JavaScript。 最好的办法是确保服务器的安全性达到最高水平,并且您没有对应用程序目录的开放访问权限(无论如何都不应该发生)。
本文向大家介绍Android应用开发之代码混淆,包括了Android应用开发之代码混淆的使用技巧和注意事项,需要的朋友参考一下 混淆器(ProGuard) 混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。结果是一个比較小的.apk文件,该文件比較难进行逆向project。因此,当你的应用程序对安全敏感(要求高),比如当你授权应用程序的时候,混淆器是一种重