|
|
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
После декомпиляции получается некорректный код, пробовал разными декомпиляторами. Почему так получается? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 23:36:11 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
Класс взят из рабочего приложения, т.е. корректный скорее всего. Можно ли его корректно декомпилировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 23:40:13 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
Код, очевидно, обфусцирован. Пользуйтесь де-обфускатором, чтоб вернуть непересекающиеся имена методам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2011, 00:09:42 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
Спасибо, помогло. Получается, это баг в декомпиляторе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2011, 00:48:24 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
drewhaПочему так получается? Потому что специально так сделали (обфусцировали) чтоб не декомпилировали.)) Очевидно же.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2011, 00:50:23 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
eros2Потому что специально так сделали (обфусцировали) чтоб не декомпилировали.)) Очевидно же.)) То что специально, это понятно. Просто по идее декомпилятор должен давать такой код, чтобы его можно было обратно скомпилировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2011, 01:03:11 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
Только не для явы. В частности, ни один из имеющихся декомпиляторов не способен адекватно бороться с generics, а некоторые -- и на енумах фейлят. Код, написанный с активным использованием generics сложно декомпилировать до рабочего состояния даже если он не обфусцирован. ЗЫ: Ну и commercial-grade обфускация тоже превратит его в кусок не пойми чего, что надо будет допиливать ручками просто для того, чтоб оно компилировалось обратно. То, с чем Вы имеете дело -- это примитивненько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2011, 01:26:06 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
ЗЗЫ: Сделать эквивалентные обратные преобразования не всегда возможно, потому что определенные проверки-ограничения налагаются на код только при компиляции. Т.е. вполне существует исходный код, байт-код которого будет корректно исполняться JVM, но который не пройдёт компиляцию стандартным компилятором. Например, JVM не налагает никаких ограничений на идентификаторы классов, полей и методов (а компилятор -- налагает). Поэтому, например, обфускатором можно легко переименовать всё в зарезервированные слова. И при декомпиляции потом будет -- Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2011, 01:32:20 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
The_ShadoWЗЗЫ: Сделать эквивалентные обратные преобразования не всегда возможно, потому что определенные проверки-ограничения налагаются на код только при компиляции. Т.е. вполне существует исходный код, байт-код которого будет корректно исполняться JVM, но который не пройдёт компиляцию стандартным компилятором. Например, JVM не налагает никаких ограничений на идентификаторы классов, полей и методов (а компилятор -- налагает). Поэтому, например, обфускатором можно легко переименовать всё в зарезервированные слова. И при декомпиляции потом будет -- Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2011, 03:23:59 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
The_ShadoW, Спасибо. Теперь все стало понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2011, 15:18:36 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
В обфусцированном классе несколько методов с одинаковым именем и набором параметров. public Class A{ public int a(){..} ... public Enumeration a(){..} ... } Можно ли вызвать конкретный метод? У меня получается только первый. Т.е. Object obj = [instance of A].a() возвращает int, а мне нужно Enumeration. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 13:15:42 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
drewha, Не проверял. Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 14:01:45 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
0FDdrewha, Не проверял. Код: java 1. 2. 3. 4. 5. 6. 7. 8. Спасибо. Это то, что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 14:05:36 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
В обфусцированном классе несколько полей с одинаковым именем без уровня доступа (packge-access или как-то так). Можно ли как-нибудь достать значение конкретного поля, добавив какой-нибудь метод (ч/з Instrumentation например)? Такой код не работает: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Добавленный метод - getFieldValueByClass, валится в строке Object obj = f.get(this); с can not access a member of class java.util.Vector with modifiers "protected" при вызове с параметром java.util.Vector.class. P.S. После обфускации все имена полей одинаковые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:28:41 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
setAcessible(true) пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:38:01 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
забыл никsetAcessible(true) пробовали? Да. В этом случае ошибка Can not set [Ljava.lang.Object; field java.util.Vector.elementData to GetFieldValueByClass ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:41:23 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
drewhaВ обфусцированном классе несколько полей с одинаковым именем без уровня доступа (packge-access или как-то так). Можно ли как-нибудь достать значение конкретного поля, добавив какой-нибудь метод (ч/з Instrumentation например)? Такой код не работает: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Добавленный метод - getFieldValueByClass, валится в строке Object obj = f.get(this); с can not access a member of class java.util.Vector with modifiers "protected" при вызове с параметром java.util.Vector.class. P.S. После обфускации все имена полей одинаковые. Да. В этом случае ошибка Can not set [Ljava.lang.Object; field java.util.Vector.elementData to GetFieldValueByClass Вы взяли список полей(c.getDeclaredFields()) у класса java.util.Vector, а значения этих полей у обьекта класса GetFieldValueByClass. Херня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:52:18 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Вы чего хотите? Считать поле из объекта? А где сам объект? Вместо него вы пытаетесь считать из текущего объекта ( f.get(this);) но как будто класс у него "c" (поданный параметром). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:53:29 |
|
||
|
Декомпиляция java
|
|||
|---|---|---|---|
|
#18+
[quot 0FD]drewhaВ обфусцированном классе несколько полей с одинаковым именем без уровня доступа (packge-access или Вы взяли список полей(c.getDeclaredFields()) у класса java.util.Vector, а значения этих полей у обьекта класса GetFieldValueByClass. Херня. Да уж, бывает.. Спасибо! Этот вариант работает: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:59:50 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37653710&tid=2132390]: |
0ms |
get settings: |
18ms |
get forum list: |
20ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
47ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
111ms |
get tp. blocked users: |
2ms |
| others: | 343ms |
| total: | 575ms |

| 0 / 0 |
