Android混淆优化之如何解决混淆后与其他包里面的class名

2019-07-19  本文已影响0人  alexlee1987

  笔者最近遇到了一个混淆问题:把我们项目的aar混淆后提供给第三方应用使用,出现混淆后的文件,如com.a.a.a.a,与他们项目引入的其他包名字冲突了。其实这个冲突不不是我们项目和他们项目引起的包里面定义了相同的文件,而且混淆后恰好相同。

  问题出现的原因是不同的aar包在不同的环境下打包,是混淆后的文件是存在一定概率出现相同的文件的。笔者尝试了,直接重新打包,还是会出现相同的文件,不能解决问题。该问题的解决方法是,通过修改混淆规则,控制混淆后的文件命名规则,从根本上避免与其他包可能出现同名的问题。具体步骤是需要在混淆规则文件中做如下设置:

  下面是一个字典的示例,仅供参考:

# 使用java中的关键字作字典:避免混淆后与其他包重名,而且混淆之后的代码更加不利于阅读
#
# This obfuscation dictionary contains reserved Java keywords. They can't
# be used in Java source files, but they can be used in compiled class files.
# Note that this hardly improves the obfuscation. Decent decompilers can
# automatically replace reserved keywords, and the effect can fairly simply be
# undone by obfuscating again with simpler names.
# Usage:
#     java -jar proguard.jar ..... -obfuscationdictionary filename.txt
#

do
if
for
int
new
try
byte
case
char
else
goto
long
this
void
break
catch
class
const
final
float
short
super
throw
while
double
import
native
public
return
static
switch
throws
boolean
default
extends
finally
package
private
abstract
continue
strictfp
volatile
interface
protected
transient
implements
instanceof
synchronized

  常规混淆方式普通英文单词字典混淆对逆向的干扰程序并不是很大,如果需要对逆向进行较大的干扰的话,可以设置比较变态的字典,可以参考这个链接

上一篇下一篇

猜你喜欢

热点阅读