2012-04-06 83 views
12

Proguard的自定義命名是有如何在Proguard的字典文件的結構應簡單的描述?爲類,成員和參數混淆

我讀過有關-?obfuscationdictionary,但我找不到任何有關文件本身什麼。

此外,我想命名方案更改爲更復雜的東西,而不僅僅是ab等和paramXparamY ...我想一個隨機的一系列字符,如果可能的話。

是的,我知道這只是視覺上的差異,可以改造(重構?)的東西更容易閱讀。不過,只是要求...

感謝

回答

21

字典文件格式非常簡單:

每行
  • 空行忽略
  • 開始 #
  • 線忽略
    1. 一個字

    如果你想創建隨機字符串的字典,你可以W¯¯ RITE一個簡單的程序來生成它們,並將它們轉儲到一個文本文件,或者使用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 
    
    +0

    所以,我不認爲有一種方法來隨機它,是嗎? – davidcesarino 2012-04-07 20:19:48

    +2

    那麼,你可以編寫一個簡單的程序來生成一個充滿隨機生成的字符串的字典文件。 – ulmangt 2012-04-07 20:35:58

    +0

    事實上,http://www.random.org/strings/有一個web表單生成器,它完全適合你。它以一種可用於字典文件的格式吐出來。 – ulmangt 2012-04-07 20:37:54

    3

    任何文本文件將工作。 ProGuard在文件中使用所有有效的標識符。它忽略以'#'開頭的行。 ProGuard發行版中的目錄examples/dictionaries包含一些示例(包括ulmangt粘貼的示例)。