Java.Help

  • Автор теми AkeL.php
  • Дата створення

F@N

*Play ololo*
Ответ: Java.Help

Блин, ну скажите в какой программе и каким способом вы работаете в такими файлами, прожка не стаится... Помогииитеееее...
 
A

AkeL.php

Guest
Ответ: Java.Help

.class файл - ӕто байт-код программы, написанной на java, который создается после ее компиляции. Именно ӕто и есть основное преимущество Java (кроссплатформенность). Редактировать его невозможно.
 

F@N

*Play ololo*
Ответ: Java.Help

Эх, ну ладненько, спасибище большое за ответ...
 

dreamer

Member
Ответ: Java.Help

.class файл - ӕто байт-код программы, написанной на java, который создается после ее компиляции. Именно ӕто и есть основное преимущество Java (кроссплатформенность). Редактировать его невозможно.
Очень даже возможно, ищи Java Decompiler, jad.exe. Хорошая вещь.
 

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Ответ: Java.Help

Очень даже возможно, ищи Java Decompiler, jad.exe. Хорошая вещь.
JAD очень мерзкая штука. Очень часто при раскомпиливании им получается такая обфускация кода, что просто ууууух.
 

GrAndSE

Тёмный
Модератор
Ответ: Java.Help

Ходят слухи страшные, что что-либо более-менее серьезное собраное с помощью jdk1.6 маловероятно jad`ом разобрать так, чтобы потом сразу собрать было можно, или же подправить а потом собрать.. Хотя даже н 1.4.2 с некоторыми ядрёными штуками возникали у меня проблемы.
 

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Ответ: Java.Help

Ходят слухи страшные, что что-либо более-менее серьезное собраное с помощью jdk1.6 маловероятно jad`ом разобрать так, чтобы потом сразу собрать было можно, или же подправить а потом собрать.. Хотя даже н 1.4.2 с некоторыми ядрёными штуками возникали у меня проблемы.
Я сервер по la2 джадом раскрутил. Но скомпилить увы не смог. Обфускация зло.
 

GrAndSE

Тёмный
Модератор
Ответ: Java.Help

Что еще за ядрёные штуки?:)
Толи на лаяуте каком-то много всего навалено было, толи что-то с деревьями, а скорее оба вместе :) Но кусок кода стал нечитабельным и не компилируемым. Догадаться что же там было написано ранее так и не смогли.. Легче оказалось переписать весь класс.
 

daoway

кот Шрёдингера
Ответ: Java.Help

Манипуляции с байт-кодом делать можно, причём всякие и разные :) Вот попробовал влить метод в байт код :
Код:
public class Calc {
	public int add(int x,int y)
	{
		return x+y;
	}
}
Компилим : javac Calc.java
Код:
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;

public class Magic {
	public static void main(String args[]) throws Exception
	{
		ClassPool pool = ClassPool.getDefault();
		CtClass cc = pool.get("Calc");
		CtMethod method = CtMethod.make("public int sub(int x, int y){return x-y;}", cc);
		cc.addMethod(method);
		cc.writeFile();
	}
}
Компиляем и запускаем :
javac -classpath .;javassist.jar Magic.java
java -classpath .;javassist.jar Magic
Дальше, тестим магию :
Код:
public class Main {
	public static void main(String[] args) {
		Calc calc = new Calc();
[COLOR="Red"]		int result = calc.sub(10,15);
[/COLOR]		System.out.println(result);
		result = calc.add(10,15);
		System.out.println(result);

	}
}
Легко заметить, что метода sub(int,int) в исходном классе небыло. Магия изменила байт-код, вот так :)
 
Зверху