2012-04-06 11 views
12

¿Hay una descripción simple de cómo se debe estructurar el archivo de diccionario en Proguard?Proguard nombre personalizado para clases, miembros y ofuscación de parámetros

He leído sobre -?obfuscationdictionary, pero no he encontrado nada sobre los archivos.

Además, me gustaría cambiar el esquema de nombres a algo más complejo, y no sólo a, etc. b y paramX, paramY ... Me gustaría una serie aleatoria de caracteres, si es posible.

Y sí, sé que es solo una diferencia visual que puede ser remodelada (refactorizada?) A algo más fácil de leer. Aún así, sólo pidiendo ...

Gracias

Respuesta

21

El formato de archivo de diccionario es bastante simple:

  1. una palabra por línea
  2. Las líneas en blanco ignorados
  3. líneas que comienzan con # ignorados

Si desea crear un diccionario de cadenas aleatorias, podría w rite un programa simple para generarlos y volcarlos en un archivo de texto, o use http://www.random.org/strings que tiene una interfaz web simple y agradable para crear cadenas aleatorias. Los escupe uno por línea, por lo que podría usar su salida directamente como su archivo de diccionario.

Aquí hay un ejemplo de salida (se puede generar cadenas de cualquier tamaño):

 
HISPj7KHQ7 
Wja3o2vx62 
eyd3OXAZgV 
DxDJysLV5r 
BsUTWEAMAI 
R7N8DF4OVS 
4q7UsoAgP4 
cWbN6pumKk 
SJowARcXwM 
OyIbF7L6XB 

He aquí un ejemplo que encontré:

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

Entonces, no creo que haya una manera de aleatorizarlo, ¿verdad? – davidcesarino

+2

Bueno, podrías escribir un programa simple para generar un archivo de diccionario lleno de cadenas de caracteres generadas aleatoriamente. – ulmangt

+0

De hecho, http://www.random.org/strings/ tiene un generador de formularios web que hace exactamente eso por usted. Y lo escupe en un formato que podría usar para su archivo de diccionario. – ulmangt

3

Cualquier archivo de texto va a funcionar. ProGuard usa todos los identificadores válidos en el archivo. Ignora las líneas que comienzan con '#'. Los ejemplos de directorio/diccionarios en la distribución de ProGuard contienen algunos ejemplos (incluido el ejemplo pegado por ulmangt).

Cuestiones relacionadas