Подтвердить что ты не робот

Пользовательское присвоение Proguard для классов, членов и параметров обфускации

Есть ли простое описание того, как должен быть структурирован файл словаря в Proguard?

Я читал о -?obfuscationdictionary, но я не мог найти ничего о самих файлах.

Кроме того, я хотел бы изменить схему именования на нечто более сложное, а не только a, b и т.д. и paramX, paramY... Я бы хотел, чтобы случайная серия символов, если это возможно.

И да, я знаю, что это просто визуальная разница, которую можно переделать (реорганизовать?) на что-то более легкое для чтения. Тем не менее, просто спрашиваю...

Спасибо

4b9b3361

Ответ 1

Формат словарного файла довольно прост:

  • Одно слово в строке
  • Пустые строки игнорируются
  • Линии, начинающиеся с # игнорируются

Если вы хотите создать словарь случайных строк, вы можете написать простую программу для их создания и выгрузить их в текстовый файл или использовать http://www.random.org/strings, который имеет приятный простой веб-интерфейс для создания случайных строк. Он выплескивает их по одной линии, поэтому вы можете использовать свой вывод непосредственно в качестве файла словаря.

Вот пример вывода (вы можете генерировать строки любого размера):

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

Любой текстовый файл будет работать. ProGuard использует все допустимые идентификаторы в файле. Он игнорирует строки, начинающиеся с "#". Примеры каталогов/словари в дистрибутиве ProGuard содержат несколько примеров (включая пример, вставленный ulmangt).