我目前正在阅读关于混淆的研究论文。这是与我的问题相关的论文部分。
“当前的混淆方案提升了一些静态分析的小岛,例如改变源代码的布局,改变控制流程和修改数据,由于缺乏API隐藏,它们很容易暴露于逆向工程分析。因此,定量评估需要采用一种方案来确保将混淆应用于适当的API,并对逆向工程具有足够的抵抗力。“
“混淆API”可能意味着将标识符的名称(如类名,方法名,字段名等)更改为非描述性名称。这样你的代码的读者就不会知道你的代码在做什么了。
Proguard就是这样一个工具。 Here是我发现的一个帖子,涉及使用Proguard在一个简单的类中混淆私有方法。您可以看到privateStaticMethod
如何变成a
,以及参数名称如何变成paramString1
和paramString2
。
通过这样做,读者将不会知道a
通过观察做什么,因为a
几乎没有告诉他们该方法实际上做什么。 a
调用的方法也可能被混淆为b
或c
,这使得更难以了解您的代码正在做什么。
这里的逆向工程是指试图弄清楚混淆的代码最初是如何看的。显然,改变方法和参数的名称使得逆向工程变得比仅仅改变控制流和代码布局更难。