android - 混淆 API 是什么意思?
问题描述
我目前正在阅读关于混淆的研究论文。这是与我的问题相关的论文部分。
“虽然当前的混淆方案提升了一些静态分析的小岛,例如更改源代码的布局、更改控制流和修改数据,但由于缺乏 API 隐藏,它们很容易暴露于逆向工程分析。因此,定量评估需要该方案来确保将混淆应用于适当的 API,并具有足够的逆向工程抵抗力。”
解决方案
“混淆 API”可能意味着将标识符的名称(如类名、方法名、字段名等)更改为非常不具描述性的名称。这样您的代码的读者就不会知道您的代码在做什么。
Proguard 就是这样一个工具。这是我发现的一篇文章,涉及使用 Proguard 来混淆一个简单类中的私有方法。您可以看到如何privateStaticMethod
变成a
,以及参数名称如何变成paramString1
和paramString2
。
a
通过这样做,读者不会仅仅通过查看就知道它做了什么,因为a
从字面上看,他们并没有告诉他们该方法实际做了什么。调用的方法也a
可能被混淆为b
or c
,这使得更难知道你的代码在做什么。
这里的逆向工程是指试图弄清楚混淆代码最初的样子。显然,更改方法和参数的名称比仅更改控制流和代码布局更难进行逆向工程。
推荐阅读
- c# - JsonConvert 类,它是与列表的继承
- java - 字符串索引超出范围,将字符串数组转换为字符数组
- javascript - ESLint 显示错误并建议使用 try...catch
- android - 如何使用 SavedStateHandle 作为参数正确创建应用程序 ViewModel
- html - 营业时间表
- mapbox - 从 Mapbox GL JS 矢量源获取/列出源层
- flutter - 从firebase获取数据以插入MultiSelectFormField(小部件)
- jmeter - 如何从服务器上传和运行 jmeter 脚本
- python - 我正在尝试使用 pytorch 库构建一个带有一个神经元的神经网络。它一直给我一个错误
- python - 卡在“列表索引必须是整数或切片,而不是元组”错误