Обфускация ProGuard

Версия Minecraft
1.12.2
API
Forge
95
1
2
Посидел целый день настраивая програмку, и решил все таки обратится за помощью. При ремапе классов и методов через ProGuard, постоянно ловлю со всех абстрактных классов AbstractMethodError. Добавил несколько классов в исключение, но с каждым разом ловлю все новые и новые баги. Одним из них является ошибка все с тем же абстрактым классом RenderLivingBase, из за чего не рендерит мобов. Есть ли какое нибудь решение, что бы заткнуть сразу все ошибки данного типа?
 
341
14
113
Есть решение - использовать другой обфускатор.
Например, тот же Allotori со Stringer'ом.
Но на самом деле, имеет смысл делать разделение на клиент-сервер, если мод для коммерческого многопользовательского проекта: все равно те упертые лбы, кому что-то нужно украсть, угонят код и из-под обфы. Java более-менее читаем даже с ней.
А вот с сервера единственное, что можно утащить - перехваченные пакеты, но это практически ничто.
 
Последнее редактирование:

tox1cozZ

aka Agravaine
8,455
598
2,892
 
95
1
2
@tox1cozZ , @Deco20-19 на клиент - сервер уже поделил. Хочу просто легкий ремаппинг сверху кинуть, дабы читать было не так просто. По поводу Allatory, надо будет сесть и разобратся в нем. Для теста его пробовал, но ошибки ловил и решил на ПроГуард свичнуть
 
341
14
113
Есть годный клоунский мув: пройтись по джарнику java-deobfuscator'ом, применив единственный general- трансформер normalize names(или что-то созвучное).
Тогда все содержимое файла будет называться в виде package1, package222, method34.
Хотя если ты уже сделал нормальное разделение, никто моды не упрет.
И да, хотелось бы видеть конфиг прогарда.
 
95
1
2
Щас попробую убрать галочку в use mixed-case class names, т.к. до этого она стояла. Но вот пока мой конфиг с решениями моих проблем из интернета
Config:
-injars Smoke-client-1.12.2-1.0.0.jar
-outjars Smoke-client-1.12.2-1.0.0-out.jar

-libraryjars 'C:\Program Files\Java\jre1.8.0_281\lib\rt.jar'
-libraryjars Baubles-1.12-1.5.2.jar
-libraryjars 'forgeSrc-1.12.2-14.23.4.2759-PROJECT.jar'
-libraryjars lwjgl-2.9.4-nightly-20150209.jar
-libraryjars lwjgl_util-2.9.4-nightly-20150209.jar

-dontskipnonpubliclibraryclassmembers
-dontshrink
-dontoptimize
-applymapping smapp.txt
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,[I]Annotation[/I],Synthetic,EnclosingMethod
-dontpreverify
-dontwarn
-ignorewarnings



-keep class net.smoke.main.*** { *; }

-keep class net.minecraft.client.renderer.entity.layers.LayerArmorBase.** { *; }
-keep class net.minecraft.client.renderer.entity.RenderLivingBase.** { *; }
-keep class net.smoke.models.ModelCustomArmorOBJ.** { *; }
-keep class net.minecraft.creativetab.CreativeTabs.** { *; }
-keep class net.smoke.layers.*** { *; }

-keepclassmembers class net.minecraft.client.renderer.entity.layers.LayerArmorBase {
    <init>(...);
}

-keepclassmembers class net.minecraft.creativetab.CreativeTabs {
    <init>(...);
    <methods>;
}

-keepclassmembers class net.smoke.models.ModelCustomArmorOBJ {
    <init>(...);
    <methods>;
}
-keepclassmembers class net.minecraft.client.renderer.entity.RenderLivingBase {
    <init>(...);
    <methods>;
}

# Keep - Native method names. Keep all native class/method names.
-keepclasseswithmembers,includedescriptorclasses,allowshrinking class * {
    native <methods>;
}
 
341
14
113
@will0376, способ не самый лучший, но относительно простой в реализации.
Плюс у Allotori много настроек, если грамотно делать, все будет в порядке.
Как и с ПроГардом, конечно, но у ТС он не пашет.
 
обфать сервер очень глупо
Поддерживаю, обфцировать северный мод смысла 0.
Это мало того, что может вызывать конфликт между сервером и клиентом, а именно проблему с пакетами, но и долгий запуск сервера, а так же долгую обработку событий(не знаю как у других, но у меня это было на более старых версиях, ну или же я такой криворукий😂 )
Обфцирование клиента тоже такое себе, не редко замечал на старом своём проекте, что из-за обфцированного мода, игрокам не хватало оперативной памяти (только от 3 гб выделенной памяти могли зайти)
 

tox1cozZ

aka Agravaine
8,455
598
2,892
95
1
2
@tox1cozZ , если это мне, то я особо в настройке не шарю, поэтому наоборот выключил все галочки, которые посчитал лишними (оптимизация, сжатие и так далее). Опять же таки, сам обфускатор работает и нужно только некоторые классы добавить в исключение и вопрос заключается в том, можно ли проблему решить какой-то одной командой, а не добавлять каждый абстрактный класс в исключения.

P.S. Я не собираюсь обфусцировать серверную часть, а то тут многие по этому поводу высказываются. Повторюсь, мне нужно просто пройтись ремапером по client части, дабы его читаемость была затрудненной... на этом все.
 

jopi

Попрошайка
1,421
30
260
@will0376, способ не самый лучший, но относительно простой в реализации.
Плюс у Allotori много настроек, если грамотно делать, все будет в порядке.
Как и с ПроГардом, конечно, но у ТС он не пашет.
а еще Allatori убрать так-же легко как и чиркануть пальцем об асфальт, точно так-же и с большинством 'обфускаторов', так-же нужно понимать что такая обфускация влияет на производительность и не в лучшую сторону, а зачастую вовсе делает код инвалидом.
Если нужна защита - делайте только ремаппинг в буквы аля aa Aa aA AA и т.д. так как архивы считают такие файлы с одним названием но разными регистрами - разными, а шиндовс их считает одинаковыми, и это усложнит задачу горе-реверс инженеру
 
341
14
113
@jopi , если уже разделение есть, то обфа служит просто для запугивания.
Ну, или удовлетворителем паранои, чтобы НИ КУСКА ГУИШКИ НЕ УКРАЛИ!!1!1, что как раз делает Allatori, помимо того же ремапа.
Честно, не знаю.Конъюнктуры не чувствую, могу ошибаться.
P.S. Нормализовать имена классов почти любой деобфускатор может.
 
7,099
324
1,510
Единственный способ не дать юзерам украть визуальный контент(модели, гуи и т.д.) - это не показывать им его)
 
Сверху