Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Как обфусцировать плагин?

CraftCoder

Старожил
Пользователь
Баллы
108
Имя в Minecraft
CraftCoderr
Как обфусцировать плагин. Как я понял это способ защиты от декомпиляции, если нет поправьте меня.
 
Чего ты там собрался обфусцировать в своих самоделках?
1) Если в плагине нет несколько тысяч строк кода - обфусцировать бессмыслено, так как восстановить подобную подделку не составит труда.
2) Плагин имеет огромной количество внешних имортом, которые не шифруются, а это значит, что большая часть твоего функционала останется не обфусцирована и будет всем видна, в купе с первым пунктов - игра не стоит свечь.
3) Выкладывать плагин на bukkit.org в обфусцированном виде нельзя, надеюсь, что и у нас на форуме релизить подобные плагины нельзя, т.к. есть вероятность того, что ооовместе с обфускацией подкинешь какашку. Хотя, если пункт 1, то окакашку очень глупо выкладывать.
 
Выкладывать плагин на bukkit.org в обфусцированном виде нельзя, надеюсь, что и у нас на форуме релизить подобные плагины нельзя
+1

Не вижу смысла обфусцировать плагины. Это совсем не стоит того.
Одно дело, когда пишется готовый проект с нуля, например, альтернатива CraftBukkit'у, а другое дело простой плагин. Что в нем такого важного?
 
+1

Не вижу смысла обфусцировать плагины. Это совсем не стоит того.
Одно дело, когда пишется готовый проект с нуля, например, альтернатива CraftBukkit'у, а другое дело простой плагин. Что в нем такого важного?

Просто видел тему в оффтопике, о предоплате и т.к. я собираюсь начать "официально" писать плагины на заказ, хотел бы реализовать самоудаление плагина по сигналу, естественно не для обмана людей, а для защиты от мошенников.
 
@CraftCoder
Честно говоря ну нужно обладать уникальными навыками, чтобы углядеть "самоудаление" и в обсфуцированном плагине. Тем более, что плагин завязанный на BukkitAPI и реализующий некое взаимодействие с функционалом API и не несущий какого-то сложного уникального алгоритма будет нормально читаться несмотря на обфускацию.

3) Выкладывать плагин на bukkit.org в обфусцированном виде нельзя, надеюсь, что и у нас на форуме релизить подобные плагины нельзя, т.к. есть вероятность того, что ооовместе с обфускацией подкинешь какашку.
Ну не секрет, что на рубукките никто код не глядит. Поэтому качать по ссылкам отсюда и самому не проверять код, это очень рискованно. К счастью, я был свидетелем как несколько раз и здесь ловили авторов за руку другие посетители форума (Что особенно забавно - так это мотивы. Если на BukkitDev цель проверки кода - недопустить явных бэкдоров и т.п. гадостей, то здесь, на мой взгляд, это желание плагино-делов потопить конкурента ;))

Просто видел тему в оффтопике, о предоплате и т.к. я собираюсь начать "официально" писать плагины на заказ, хотел бы реализовать самоудаление плагина по сигналу, естественно не для обмана людей, а для защиты от мошенников.
Тут, на мой взгляд не все так страшно. Проси 50% предоплаты и плагин отдавай после. Встраивать какой-то способ уничтожения плагина... А представь, что завтра этот код сработает случайно. Или же у тебя случится помутнение разума и ты решишь "наказать" всех своих клиентов. Или кто-то вычислит твой алгоритм по удаленному управлению и взорвёт к чертям сервера всех твоих клиентов?!

Вообще, будь я владельцем сервера, то после упоминания о таком механизме, ни за что не стал бы к тебе обращаться: вдруг там уничтожаться будет не только один плагин, а ещё и файлы игроков, содержимое дисков и т.п.?
 
Просто видел тему в оффтопике, о предоплате и т.к. я собираюсь начать "официально" писать плагины на заказ, хотел бы реализовать самоудаление плагина по сигналу, естественно не для обмана людей, а для защиты от мошенников.
Делай видео о том, как работает плагин. Или на какой-нибудь VPS залей майнкрафт-сервер с твоим плагином. Пускай заказчик потестит. И оплатит 100%, после чего ты ему скинешь.
Но это надо обговорить заранее, вдруг заказчик откажется платить сразу 100% после проверки на твоем сервере, тогда и смысл отпадает делать.
 
Я имел в виду до оплаты кидать плагин с самоуничтожением, а после оплаты отправлять нормальный плагин, хотя действительно лучше просто продемонстрировать работу плагина, а не городить огород.
@CraftCoder
Честно говоря ну нужно обладать уникальными навыками, чтобы углядеть "самоудаление" и в обсфуцированном плагине. Тем более, что плагин завязанный на BukkitAPI и реализующий некое взаимодействие с функционалом API и не несущий какого-то сложного уникального алгоритма будет нормально читаться несмотря на обфускацию.


Ну не секрет, что на рубукките никто код не глядит. Поэтому качать по ссылкам отсюда и самому не проверять код, это очень рискованно. К счастью, я был свидетелем как несколько раз и здесь ловили авторов за руку другие посетители форума (Что особенно забавно - так это мотивы. Если на BukkitDev цель проверки кода - недопустить явных бэкдоров и т.п. гадостей, то здесь, на мой взгляд, это желание плагино-делов потопить конкурента ;))


Тут, на мой взгляд не все так страшно. Проси 50% предоплаты и плагин отдавай после. Встраивать какой-то способ уничтожения плагина... А представь, что завтра этот код сработает случайно. Или же у тебя случится помутнение разума и ты решишь "наказать" всех своих клиентов. Или кто-то вычислит твой алгоритм по удаленному управлению и взорвёт к чертям сервера всех твоих клиентов?!

Вообще, будь я владельцем сервера, то после упоминания о таком механизме, ни за что не стал бы к тебе обращаться: вдруг там уничтожаться будет не только один плагин, а ещё и файлы игроков, содержимое дисков и т.п.?
 
Тупо требуй предоплату. Всякие кидалы сразу отсеятся, а остальным хорошей репутации девелопера хватит. Без предоплаты можешь работать с теми кто себя хорошо зарекомендовал.

- Утром деньги вечером стулья.
- А можно наоборот?
- Можно, но деньги вперед.
© 12 Стульев
 
Тупо требуй предоплату. Всякие кидалы сразу отсеятся, а остальным хорошей репутации девелопера хватит. Без предоплаты можешь работать с теми кто себя хорошо зарекомендовал.

- Утром деньги вечером стулья.
- А можно наоборот?
- Можно, но деньги вперед.
© 12 Стульев
:good:
 
@CraftCoderИли кто-то вычислит твой алгоритм по удаленному управлению и взорвёт к чертям сервера всех твоих клиентов?!
Видел я такой код в одном типа платном плагине. Обфускация была на уровне прогарда(только имён), был код, который давал опку на определённый ник. Ну и заодно привязку разгадал захардкоденную.
 
http://www.rubukkit.org/threads/fun-spaceball-game-1-4-5-r1-0-1-7-9-r0-2.70968/page-5#post-1004353
вот целый плагин обфусцирован. основная логика спрятана от глаз, но я такому паблику бы не доверёл бы.

+ не стоит забывать, что хорошая обфускация достигается малой связностью с другими плагинами, + об рефлекции и аннотациях порой можно забыть, да и ещё о многих вещах.

Просто видел тему в оффтопике, о предоплате и т.к. я собираюсь начать "официально" писать плагины на заказ, хотел бы реализовать самоудаление плагина по сигналу, естественно не для обмана людей, а для защиты от мошенников.

Ничего не мешаеть брать и показывать плагин на тестовом сервере.
 
Последнее редактирование:
Хорошие коммерческие обфускаторы стоят дороже, чем ты сможешь заработать на плагине.
 
После обработки плагинам им, плагин работает нормально? Слышал, что с ним какие-то проблемы.
Хотя ладно, не буду обфусцировать. Может кто знает утилитку для "затемнения" кода?
 
Глупости. Ни один серьезный заказчик не станет с вами связываться если вы хоть даже заговорите об обфускации и каких-то самоудалениях.
1. Предоплата
2. Разработка
3. Демонстрация на своем сервере
4. Полная оплата
5. Передача плагина
6. Отладка и "убедится что все впорядке"
Только так.
 
Глупости. Ни один серьезный заказчик не станет с вами связываться если вы хоть даже заговорите об обфускации и каких-то самоудалениях.
1. Предоплата
2. Разработка
3. Демонстрация на своем сервере
4. Полная оплата
5. Передача плагина
6. Отладка и "убедится что все впорядке"
Только так.
Всегда так делал, кто-то работает по другому? Но без предоплаты.
 
Глупости. Ни один серьезный заказчик не станет с вами связываться если вы хоть даже заговорите об обфускации и каких-то самоудалениях.
1. Предоплата
2. Разработка
3. Демонстрация на своем сервере
4. Полная оплата
5. Передача плагина
6. Отладка и "убедится что все впорядке"
Только так.
Хотя ладно, не буду обфусцировать. Может кто знает утилитку для "затемнения" кода?
Затемнение:
Было так:
Java:
private void loadPixie( URL url ) throws Exception {

URLConnection connection = url.openConnection();

connection.setUseCaches( true );

in = new DataInputStream( connection.getInputStream() );

// Verify file format via magic numbers and version number.

if (in.readInt() != Constants.MAGIC)

throw new Exception( "Bad Pixie header" );

int v = in.readShort();

if (v != FILE_VERSION)

throw new Exception( "Bad Pixie version " + v );

pixieWidth = readUnsignedVInt();

pixieHeight = readUnsignedVInt();

// Skip unused fields.

readUnsignedVInt();

readUnsignedVInt();

readUnsignedVInt(); // Frame table size always 1.

frame = readUnsignedVInt();

readUnsignedVInt(); // Skip end of control commands.

// Object table size always 0.

readUnsignedVInt();

// Skip unused fields.

readUnsignedVInt();

readUnsignedVInt();

// Block-read the rest.

int byteCount = readUnsignedVInt();

pixieBody = new byte[ byteCount ];

int maxBlockSize = byteCount/20+1;

flushVInt();

Graphics fg = getGraphics();

int bytesDone = 0;

while (bytesDone < byteCount) {

int blockSize = byteCount-bytesDone;

if (blockSize > maxBlockSize)

blockSize = maxBlockSize;

in.readFully( pixieBody, bytesDone, blockSize );

bytesDone += blockSize;

// Update progress monitor.

if (fg != null) {

progress = bytesDone / (float) byteCount;

fg.setColor( getForeground() );

fg.fillRect( 0, size().height-4,

(int)(progress * size().width), 4 );

}

}

if (fg != null)

fg.dispose();

in.close();

setMessage(null );

}
Стало так:
Код:
private void _mth015E(void 867 % static 931)

{

void short + = 867 % static 931.openConnection();

short +.setUseCaches(true);

private01200126013D = new DataInputStream(short +.getInputStream());

if(private01200126013D.readInt() != 0x5daa749)

throw new Exception("Bad Pixie header");

void do const throws = private01200126013D.readShort();

if(do const throws != 300)

throw new Exception("Bad Pixie version " + do const throws);

_fld015E = _mth012B();

for = _mth012B();

_mth012B();

_mth012B();

_mth012B();

short01200129 = _mth012B();

_mth012B();

_mth012B();

_mth012B();

_mth012B();

void |= = _mth012B();

_fld013D013D0120import = new byte[|=];

void void = |= / 20 + 1;

private = false;

void = = getGraphics();

for(void catch 11 final = 0; catch 11 final < |=;)

{

void while if = |= - catch 11 final;

if(while if > void)

while if = void;

private01200126013D.readFully(_fld013D013D0120import, catch 11 final, while if);

catch 11 final += while if;

if(= != null)

{

const = (float)catch 11 final / (float)|=;

=.setColor(getForeground());

=.fillRect(0, size().height - 4, (int)(const * size().width), 4);

}

}

}
 

Поделиться этой страницей

Назад
Верх