2012-04-06 14 views
12

Esiste una semplice descrizione di come dovrebbe essere strutturato il file di dizionario in Proguard?Denominazione personalizzata Proguard per classi, membri e parametri offuscamento

Ho letto circa -?obfuscationdictionary, ma non ho trovato nulla sui file stessi.

Inoltre, mi piacerebbe cambiare lo schema di denominazione per qualcosa di più complesso, e non solo a, b ecc e paramX, paramY ... mi piacerebbe una serie casuale di caratteri, se possibile.

E sì, so che è solo una differenza visiva che può essere rimodellata (refactored?) A qualcosa di più facile da leggere. Eppure, solo chiedendo ...

Grazie

risposta

21

Il formato del file dizionario è piuttosto semplice:

  1. una parola per riga
  2. righe vuote ignorate
  3. righe che iniziano con # ignorati

Se si desidera creare un dizionario di stringhe casuali, è possibile rite un semplice programma per generarli e scaricarli in un file di testo, oppure usare http://www.random.org/strings che ha una semplice interfaccia web semplice per creare stringhe casuali. Li sputa uno per riga, quindi puoi usare il suo output direttamente come file del dizionario.

Ecco alcuni esempio di output (è possibile generare stringhe di qualsiasi dimensione):

 
HISPj7KHQ7 
Wja3o2vx62 
eyd3OXAZgV 
DxDJysLV5r 
BsUTWEAMAI 
R7N8DF4OVS 
4q7UsoAgP4 
cWbN6pumKk 
SJowARcXwM 
OyIbF7L6XB 

Ecco un esempio che ho trovato:

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

Quindi, non penso che ci sia un modo per renderlo casuale, vero? – davidcesarino

+2

Bene, potresti scrivere un semplice programma per generare un file dizionario pieno di stringhe di caratteri generate casualmente. – ulmangt

+0

In effetti, http://www.random.org/strings/ ha un generatore di moduli Web che fa esattamente questo per te. E lo sputa in un formato che potresti usare per il tuo file di dizionario. – ulmangt

3

Qualsiasi file di testo funzionerà. ProGuard utilizza tutti gli identificatori validi nel file. Ignora le righe che iniziano con '#'. Gli esempi di directory/dizionari nella distribuzione di ProGuard contengono alcuni esempi (incluso l'esempio incollato da ulmangt).

Problemi correlati