LINUX.ORG.RU

Отладить кишки плагина эклипса

 , , ,


0

1

Всем здрасьте.

Понадобилось реверс-инженернуть некий жава плагин эклипса. Я уже декомпилировал большинство его файликов. Но целой картины как там все внутри работает нету.

Есть ли вариант как то по шагам отдебажить все эти кишки в процессе работы этого эклипса с этим плагином? Естественно, сорцов плагина нет.

★★

Последнее исправление: kuzulis (всего исправлений: 1)

Думается мне, что можно взять IDEA/NetBeans, запускать этот Eclipse с включенной удаленной отладкой (Remote Debug Server), коннектиться IDEA/NetBeans к Eclipse и отлаживать

bvn13 ★★★★★
()

Idea умеет отлаживать декомпилируя на ходу. Я бы так попробовал: создать новый проект, кинуть туда нужную жарку, добавить её в проект как add library, проверить, что всё декомпилируется (развернуть жарку как дерево и открыть любой класс). Потом запустить эклипс с нужными флагами для удалённой отладки, подцепиться из идеи к нему, поставить брякпоинт где нужно и дальше всё предположительно заработает!

Legioner ★★★★★
()

Взять любой декомпилятор и декомпилировать, благо инструментов предостаточно. К JD-Core совершенно точно был модуль под Eclipse, ну и ещё можно использовать JadClipse в кач-ве альтернативы, хотя jad уже, конечно, устарел.

Вот ещё отличный инструмент (его написал автор JProfiler): https://github.com/ingokegel/jclasslib.

После декомпиляции – пересобрать.

После этого – Eclipse + PDE и отлаживаешь на выбранной версии Eclipse Platform.

Bass ★★★★★
()
Последнее исправление: Bass (всего исправлений: 1)
Ответ на: комментарий от Legioner

Idea умеет отлаживать декомпилируя на ходу

Ну а в реале кто-нить пробовал? Или только в теории?

Я бы так попробовал: создать новый проект, кинуть туда нужную жарку

А если я не знаю какую жарку кидать? Что если этих жарок тридцать штук (а мож и поболее)?

Потом запустить эклипс с нужными флагами

т.е. в этом случае сам эклипс не покажет своего GUI пока не подконнектиться к нему?

т.е. что если я не успею поставить бряку? (или я туплю?)

kuzulis ★★
() автор топика
Ответ на: комментарий от Bass

Взять любой декомпилятор и декомпилировать
После декомпиляции – пересобрать.

слишком много телодвижений... суть в том, что я не знаю что конкретно надо декомпилить...

После этого – Eclipse + PDE и отлаживаешь на выбранной версии Eclipse Platform.

т.е.? из самого еклипса отлаживать его же плагины (при помощи некоей хрени PDE)?

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

Мне бы что попроще и побыстрее...

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

Idea умеет отлаживать декомпилируя на ходу

Ну а в реале кто-нить пробовал? Или только в теории?

Пфф… каждый день делаю. ну вот серьезно - ставишь бряку на методе, который уходит внутрь скомпиленного jar-ника, нажимаешь F7 и ты уже внутри декомпилированного кода.

bvn13 ★★★★★
()
Ответ на: комментарий от kuzulis

т.е. в этом случае сам эклипс не покажет своего GUI пока не подконнектиться к нему?

у remote debug есть параметр «ждать подключений». если скажешь - ждать, - то будет ждать, пока не подцепишься отладкой

bvn13 ★★★★★
()
Последнее исправление: bvn13 (всего исправлений: 1)
Ответ на: комментарий от bvn13

А можно юзать сам еклипс для отладки другого запущенного еклипса? Имею ввиду, чтобы не устанавливать еще и IDEA?

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

Блин, добавил в еклипс в проект-пустышку *.jar файлы которые надо продебажить, но еклипс говорит, что нет сорцов. Похоже надо ставить IDEA.

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

А если я не знаю какую жарку кидать? Что если этих жарок тридцать штук (а мож и поболее)?

Да хоть тридцать тысяч. Кинь да добавь. Несколько кликов. Может быть и добавлять не надо, может идея сама сообразит, где они лежат. Надо пробовать.

т.е. в этом случае сам эклипс не покажет своего GUI пока не подконнектиться к нему?

Покажет.

т.е. что если я не успею поставить бряку? (или я туплю?)

Для такого есть специальный аргумент suspend, чтобы жава сразу остановилась, пока дебаггер не подцепился. Вот пример параметра: -Xrunjdwp:transport=dt_socket,address=8797,server=y,suspend=y

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Ага, спасибо.

Но IDEA не коннектится, пишет:

«C:\Program Files\Java\jdk-12.0.1\bin\java.exe» -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:49521,suspend=y,server=n -javaagent:C:\Users\denis\.IdeaIC2019.1\system\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath «C:\Users\denis\IdeaProjects\debug-plg\out\production\debug-plg;Z:\BareMetal\com.iar.cdt.arm.debugger.cmsisdap_1.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.debugger.ijet_2.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.debugger.jlink_2.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.debugger.mspfet_1.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.debugger.sim_0.9.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.debugger.stlink_1.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.debugger.xds_1.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.debugger_2.2.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.language_1.1.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.sdk.branding_1.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.toolchain.ui_1.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.toolchain_8.4.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.v7.toolchain.ui_1.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.arm.v7.toolchain_6.16.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.errorParser_5.40.2.201904111419.jar;Z:\BareMetal\com.iar.cdt.generic.toolchain.language.ui_1.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.generic.toolchain.language_1.2.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.generic.toolchain.ui_1.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.generic.toolchain_5.6.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.generic.wizardPages_2.0.0.201904111419.jar;Z:\BareMetal\com.iar.cdt.project.utils_1.19.0.201904111419.jar;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1.2\lib\idea_rt.jar» com.company.Main Connected to the target VM, address: '127.0.0.1:49521', transport: 'socket' Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended Disconnected from the target VM, address: '127.0.0.1:49521', transport: 'socket'

Process finished with exit code 0

И почему порт там 49521? Я же в настройках 'Remote' этой IDEA написал порт 1044 (такой-же как и при запуске еклипса).

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

слишком много телодвижений... суть в том, что я не знаю что конкретно надо декомпилить...

В каком смысле? Ты не можешь разобрать и пересобрать несколько jar'ов?

т.е.? из самого еклипса отлаживать его же плагины (при помощи некоей хрени PDE)?

Товарищ, если ты собираешься отлаживать модуль для Eclipse, но даже не осилил выяснить, что такое PDE... Я даже не знаю, как комментировать.

Bass ★★★★★
()
Ответ на: комментарий от Bass

Ты не можешь разобрать и пересобрать несколько jar'ов?

Разъясни плз. а зачем их разбирать, а потом пересобирать вновь? В чем фишка?

Товарищ, если ты собираешься отлаживать модуль для Eclipse, но даже не осилил выяснить, что такое PDE... Я даже не знаю, как комментировать.

Ну, я как бы не экшперт в эклипсе и всех тонкостях... А желание декомпилировать возникло «for fun», так сказать, внести вклад в опен сорц сообщество...

Поэтому вот, и туплю, жду что кто-то разжует, т.к. у меня нет особо времени вникать как там что в эклипсе можно реверснуть.. Мне нужно только понять, как работает код (а там реально дохрена всего). :) А иного источника, окромя плагинов эклипса у мну нету (да и думаю, что нигде нету).

kuzulis ★★
() автор топика
Последнее исправление: kuzulis (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.