首页 > 解决方案 > 混淆 API 是什么意思?

问题描述

我目前正在阅读关于混淆的研究论文。这是与我的问题相关的论文部分。

“虽然当前的混淆方案提升了一些静态分析的小岛,例如更改源代码的布局、更改控制流和修改数据,但由于缺乏 API 隐藏,它们很容易暴露于逆向工程分析。因此,定量评估需要该方案来确保将混淆应用于适当的 API,并具有足够的逆向工程抵抗力。”

标签: androidapiobfuscation

解决方案


“混淆 API”可能意味着将标识符的名称(如类名、方法名、字段名等)更改为非常不具描述性的名称。这样您的代码的读者就不会知道您的代码在做什么。

Proguard 就是这样一个工具。是我发现的一篇文章,涉及使用 Proguard 来混淆一个简单类中的私有方法。您可以看到如何privateStaticMethod变成a,以及参数名称如何变成paramString1paramString2

a通过这样做,读者不会仅仅通过查看就知道它做了什么,因为a从字面上看,他们并没有告诉他们该方法实际做了什么。调用的方法也a可能被混淆为bor c,这使得更难知道你的代码在做什么。

这里的逆向工程是指试图弄清楚混淆代码最初的样子。显然,更改方法和参数的名称比仅更改控制流和代码布局更难进行逆向工程。


推荐阅读