|
|
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
В исходнике java, полученном после декомпиляции появились инструкуции goto S; 0; JVM INSTR dup2 ; и т.д. Это результат не правильной декомпиляции или подобные инструкции для java существуют? Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 00:48:42 |
|
||
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
Инструкции есть, это в синтаксисе языка такого функционала нету. http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.goto ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 11:11:53 |
|
||
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
novexelf, это декомпиляция. Она ущербна и не понимает ЯП высокого уровня. goto этот машинное. В него переходит любой твой супер-пупер паттрен ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 12:13:28 |
|
||
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
novexelf, это декомпилятор попался какй-то убогий. Нормальный декомпилятор догадался бы, как представить программу с goto в виде условных и циклов. Сам байткод условных предложений и циклов не содержит, только условные и безусловные переходы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 13:29:40 |
|
||
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
Я использовал DJ Java Decompiler Первый раз он нормально декомпилировал, а в следующий раз, когда я декомпилировал очередную версию приложения несколько функций декомпилировалось вот так, я сравнил с предыдущей версий там цикл и несколько условий. Теперь вопрос, как перевести эти команды и переписать функцию чтобы она нормально компилировалась? есть куда посмотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 14:53:11 |
|
||
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
Не существует декомпиляторов, гарантирующих восстановление Java кода без ошибок. Это как повезёт. Но переписывание декомпилированного класса не имеет смысла. Видел, как жабабыдлокодеры пытались "улучшить" или "исправить" программу, но портили её этим приёмом. Смысл в декомпиляции - посмотреть, как работает Java класс, если к нему нет достаточной документации. В этом случае мелкие погрешности в восстановлении кода не мешают. Можно испытать другой декомпилятор, вдруг лучше справится. Я обычно использую jd-gui. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 15:04:12 |
|
||
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
novexelf, Условные: Код: java 1. 2. 3. 4. 5. 6. преобразуем в Код: java 1. 2. 3. 4. 5. Там, где goto назад - это цикл. Ставим универсальный цикл for(;;): Код: java 1. 2. 3. 4. 5. 6. 7. преобразуется в Код: java 1. 2. 3. 4. 5. На самом деле там похоже был цикл по массиву, но это уже красОты. Будет работать и так. Гораздо хуже, что есть вовсе неразобранные места: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Это надо смотреть байткод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 15:18:38 |
|
||
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
Partisan MНе существует декомпиляторов, гарантирующих восстановление Java кода без ошибок. Уточню: не существует в свободном обороте. Теоретически ничто не мешает такой декомпилятор сделать, только это будет дорого стоить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 15:21:08 |
|
||
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
C условиями и циклами все понятно, тут проблем нет, а вот как раз вопрос по неразобранным местам, как с ними быть? Мне как раз нужно не посмотреть как работает класс, а добавить свою функцию, всего одну, а после выполнить и получить результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 15:30:41 |
|
||
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
novexelfМне как раз нужно не посмотреть как работает класс, а добавить свою функцию, всего одну, а после выполнить и получить результат. Возьмите декомпилированный класс, все гнилые методы выкинте, добавьте свою функцию, скомпилируйте. Затем слейте старый и новый классфайлы с помощью какой-либо библиотеки для манипуляций с класс-файлами - javaAssist, ASM, ну их много разных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 15:42:13 |
|
||
|
Поясните по goto в Java и про другие не ясные инструкции
|
|||
|---|---|---|---|
|
#18+
rfq, вообще-то просто взять метод из одного класса и вставить в другой нельзя - надо убедится, что ссылки в пул констант указывают на те же константы, а если нет - поправить. Проще всего сливать классы так: найти дизассемблер, который генерит компилируемый код. Дизассемблировать оба класса, текстуально перенести новую функцию в старый класс, скомпилировать ассемблером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 16:04:10 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37753896&tid=2132042]: |
0ms |
get settings: |
7ms |
get forum list: |
28ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
48ms |
get topic data: |
21ms |
get forum data: |
5ms |
get page messages: |
103ms |
get tp. blocked users: |
3ms |
| others: | 349ms |
| total: | 578ms |

| 0 / 0 |
