Пересборка мобильного мидлета
От: DiFor Россия  
Дата: 28.02.11 22:11
Оценка:
Есть некая проблема. Довольно давно и плотно занимаюсь веб-программированием. но вот программированием под мобильные платформы пока увы. Понадобилось для себя переписать заготовку программы для мониторинга состояния сервера. Есть готовый мидлет в *.jar формате. Необходимо из него вытащить как ресурсы так и сорс. Чуть изменить и то и другое и обратно всё собрать. Каким образом можно сие сделать подскажите пожалуйста. Пока не знаю в какую сторону копать даже.
Re: Пересборка мобильного мидлета
От: Jakop Россия https://wmspanel.com
Дата: 28.02.11 23:21
Оценка:
Здравствуйте, DiFor, Вы писали:

DF>Есть некая проблема. Довольно давно и плотно занимаюсь веб-программированием. но вот программированием под мобильные платформы пока увы. Понадобилось для себя переписать заготовку программы для мониторинга состояния сервера. Есть готовый мидлет в *.jar формате. Необходимо из него вытащить как ресурсы так и сорс. Чуть изменить и то и другое и обратно всё собрать. Каким образом можно сие сделать подскажите пожалуйста. Пока не знаю в какую сторону копать даже.


Копать в сторону декомпайлера. Например JAD. Поройся на cracklab.ru в разделе скачать. Вики почитай.
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming

https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
Re[2]: Пересборка мобильного мидлета
От: 6lackbird Россия  
Дата: 01.03.11 05:03
Оценка: 1 (1)
Здравствуйте, Jakop, Вы писали:

J>Копать в сторону декомпайлера. Например JAD. Поройся на cracklab.ru в разделе скачать. Вики почитай.


JD-GUI получше будет
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
"Мы будем уничтожать свое ядерное оружие вместе с Америкой" (c) Б. Ельцин
Re: Пересборка мобильного мидлета
От: Donz Россия http://donz-ru.livejournal.com
Дата: 01.03.11 07:20
Оценка:
Здравствуйте, DiFor, Вы писали:

DF>Есть некая проблема. Довольно давно и плотно занимаюсь веб-программированием. но вот программированием под мобильные платформы пока увы. Понадобилось для себя переписать заготовку программы для мониторинга состояния сервера. Есть готовый мидлет в *.jar формате. Необходимо из него вытащить как ресурсы так и сорс. Чуть изменить и то и другое и обратно всё собрать. Каким образом можно сие сделать подскажите пожалуйста. Пока не знаю в какую сторону копать даже.


Ресурсы должны лежать в виде файлов в самом джаре.
С декомпиляцией и последующей сборкой несколько сложнее. Не знаю, как конкретно твой мидлет, но общая специфика мобильной разработки — впихать невпихуемое. Ради этого могут отказаться от нормального ООП и использовать всего два — три класса на весь мидлет. Частое использование switch-case, которое плохо обрабатывается декомпиляторами. Отсутствие дебаг-информации. И на 99% мидлет обработан обфускатором для уменьшения размера классов. Учитывая все это, крайне рекомендую в первую очередь попробовать отыскать исходники. Если это невозможно, то лучше подумать, как добавить нужную функциональность не прибегая к декомпиляции и пересборке проекта, а решить это наследованием от какого-либо уже существующего в мидлете класса и переопределением нужного метода.
Re[2]: Пересборка мобильного мидлета
От: Jakop Россия https://wmspanel.com
Дата: 01.03.11 07:47
Оценка:
Здравствуйте, Donz, Вы писали:

D>Здравствуйте, DiFor, Вы писали:


DF>>Есть некая проблема. Довольно давно и плотно занимаюсь веб-программированием. но вот программированием под мобильные платформы пока увы. Понадобилось для себя переписать заготовку программы для мониторинга состояния сервера. Есть готовый мидлет в *.jar формате. Необходимо из него вытащить как ресурсы так и сорс. Чуть изменить и то и другое и обратно всё собрать. Каким образом можно сие сделать подскажите пожалуйста. Пока не знаю в какую сторону копать даже.


<skipped>
Если это невозможно, то лучше подумать, как добавить нужную функциональность не прибегая к декомпиляции и пересборке проекта, а решить это наследованием от какого-либо уже существующего в мидлете класса и переопределением нужного метода.

чтобы понять что наследовать и как придется сделать небольшой реверс. Возможно и правда будет геморно восстановить компилябельные исходники, что в любом случае чтобы добавить новую функциональность придется декомпилить старую если нет исходников. А уж потом и наследоваться как вариант.
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming

https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
Re[3]: Пересборка мобильного мидлета
От: Donz Россия http://donz-ru.livejournal.com
Дата: 01.03.11 08:24
Оценка:
Здравствуйте, Jakop, Вы писали:

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


Главное — не придется заново собирать декомпилированные исходники.
Re[2]: Пересборка мобильного мидлета
От: DiFor Россия  
Дата: 01.03.11 09:38
Оценка:
Здравствуйте, Donz, Вы писали:

D>Ресурсы должны лежать в виде файлов в самом джаре.

D>С декомпиляцией и последующей сборкой несколько сложнее. Не знаю, как конкретно твой мидлет, но общая специфика мобильной разработки — впихать невпихуемое. Ради этого могут отказаться от нормального ООП и использовать всего два — три класса на весь мидлет. Частое использование switch-case, которое плохо обрабатывается декомпиляторами. Отсутствие дебаг-информации. И на 99% мидлет обработан обфускатором для уменьшения размера классов. Учитывая все это, крайне рекомендую в первую очередь попробовать отыскать исходники. Если это невозможно, то лучше подумать, как добавить нужную функциональность не прибегая к декомпиляции и пересборке проекта, а решить это наследованием от какого-либо уже существующего в мидлете класса и переопределением нужного метода.

Спасибо за ответы. Декомпилил программу с помощью JD-GUI. Большая часть кода вполне читаема, есть конечно разного рода узкие места аля "if (??? == ololo)". Тут конечно только логику восстанавливать. И немного непонятна сия конструкция которая в разных видах используется во многих местах: "this.a.getDisplay().setCurrent(LoginScreen.access$000(this.a));" И именно обращение к методу через доллар =\ Сие чудо писалось в нетбинсе, что выдала структура папок внутри приложения. Собирать обратно сие я так понимаю лучше именно через него-же, верно?
Re[3]: Пересборка мобильного мидлета
От: Donz Россия http://donz-ru.livejournal.com
Дата: 01.03.11 11:54
Оценка:
Здравствуйте, DiFor, Вы писали:

DF>Спасибо за ответы. Декомпилил программу с помощью JD-GUI. Большая часть кода вполне читаема, есть конечно разного рода узкие места аля "if (??? == ololo)". Тут конечно только логику восстанавливать. И немного непонятна сия конструкция которая в разных видах используется во многих местах: "this.a.getDisplay().setCurrent(LoginScreen.access$000(this.a));" И именно обращение к методу через доллар =\


В долларе ничего плохого нет, это разрешенный символ для именования в яве. Так как люди сознательно редко используют его для названия классов или методов, то можно считать, что присутствие доллара говорит о том, что класс или метод синтетические, то есть были созданы самим компилятором. Например, подобное происходит для именования внутренних или анонимных классов. Для доступа к полю внешнего класса из анонимного генерируется синтетический метод.

DF>Сие чудо писалось в нетбинсе, что выдала структура папок внутри приложения. Собирать обратно сие я так понимаю лучше именно через него-же, верно?


Нет. Я же писал, что вариант полной компиляции декомпилированных исходников наихудший. Попробуй проанализировать логику и внести изменения в нее через наследование и переопределение нужных методов.
Даже если наследование не решит проблемы, то я сначала бы посмотрел, можно ли решить проблему, напрямую изменив байт-код классов (библиотека BCEL), внедрив нужные мне вызовы своего класса в необходимые места.
Не знаю как твой проект, но те, что я декомпилировал, выглядели почти безнадежными в плане обратной компиляции.
Re[4]: Пересборка мобильного мидлета
От: DiFor Россия  
Дата: 01.03.11 13:22
Оценка:
Здравствуйте, Donz, Вы писали:

D>В долларе ничего плохого нет, это разрешенный символ для именования в яве. Так как люди сознательно редко используют его для названия классов или методов, то можно считать, что присутствие доллара говорит о том, что класс или метод синтетические, то есть были созданы самим компилятором. Например, подобное происходит для именования внутренних или анонимных классов. Для доступа к полю внешнего класса из анонимного генерируется синтетический метод.



D>Нет. Я же писал, что вариант полной компиляции декомпилированных исходников наихудший. Попробуй проанализировать логику и внести изменения в нее через наследование и переопределение нужных методов.

D>Даже если наследование не решит проблемы, то я сначала бы посмотрел, можно ли решить проблему, напрямую изменив байт-код классов (библиотека BCEL), внедрив нужные мне вызовы своего класса в необходимые места.
D>Не знаю как твой проект, но те, что я декомпилировал, выглядели почти безнадежными в плане обратной компиляции.

Хорошо попробуем что-нибудь сделать, в идеале конечно полностью бы взять и переписать всё, но както это ужасно будет. Хотелось просто чуток изменений внести в программу и всё.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.