Proguard为类,成员和参数混淆定制命名

dav*_*ino 14 java obfuscation refactoring dictionary proguard

是否应该如何构建Proguard中的字典文件?

我读过-?obfuscationdictionary,但我找不到任何关于文件本身的信息.

此外,我想命名方案更改为更复杂的东西,而不仅仅是a,b等等和paramX,paramY......我想一个随机的一系列字符,如果可能的话.

是的,我知道这只是一个视觉差异,可以改造(重构?)到更容易阅读的东西.不过,只是问......

谢谢

ulm*_*ngt 25

字典文件格式非常简单:

  1. 每行一个字
  2. 空行被忽略
  3. #忽略开头的行

如果要创建随机字符串的字典,可以编写一个简单的程序来生成它们并将它们转储到文本文件中,或者使用http://www.random.org/strings,它有一个很好的简单Web界面来创建随机字符串.它每行吐出一个,所以你可以直接使用它的输出作为你的字典文件.

这是一些示例输出(您可以生成任何大小的字符串):

HISPj7KHQ7
Wja3o2vx62
eyd3OXAZgV
DxDJysLV5r
BsUTWEAMAI
R7N8DF4OVS
4q7UsoAgP4
cWbN6pumKk
SJowARcXwM
OyIbF7L6XB

这是我发现的一个例子:

https://trac.openxdata.org/browser/trunk/j2me/openxdata-mobile/epihandy-lite/proguard/examples/dictionaries/keywords.txt?rev=1156

#
# 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 keywords.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

  • 好吧,你可以编写一个简单的程序来生成一个充满随机生成的字符串的字典文件. (2认同)