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