问题标签 [android-obfuscation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
123 浏览

android - Android Proguard - 混淆方法参数和局部变量

我在我的应用程序中使用 PROGUARD。当我反编译 APK 时,我仍然看到方法参数的原始名称以及在方法体内声明的局部变量。

我试图使用这个规则:

但是,当我反编译代码时,我仍然看到参数和局部变量。

0 投票
1 回答
207 浏览

android - proguard:无法禁用对一个特定类的混淆

我有以下用于调试目的:

我有一个 MyClass 类,我使用 Gson 将其转换为 JSON,然后再将其发送到我的服务器。虽然我希望 JSON 是{"name":"blah", "age": 40},但服务器将其接收为{"a":"blah", "b": 40}. 我在 proguard 规则文件中尝试了几件事,但无济于事。这是我最近尝试的一个例子:

-保持公共类 com.package.package.MyClass { *; }

我错过了什么?谢谢

0 投票
2 回答
456 浏览

android - 在 Android 中使用 R8 和 Proguard 时如何保护数据模型类免受逆向工程的影响?

现在,在对 android 应用程序 APK 文件进行逆向工程时,我可以看到纯文本中的数据模型类,因为我使用了@keep注释。如果没有注释,应用程序将崩溃,因为这些文件正在被 R8 删除。

如何通过确保在逆向工程中看不到它们来保护数据模型文件?

0 投票
1 回答
393 浏览

android - 添加“minifyEnabled true”和“proguard-android-optimize.txt”是否会混淆 sqlite 数据库并使其与以前的版本不兼容?

我正在为我的 android 应用程序提交更新,所有以前的版本都没有这两个设置。数据库保持不变,但如果名称被混淆,我担心用户的数据会丢失。换句话说,我担心混淆的名称会与真实名称发生冲突,并且数据库会重置。感谢您的阅读。

我正在为我的数据库使用 Room。

0 投票
0 回答
84 浏览

multithreading - 混淆应用程序后android锁定主线程

我创建了我的应用程序,并且该应用程序在调试模式下正常工作。在混淆了获取代码列表并在 recyclerview 中显示的应用程序的一部分在此片段中无法正常工作后,我将获得代码列表-代码是我的可打包模型类-但是主线程锁定并且没有任何作用我试图防止混淆这个类,但它仍然无法正常工作。我无法调试已发布的应用程序以查找问题,请帮助我查找问题或调试已发布的 apk

这是我的代码:

代码模型类:

代码片段(我得到列表并在recyclerview中显示):

保护规则:

0 投票
1 回答
790 浏览

ionic-framework - 如何混淆cordova插件java代码

我一直在研究 ionic 3 移动应用程序。我使用ionic-voricles-obfuscate插件(https://www.npmjs.com/package/ionic-voricles-obfuscate)混淆打字稿代码

在使用 Apktool 对 APK 进行逆向工程时,Cordova 插件中的 Android 库类不会被混淆。应用程序安全团队要求使用 Proguard 混淆 Java/Android 包,以防止应用程序运行时代码操作,因此我的应用程序被 Appsec 团队拒绝。

我参考了很多文章,都是关于 Proguard 工具的非常简单的介绍。我很困惑我是否正在使用正确的方法来混淆我的 Ionic 移动应用程序。我是移动应用程序开发的新手,没有代码混淆方面的经验。

0 投票
2 回答
1230 浏览

android - 启用 Proguard 时 Retrofit2 不起作用

我有一个应用程序,它使用改造从 API 中获取徽标。

当我不混淆和缩小我的代码时,一切正常。但是当我启用它时,API 调用停止工作。我没有收到任何崩溃或错误消息,只是没有从 API 中获得任何值。

毕业典礼

我在调试中使用它只是为了测试目的。如果我在发布中使用它,它具有相同的输出。

我检查了改造页面,他们建议使用以下文件

proguard-rules.pro

API 调用仍然不起作用。我在stackoverflow上尝试了很多帖子,但对我没有任何帮助。有人可以通过提出解决方案或替代方案来帮助我吗?

谢谢

0 投票
1 回答
432 浏览

android - Proguard/R8 不会重命名 XML 布局中使用的类

我需要混淆 Android 库的整个代码,除了一些将被开发人员使用的类/方法。

我成功了,除了在我的 XML 布局中调用的某些类没有被重命名,而且我很难在 R8/Proguard 中找到一个选项或强制它的技巧,即使我必须手动或使用脚本在我的 XML 布局中更新这些类(我知道 R8/Proguard 自己不会编辑它们)感谢生成的mapping.txt文件。

我发现的更接近的问题是Proguard (R8) 混淆了自定义视图名称,但它没有解决我面临的问题,R8/Proguard 仍然忽略这些类的重命名:/

如果有人有想法,欢迎您 :) 感谢您的时间和知识;)

[编辑]

我最终放弃并在我的自定义视图的 XML 布局中放置了占位符,并在运行时对它们进行了膨胀。

遗憾的是,Proguard/R8 无法使用 aapt 处理在 XML 布局中重命名的自定义类:/

对于信息,我也遇到了fragment在我的 XML 布局中使用项目的问题,其中name属性没有重命名,而相应的类是......

所以对于这些,我也必须放置占位符并在运行时给它们充气......

我让问题打开,以防有一天有人找到窍门;)

0 投票
0 回答
113 浏览

android - 你如何使用 proguard 来替换类名和变量?

我在 proguard 上度过了一段糟糕的时光,最终决定不使用它来删除代码。相反,我打算使用它来替换变量和类名,这样我的代码就不能通过简单的 JDAX 反编译得到。任何人都知道如何使用proguard(或R8)只是简单地“混淆”代码(即缩小变量/类名)而不删除代码?还有什么比proguard(R8)更好的混淆目的吗?

0 投票
1 回答
379 浏览

android - 通过启用 Android R8 混淆,@Keep 注释和保留规则不适用于嵌套在类或其他接口中的接口



我在我的 Android 库中使用 Android R8 混淆。在库的客户端项目的应用程序模块中包含 AAR 文件后,我收到在类或其他接口中声明的接口的编译时错误。

例如,其中一个公共接口是 MyPublicInterface:

该接口MyPublicInterface由应用程序模块使用。

编译应用程序模块时出现以下错误:

我尝试了以下所有规则:

我尝试通过在代码中显式添加 @Keep 注释以及为特定接口显式添加 keep 规则。但它没有用。

注意:库的整个代码都在 Kotlin 中。