Перейти к содержанию
Авторизация  
««†KENVOOD†»»

Учимся Декомпилировать И Собирать Обратно В Классы - Начинающему Крякеру

Рекомендуемые сообщения

Сегодня мы с вами научимся де компилировать и собирать(компилировать обратно) привычные для нас ядра различных сборок.

Много криков слышится о том что без исходных кодов работать с компилированным ядром ява сервера - не возможно. Это абсолютно не верная информация и абсолютно не правильная.

Сегодня, мы с вами ознакомимся с 1 из методов работы с подобным видом продуктов.

Что нам понадобится?

1. Естественно, любой свободный де компилятор Java среды.

2. Любой версии Java JDK платформы (Developer kit).

3. Наличие хотя бы 1 полу прямой руки.

Итак, для начала - выбираем нашу любимую жертву, над которой будем усердно работать.

Не знаю, для какой цели вам нужен кусок исходных кодов - но дело ваше. Для эксперимента, жертвой были выбран скомпилированный код команды l2jserver, чтоб обидно не было никому.

Первым нашим шагом будет де компиляция собственно нужного нам класса.

Много ума здесь совсем не нужно. Поэтому - задействуем ранее скачанный де компилятор(я буду вести пример на основе jd gui decompiller).

Открываем jar архив с нужным нам классом:

Де компилируем нужный нам класс в исходные коды (java):Теперь, настал момент истины и их нужно обратно собрать.

Делать мы это будем ровно в 1 клик. Для сбора мы создадим папочку: D:\compile\, в которую поместим де компилированный нами ранее класс(скрин №2) и сам .jar архив который мы де компилировали.

Теперь - осталось не много не мало - скомпилировать наш класс. Для этого, мы используем консоль нашей OS (у виндузятников - cmd, линупсоиды - думаю подсказывать не нужно где консоль).

Для начала, проверим - доступен ли нам компилятор (javac) в исконном виде. Введем в консоль:

 

javac

 

Если после введения команды нам высветило большой мануал - все в порядке. Если же результатом исполнения стало:

 

"javac" не является внутренней или внешней командой

 

то беда пришла за нами. Дело - копеечное, решается ровно в 4 клика.

Если возникло двигаем: Мой компьютер->свойства->дополнительно->переменные среды и ищем там переменную "Path". Выбираем - редактирование, и дописываем путь к бинарникам нашей Jdk (/путь до jdk/bin), к примеру это будет выглядеть так:

 

C:\program files\java\jdk6.10.1\bin

 

и добавляем (через ; к переменной). Сохраняем, и открываем консоль снова. Если при исполнении javac все в порядке - воуля, проблема устранена.

Теперь - непосредственно компилируем ранее де компилированный нами класс.

Заходим туда, где лежит наш класс:

 

D: && cd compile

 

Компилируем сам класс:

 

D:\compile>javac -classpath l2jserver.jar -Xlint:unchecked Имя_де компилированного_класса.java

 

как пример - компиляция GameServer.java :

 

D:\compile>javac -classpath l2jserver.jar -Xlint:unchecked GameServer.java

 

Что ж, на выходе (в той же папке) мы получили: наш_класс.class. Дело сделано, все довольны.

Осталось - мелочи. Открываем де комплируемое нами ядро (l2jserver.jar) простым архиватором (winzip, winrar, 7z) и доходим до уровня, где лежит старый класс (/com/sf/ и т д). Удаляем старый класс, жмем "ADD" и запихиваем сюда класс, который мы скомпилировали выше.

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

 

P.S. я использую DJ.Java.Decompiler.v3.11.11.95

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что бы невозникало вопросов в аське да и на форумах часто слышу что выдираються огромное куски кода так вот что бы этого непроисходило используйте ЛИЦЕНЗИОННУЮ версию програмы иначе на демке или кряке вы ничего не добьетесь!!! еще раз говорю работать без исходников легко пробовал лично на 3х разных сборках!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасиюо за мануал но мне выбивает ошибку, мож я чето не то сделал? опишу все свои шаги:

1 скачал - jd-gui-0.3.3.windows.zip

2 запустил

3 открыл файл l2rtserver.jar который находился в server/gameserver/lib/

4 в декомпиляторе нажал Save all Sours и сохранил с названием l2rtserver.src.zip в папке D:\Compile\

5 тудаже кинул файл l2rtserver.jar

6 разархивировал файл l2rtserver.src.zip получил 3 папки META-INF, l2rt, drin

7 скопировал из папки D:\Compiled\l2rt\gameserver\GameServer.java в папку D:\Compile\

8 ничего в файле не менял, решил попробывать сразу закомпилить

9 вписал в командной строке D: && cd compile

10 потом D:\compile>javac -classpath l2rtserver.jar -Xlint:unchecked GameServer.java

11 жму Enter вижу:

 

/* 315 */ toRemove2.add(sc);

^

.\l2rt\extensions\scripts\Scripts.java:318: warning: [unchecked] unchecked call

to add(E) as a member of the raw type l2rt.util.GArray

/* 322 */ toRemove2.add(sc);

^

.\l2rt\extensions\scripts\Scripts.java:345: warning: [unchecked] unchecked conve

rsion

found : l2rt.util.GArray

required: l2rt.util.GArray<java.io.File>

/* 349 */ parseClasses(f, scriptFiles);

^

.\l2rt\extensions\scripts\Scripts.java:346: warning: [unchecked] unchecked conve

rsion

found : l2rt.util.GArray

required: l2rt.util.GArray<java.io.File>

/* 350 */ if (Compiler.getInstance().compile(scriptFiles, System.out))

^

.\l2rt\gameserver\model\entity\Duel.java:36: warning: [unchecked] unchecked conv

ersion

found : l2rt.util.GArray

required: l2rt.util.GArray<java.lang.Long>

/* 29 */ GArray<Long> _team1 = new GArray(); GArray<Long> _team2 = new GArra

y();

^

.\l2rt\gameserver\model\entity\Duel.java:36: warning: [unchecked] unchecked conv

ersion

found : l2rt.util.GArray

required: l2rt.util.GArray<java.lang.Long>

/* 29 */ GArray<Long> _team1 = new GArray(); GArray<Long> _team2 = new GArra

y();

^

.\l2rt\gameserver\model\entity\Duel.java:707: warning: [unchecked] unchecked cal

l to add(E) as a member of the raw type l2rt.util.GArray

/* 1053 */ result.add(player);

^

.\l2rt\gameserver\model\entity\Duel.java:709: warning: [unchecked] unchecked con

version

found : l2rt.util.GArray

required: l2rt.util.GArray<l2rt.gameserver.model.L2Player>

/* 1054 */ return result;

^

.\l2rt\gameserver\model\entity\Duel.java:864: warning: [unchecked] unchecked con

version

found : l2rt.util.GArray

required: l2rt.util.GArray<l2rt.gameserver.model.L2Effect>

/* 126 */ this._debuffs = new GArray();

^

.\l2rt\gameserver\model\L2Object.java:455: warning: [unchecked] unchecked call t

o add(E) as a member of the raw type l2rt.util.GArray

/* 490 */ new_territories.add(terr);

^

.\l2rt\gameserver\model\L2Object.java:464: warning: [unchecked] unchecked call t

o add(E) as a member of the raw type l2rt.util.GArray

/* 499 */ old_territories.add(terr);

^

.\l2rt\gameserver\model\L2Object.java:469: warning: [unchecked] unchecked conver

sion

found : l2rt.util.GArray

required: l2rt.util.GArray<l2rt.gameserver.model.L2Territory>

/* 504 */ this._territories = current_territories;

^

Note: Some input files additionally use unchecked or unsafe operations.

100 errors

100 warnings

 

что я не так сделал???

ОС Windows XP SP-3 сборка revolt version=${l2rt.revision}

builddate=2011.08.22 00:56: User/Windows XP

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...