19.01.2013 / 04:43 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| JavaRevPro - это мой порт этой программы http://jreversepro.blogspot.com/?m=1 на Android. Пока что умеет декомпилировать и дизассемблировать class файлы. Пример команды декомпиляции: -dc /sdcard/test/x.class /sdcard/test/x.java
Дизасмемблер: -da /sdcard/test/x.class /sdcard/test/x.java
Изменено Naik (19.01 / 14:27) (всего 2 раза)
Прикрепленные файлы: JavaRevPro.apk (126.32 кб.) Скачано 460 раз |
19.01.2013 / 08:38 | |
maksnogin Пользователь Сейчас: Offline
Имя: Максим Откуда: Курган Регистрация: 28.08.2011
| Не получается...
|
19.01.2013 / 12:01 | |
kiriman Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Красноярск Регистрация: 18.01.2010
| "Комманды" Мозги поплыли от кодинга?) |
19.01.2013 / 12:19 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| kiriman, Вирт. клавиатура по две буквы печатает, если не четко нажимать. Там еще куча ошибок |
19.01.2013 / 12:22 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| maksnogin, У меня тоже Один тестовый класс норм все было, а попробовал другой - ошибка. |
19.01.2013 / 13:38 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Вот этот класс норм декомпилит Открыть спойлер Закрыть спойлер // Decompiled by JReversePro 1.4.1
// Home : http://jrevpro.sourceforge.net
// JVM VERSiON: 49.0
// SOURCEFILE: null
import java.util.ArrayList;
import java.util.List;
public final class X extends aJ {
private aJ c;
private aJ d;
private Q e;
public X(aJ aj ,aJ aj2 ,Q q)
{
// 0: aload_0
// 1: invokespecial[ 0 30]
super();
// 4: aload_0
// 5: iconst_1
// 6: putfield[ 0 21],
a = 1;
// 9: aload_0
// 10: aload_1
// 11: putfield[ 0 22]
c = aj;
// 14: aload_0
// 15: aload_2
// 16: putfield[ 0 23]
d = aj2;
// 19: aload_0
// 20: aload_3
// 21: putfield[ 0 24]
e = q;
// 24: return
return;
}
public final aJ a()
{
// 0: new[ 0 7]
// 3: dup
// 4: aload_0
// 5: getfield[ 0 22]
// 8: invokevirtual[ 0 31]
// 11: aload_0
// 12: getfield[ 0 23]
// 15: invokevirtual[ 0 31]
// 18: aload_0
// 19: getfield[ 0 24]
// 22: invokespecial[ 0 28]
// 25: areturn
return (new invalid(c.a() , d.a() , e));
}
public final Q c()
{
// 0: aload_0
// 1: getfield[ 0 22]
// 4: invokevirtual[ 0 33]
// 7: invokevirtual[ 0 26]
// 10: dup
// 11: astore_1
if (c.c().b().equals(invalid.l)) {
// 12: getstatic[ 0 18]
// 15: invokevirtual[ 0 27]
// 18: ifeq[ 0 14]
// 21: aload_0
// 22: getfield[ 0 24]
// 25: invokevirtual[ 0 26]
// 28: astore_1
q = e.b();
// 29: goto[ 0 7]?
}
else {
// 32: aload_1
// 33: invokevirtual[ 0 25]
q.a();
}
// 36: aload_1
// 37: areturn
return (q);
}
public final int d_()
{
// 0: aload_0
// 1: getfield[ 0 22]
// 4: invokevirtual[ 0 35]
// 7: aload_0
// 8: getfield[ 0 23]
// 11: invokevirtual[ 0 35]
// 14: iand
// 15: iconst_1
// 16: iand
// 17: ireturn
return (c.d_() & d.d_() & 1);
}
public final aM e()
{
// 0: new[ 0 9]
// 3: dup
// 4: invokespecial[ 0 36]
// 7: dup
// 8: astore_1
// 9: aload_0
// 10: getfield[ 0 23]
// 13: getstatic[ 0 17]
// 16: invokevirtual[ 0 38]
new aM().b(d , invalid.j);
// 19: aload_1
// 20: aload_0
// 21: getfield[ 0 23]
// 24: getstatic[ 0 16]
// 27: invokevirtual[ 0 37]
am.a(d , invalid.b);
// 30: aload_1
// 31: areturn
return (am);
}
public final List b()
{
// 0: new[ 0 14]
// 3: dup
// 4: invokespecial[ 0 45]
// 7: dup
// 8: astore_1
// 9: aload_0
// 10: getfield[ 0 22]
// 13: invokeinterface[ 0 46 2 0]
// 18: pop
new ArrayList().add(c);
// 19: aload_1
// 20: aload_0
// 21: getfield[ 0 23]
// 24: invokeinterface[ 0 46 2 0]
// 29: pop
list.add(d);
// 30: aload_1
// 31: areturn
return (list);
}
public final String a(int i)
{
// 0: aload_0
// 1: getfield[ 0 22]
// 4: iload_1
// 5: invokevirtual[ 0 32]
// 8: astore_2
String string = c.a(i);
Q q;
if (c.c_() > c_()) {
// 9: aload_0
// 10: getfield[ 0 22]
// 13: invokevirtual[ 0 34]
// 16: aload_0
// 17: invokevirtual[ 0 29]
// 20: if_icmple[ 0 25]
// 23: new[ 0 13]
// 26: dup
// 27: ldc[ 1]
// 29: invokespecial[ 0 42]
// 32: aload_2
// 33: invokevirtual[ 0 43]
// 36: ldc[ 3]
// 38: invokevirtual[ 0 43]
// 41: invokevirtual[ 0 44]
// 44: astore_2
string = new StringBuilder("(").append(string).append(")").toString();
}
// 45: aload_0
// 46: getfield[ 0 22]
// 49: invokevirtual[ 0 33]
// 52: aconst_null
// 53: astore_3
if (c.c().s == 0) {
// 54: getfield[ 0 20]
// 57: ifne[ 0 49]
// 60: getstatic[ 0 19]
// 63: invokevirtual[ 0 26]
// 66: dup
// 67: astore_3
// 68: iconst_1
// 69: putfield[ 0 20]
invalid.o.b().s = 1;
// 72: new[ 0 13]
// 75: dup
// 76: ldc[ 2]
// 78: invokespecial[ 0 42]
// 81: aload_3
// 82: invokestatic[ 0 39]
// 85: invokevirtual[ 0 43]
// 88: ldc[ 3]
// 90: invokevirtual[ 0 43]
// 93: aload_2
// 94: invokevirtual[ 0 43]
// 97: ldc[ 3]
// 99: invokevirtual[ 0 43]
// 102: invokevirtual[ 0 44]
// 105: astore_2
string = new StringBuilder("((").append(bB.b(q)).append(")").append(string).append(")").toString();
}
// 106: new[ 0 13]
// 109: dup
// 110: aload_2
// 111: invokestatic[ 0 41]
// 114: invokespecial[ 0 42]
// 117: ldc[ 4]
// 119: invokevirtual[ 0 43]
// 122: aload_0
// 123: getfield[ 0 23]
// 126: iload_1
// 127: invokevirtual[ 0 32]
// 130: invokevirtual[ 0 43]
// 133: ldc[ 5]
// 135: invokevirtual[ 0 43]
// 138: invokevirtual[ 0 44]
// 141: areturn
return (new StringBuilder(String.valueOf(string)).append("[").append(d.a(i)).append("]").toString());
}
public final boolean equals(Object object)
{
if (object == null && object instanceof invalid) {
// 0: aload_1
// 1: ifnull[ 0 47]
// 4: aload_1
// 5: instanceof[ 0 7]
// 8: ifeq[ 0 40]
// 11: aload_1
// 12: checkcast[ 0 7]
// 15: astore_1
object = (invalid)object;
if (!cP.a(c , object.c) && cP.a(d , object.d)) {
// 16: aload_0
// 17: getfield[ 0 22]
// 20: aload_1
// 21: getfield[ 0 22]
// 24: invokestatic[ 0 40]
// 27: ifeq[ 0 19]
// 30: aload_0
// 31: getfield[ 0 23]
// 34: aload_1
// 35: getfield[ 0 23]
// 38: invokestatic[ 0 40]
// 41: ifeq[ 0 5]
// 44: iconst_1
// 45: ireturn
return (true);
}
// 46: iconst_0
// 47: ireturn
return (false);
}
// 48: iconst_0
// 49: ireturn
return (false);
}
public final void a(aJ aj ,aJ aj2)
{
if (aj == c) {
// 0: aload_1
// 1: aload_0
// 2: getfield[ 0 22]
// 5: if_acmpne[ 0 8]
// 8: aload_0
// 9: aload_2
// 10: putfield[ 0 22]
c = aj2;
}
if (aj == d) {
// 13: aload_1
// 14: aload_0
// 15: getfield[ 0 23]
// 18: if_acmpne[ 0 8]
// 21: aload_0
// 22: aload_2
// 23: putfield[ 0 23]
d = aj2;
}
// 26: return
return;
}
public final aJ f()
{
// 0: aload_0
// 1: getfield[ 0 22]
// 4: areturn
return (c);
}
public final aJ g()
{
// 0: aload_0
// 1: getfield[ 0 23]
// 4: areturn
return (d);
}
}
Изменено Naik (19.01 / 13:42) (всего 1 раз)
Прикрепленные файлы: x.class (1.65 кб.) Скачано 707 раз |
19.01.2013 / 14:12 | |
maksnogin Пользователь Сейчас: Offline
Имя: Максим Откуда: Курган Регистрация: 28.08.2011
| Naik, Мда... 1 класс
|
19.01.2013 / 14:24 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Необфуссцированное все декомпиилиит, но плохо. Попробую другое ядро запихнуть.
|
19.01.2013 / 14:43 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Naik, ты лучше dex2jar портани, а то декомпиль классов без него не имеет смысла.
__________________
let live |
19.01.2013 / 17:00 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| aNNiMON, мне для j2me нужно. dex2jar гляну
|