The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск CFR 0.146, декомпилятора для языка Java

28.07.2019 18:30

Доступен новый выпуск проекта CFR (Class File Reader), в рамках которого развивается декомпилятор байткода виртуальной машины JVM, позволяющий воссоздать содержимое скомпилированных классов из jar-файлов в форме кода на языке Java. Поддерживается декомпиляция современных возможностей Java, включая большую часть элементов Java 9, 10 и 12. CFR также может декомпилировать в Java содержимое файлов с классами и от других языков, использующих JVM, таких как Kotlin, Scala и Groovy. Код проекта написан на языке Java и распространяется под лицензией MIT.

  1. Главная ссылка к новости (https://github.com/leibnitz27/...)
  2. OpenNews: Релиз JPype 0.7, библиотеки для доступа к Java-классам из Python
  3. OpenNews: Oracle меняет лицензию на сборки Java SE. Red Hat взял на себя сопровождение OpenJDK 8 и 11
  4. OpenNews: Компания Oracle опубликовала Java SE 12
  5. OpenNews: Первый стабильный выпуск Corretto 8, LTS-дистрибутива Java 8 от Amazon
  6. OpenNews: Проекты по созданию компиляторов из Java в JavaScript и исполняемые файлы
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51181-java
Ключевые слова: java, compile, jvm, cfr
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (70) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, A.Stahl (ok), 18:45, 28/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На что угодно пойдут лишь бы open source не использовать!
     
     
  • 2.35, Аноним (35), 06:54, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    MIT - не опенсорс? Да ладно? Тебе где-то она код запрещает использовать?
     
     
  • 3.36, A.Stahl (ok), 07:02, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    При чём тут лицензия на CFR?
     

  • 1.2, Аноним (2), 19:53, 28/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А я думал, что java как IL код c# декомпилируется. Там вообще практически идентичный оригиналу код получается.  
     
     
  • 2.47, Аноним (47), 11:14, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Правильно думал. А если забыли убрать отладочную информацию - можно даже имена переменных восстановить.
     

  • 1.3, VINRARUS (ok), 19:59, 28/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    Смысл? Кроме Minecraft ни одного сложного софта на Java не знаю.
     
     
  • 2.4, proninyaroslav (ok), 20:05, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Intellij? Eclipse? NetBeans?
     
     
  • 3.5, Аноним (5), 20:53, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • +10 +/
    80 GB памяти должно хватить, почти не тормозит.
     
     
  • 4.13, Аноним (13), 22:02, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • –5 +/
    intellij idea летает на 768MiB RAM
     
     
  • 5.27, Anonim (??), 01:00, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вы из Эстонии?
    Можно узнать вашу ос на которой вы в idea пишите под jvm имея 768 mib ram. + размер swap файла
     
     
  • 6.58, А (??), 13:34, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Из виртуалки с религиозно-чистым в Венде.
     
  • 6.66, Аноним (13), 18:16, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Arch Linux
    swap 24GiB
     
  • 6.71, лютый жабист__ (?), 07:56, 30/07/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >Вы из Эстонии? Можно узнать вашу ос на которой вы в idea пишите под jvm имея 768 mib ram

    Про 768МБ это бред, конечно, но на 4ГБ работать вполне нормально, если рядом хромы/шромы не открывать. А это тазик 10-15 летней давности, который жалко выкидывать, пока сам не сломался.
    Если у прогера на работе стоит ПК с меньше чем 32ГБ ОЗУ, надо работу менять, там небось и на туалетной бумаге с мылом экономят.

     
  • 5.38, Минона (ok), 07:45, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Летает, но низенько-низенько
     
  • 5.42, anonymous (??), 08:01, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не знаю как там Intellij Idea, но вот JetBrains GoLand:

    ps axw -o rss,cmd | sort -n | grep java | grep GoLand | awk '{print $1}'
    1627980

    (это в килобайтах)

     
  • 4.46, proninyaroslav (ok), 11:12, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну предложите альтернативу полнофункциональному IDE для Java который не будет есть 80 Гб.
     
  • 3.6, Анончик999999 (?), 21:08, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Новый Eclipse мало того, что с кучей ошибок, так еще и адски тормозит! Или г*вно новые Java.
     
     
  • 4.59, А (??), 13:37, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ИДЕ, кстати, вообще склонны к нестабильности. С Эклипсом сие вообще так давно, что можно сказать: всегда.

    У других - получьше.

     
  • 2.7, Аноним (7), 21:41, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не знаешь, потому что Java-приложения, которые считают лично твои (подчеркиваю: лично твои) деньги, ты не скачиваешь бесплатно без смс себе на свой комп, а работают в том банке, на котором лично твои (подчеркиваю: лично твои) деньги лежат.
     
     
  • 3.8, Аноним (5), 21:46, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Складывать и вычитать с правильной точностью - сложная задача? Да и какая разница, что там используют, лишь бы работало норм, а работает многих через одно место и по случайности там и жаба ииспользуется. Совпадение, правда?
     
     
  • 4.12, имя (?), 21:52, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Складывать и вычитать с правильной точностью - сложная задача?

    Сложная — делать миллионы сложений и вычитаний одновременно, чтобы это ещё хотя бы выглядело безопасно. И не только их, так как ещё существует фискальная нагрузка, сложные проценты по вкладам и кредитам, конвертация валют и т. д.

     
     
  • 5.26, Anon999 (ok), 00:37, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    С этой задачей и дотнет, как минимум, не хуже справляется.
     
     
  • 6.40, Аноним (40), 07:47, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > дотнет

    Те же яйца, только в профиль.

     
  • 6.55, Аноним (47), 13:14, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А новость про Яву
     
  • 3.10, Аноним (10), 21:50, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > а работают в том банке

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

     
     
  • 4.51, пох. (?), 11:48, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    о, вот там как раз бывает очень большой смысл - когда уже не то что разработчика, а еще два поколения пришедших после него закатали в бетон в подвале банка под серверной (чтоб умилостивить электронных богов и обеспечить много-много девяток - кстати, помогает), куда делись исходники уже и выяснять бесполезно, а крайне надо что-то поправить по мелочи, и, желательно, не стать следующим приношением богу девяток.

    > В отличие от майнкрафта для таких приложений писать и использовать моды может быть слегка
    > затруднительно.

    иногда и не слегка. Но очень-очень надо, потому что заменять тот код полностью - это вообще катастрофа.

     
     
  • 5.63, Аноним (63), 16:39, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    И кто на такую работу вообще согласится? Зачем это надо вообще простому смертному?
    А так, анекдот неплохой получился.
     
  • 5.72, Аноним (72), 11:03, 30/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >когда уже не то что разработчика, а еще два поколения пришедших после него закатали в бетон в подвале банка под серверной

    тогда там не java, а cobol

     
  • 3.22, VINRARUS (ok), 23:44, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Не знаешь, потому что Java-приложения, которые считают лично твои (подчеркиваю: лично твои)
    > деньги, ты не скачиваешь бесплатно без смс себе на свой комп,
    > а работают в том банке, на котором лично твои (подчеркиваю: лично
    > твои) деньги лежат.

    Уверен? https://picua.org/images/2019/07/28/dc659bb44fad8f66fe4155211f5c3a58.jpg

     
     
  • 4.23, Аноним (7), 00:13, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "банк".equals("банкомат") // => false

    твоя установленная-adhoc винда в банкомате -- лишь фронтэнд для приложений на Java

     
  • 4.41, Минона (ok), 07:51, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Банкомат этого банка должен работать на Firefox OS, и связь с банком держать через Tor :)
     
  • 4.68, анононимс (?), 21:11, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    я такое относительно часто вижу при чем в разных странах. глючит, но все равно пихают. то банкомат, то почтомат, то реклама в магазинах. под линукс программы тоже глючат. видел такое как-то в медцентре.
     
  • 3.52, Аноним (52), 12:08, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >лично твои

    Настоящие владельцы банков опеннет не читают, и тем более - не комментируют. Те деньги, которые лежат в банке - они не "твои", а того банка.

     
     
  • 4.60, А (??), 13:40, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кстати, да. Попробовать их обналичить много в один заход и сразу поймёшь, кто кого за какое место крепко схватил. )))
     
     
  • 5.65, АнонимГоним (?), 18:16, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну не совсем. Тыж наверное их на счет кладешь и может даже хочешь все эти проценты и кешбеки получать, а это значит что банк их проворачивает и не возможность выдать большую сумму разом это нормально. Хочешь получить сразу все клади в ячейку, положил забрал когда захотел.
     
     
  • 6.73, Crazy Alex (ok), 13:29, 30/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А если не хочешь - то всё равно морока. Собственно, это одна из причин появления крипты - то, что в банке, не особо получается считать "своими деньгами"
     
     
  • 7.77, Аноним (52), 12:26, 02/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А в крипте что получается? Как Главный Разработчик (и его команда), лицо проекта, решил - так все и приняли. Потому что пользоваться продуктом, который не имеет обновлений беспонтово, а обновления надо разрабатывать, и кроме Главного Разработчика заниматься этим никто не хочет. Весь опенсорс по этому принципу построен. Где теперь Etherium Classic?
     
  • 2.14, Ordu (ok), 22:13, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Why?
    > For fun. That's the entire reason. I moved from a C++ job to a Java job, and writing a decompiler seemed like a good way to learn the java ecosystem... - there's a lot of published material out there on coin, etc, but not a vast amount on what's going on with the bytecode...
    > But... why java 6? This isn't 1996!
    > Java 6 is still amazingly widely installed. Because CFR has its own implementations of all of the class file features / jls understanding, it doesn't actually need java 8 to understand java 8 features! (Though occasionally I find myself missing syntactic sugar!)

    https://www.benf.org/other/cfr/faq.html

    Любопытно, что он уже 6+ лет этим занимается, и ему ещё не надоело пилить это just for fun, причём судя по github'у в одно лицо. Потрясающе. Мало лишь кто так может.

     
     
  • 3.18, YetAnotherOnanym (ok), 23:00, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вот видишь, какое это сложное дело - "to learn the java ecosystem". Это не какие-то там месячные курсы вебкодинга.
     
  • 2.48, Аноним (48), 11:34, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >Кроме Minecraft ни одного сложного софта на Java не знаю.

    Эталонный софт для сети I2P.

     
  • 2.50, Аноним (50), 11:43, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    а как же любимый в постсовке l2j?
    причем многие продают свои поделки без исходников и с привязкой к железу - вот там как раз сабж пригодится
     
  • 2.57, Аноним (47), 13:19, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Кроме Minecraft ни одного сложного софта на Java не знаю

    Это характеризует скорее тебя, чем Java

     
  • 2.69, maximnik0 (?), 22:38, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >Смысл? Кроме Minecraft ни одного сложного софта на Java не знаю.

    Зайди на сайт НASA и удивись - управление многими аппаратами написано на яве, в свое время  гонял на эмуляторе первого марсохода, 400 мгб подкачки ,786 мгб озу,амд 750,  но работало и под линь и под винду, журнал CHIP выкладывал.

     

  • 1.9, Аноним (5), 21:48, 28/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А есть на Java нормальный модуль, чтобы под web писать по типу Sinatra (у Ruby), без классов, наследования, dependency injection и прочей ерунды?
     
     
  • 2.11, Kartoshka (?), 21:51, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Grails
     
  • 2.15, Аноним (15), 22:13, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    JRuby
     
  • 2.16, Аноним (7), 22:17, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Если не хочешь "классов, наследования, dependency injection и прочей ерунды", то рекомендую оставаться и дальше на node.js. Java заточен под серьезные приложения, а не на твои однопоточные хелловорлды.
     
     
  • 3.20, Аноним (5), 23:18, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Если не хочешь "классов, наследования, dependency injection и прочей ерунды", то рекомендую оставаться и дальше на node.js

    Ну, во-первых в JavaScript есть классы, наследование и dependency injection. Накой только последний в статически типизируемом языке не понятно, наверное, чтобы ошибок в рантайме было больше.

    > Java заточен под серьезные приложения, а не на твои однопоточные хелловорлды.

    На многопоточные хеллоуворлды? На каждый запрос новый поток? Вы не из Atlassian случайно?

     
     
  • 4.24, Аноним (7), 00:18, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > в JavaScript есть классы, наследование и dependency injection

    Где тут в этом официальном[1] хелловорлде классы, наследования и dependency injection? --

    var http = require('http');
    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello World\n');
    }).listen(1337, '127.0.0.1');
    console.log('Server running at http://127.0.0.1:1337/');

    > На каждый запрос новый поток?

    Node.js bitchez dunno 'bout my thread poolz.

    [1] https://web.archive.org/web/20130201004248/http://nodejs.org/

     
     
  • 5.29, Аноним (5), 01:14, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Где тут в этом официальном[1] хелловорлде классы, наследования и dependency injection?

    А с чего ты взял, что я про официальную документацию к Node.js? И причем тут дока по Node.js, если мы говорим про JavaScript? Клоун.


    > Node.js bitchez dunno 'bout my thread poolz.

    Что сказать-то хотел?

     
     
  • 6.31, Аноним (7), 01:47, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Спасибо, что подписываешься Кстати, клован, а как ты собрался на __голом__ явас... большой текст свёрнут, показать
     
     
  • 7.37, Иваныч (??), 07:02, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Видимо об асинхронном I/O и возможности создавать асинхронные плагины на C++ где внутри для простоты можно в тот же Thread Pool и возвращать необходимые результаты в основном потоке Вы не догадываетесь.
     
     
  • 8.44, Аноним (7), 08:23, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это и есть кооперативная многозадачность Пока не отработает до конца один коллб... текст свёрнут, показать
     
     
  • 9.67, Иваныч (??), 20:54, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вопрос интересный, но все же Что Вы собираетесь делать сверхъестественного в об... текст свёрнут, показать
     
     
  • 10.74, Crazy Alex (ok), 18:58, 30/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Как только взять-положить в базу оказывается сложной бизнес-логикой да хоть б... текст свёрнут, показать
     
  • 4.34, Илья (??), 06:44, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Накой только последний в статически типизируемом языке не понятно, наверное, чтобы ошибок в рантайме было больше.

    Очень интересное мнение, можно подоробнее?

     
  • 2.21, YetAnotherOnanym (ok), 23:35, 28/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А есть у Роллс-Ройса нормальная модель, без хрома, кожи, перегородки между водителем и пассажиром, вот этой дуры на капоте и прочей ерунды?
     
     
  • 3.30, Аноним (5), 01:18, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ваи шашечки или ехать?
     
  • 3.43, Минона (ok), 08:16, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да, называется Аурус.
     
  • 3.49, Аноним (48), 11:37, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Таврия
     
  • 3.62, Hewlett Packard (?), 16:22, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Была. МиГ-15.
     
  • 2.54, btrfs (?), 12:14, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Sparkjava, Javalin, Jooby
     
  • 2.64, KonstantinB (ok), 17:33, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Писать на Java без классов - это интересное желание. Еще, пожалуйста, пчел без меда и водку без спирта.

    Что касается поменьше бойлерплейта и побольше дела - www.playframework.com

     

  • 1.17, kmeaw (?), 22:24, 28/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Неплохой метрикой для такого рода программ оказалось бы похожесть результата применения декомпилятора к скомпилированной версии самого себя против истинного исходного кода.
     
     
  • 2.39, A.Stahl (ok), 07:46, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    И? К чему ты это? Хочешь сказать что сейчас оценивают как-то иначе (ну кроме нюанаса "самого себя". Я не понимаю в чём ценность этого уточнения)?


     
  • 2.53, Аноним (52), 12:10, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >истинного исходного кода

    Истинный исходник лежит на гитхаб. Если там бекдоров нет - то и в программе нет.

     

  • 1.25, jj (?), 00:35, 29/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В чём отличие от JD-Core и FernFlower?
     
     
  • 2.28, Anonim (??), 01:04, 29/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    JD-Core - gpl. А сабж mit.
     
     
  • 3.75, VasiliyLovov (ok), 22:34, 30/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > JD-Core - gpl. А сабж mit.

    Да тут надо смотреть еще.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру