В моей статейке Экспорт на мобильные платформы при помощи CocoonJS я добавил хак библиотеки CocoonJS, который убирает их логотипы. После чего в личку стали поступать вопросы о том, как я это сделал и, как сказал один из: "Не собираюсь хакать, но мне просто интересно!". Ну, что ж... выходной день, времени полно, погода пасмурная, настроение сонное... почему бы и нет?
Все действия описанные ниже производились и поясняются только с общеобразовательного интереса! Если вы собираетесь покупать или распространять свои игры созданные на С2 и CocoonJS - оставляйте всё как есть и покупайте все необходимые лицензии.
Только сразу хочу предупредить о том, что для продвинутых юзверей данная статья может показаться смешной, ибо ничего кул-хацкерского вы здесь не найдете! Я просто расскажу с чего всё началось и как я дошел до результата... что новичкам, именно новичкам, просто даст пищу для размышления. Так что если ты работаешь в IT-сфере достаточно давно - можешь пройти мимо;)
И так, для работы нам понадобится простой текстовый редактор (Блокнот, да:) но я использую AkelPad и редактор в файловом менеджере FAR) и сам HEX-редактор. А что это такое вообще? Википедия вам в помощь!
Прежде чем я выбрал какой НЕХ-редактор использовать - я решил просто просмотреть файл libCocoonJSLib.so. Почему именно его? Да, к этому я пришел не сразу... ведь моя цель - убрать картинку с логотипом, а где она спрятана - неизвестно. После декомпиляции APK (о чем я описал в статье по первой ссылке), я просмотрел все файлы... ни в одном из читаемых файлов не было ни единой ссылки на какие-либо картинки, кроме моих собственных. Вывод очевиден - логотипы вшиты в какой-то из не читаемом (бинарном) файле. Но в каком? Благо, что таких файлов было не много и по логике вещей первым делом решил просмотреть именно libCocoonJSLib.so, просто потому, что он самый большой и потому, что в нем говорящее само за себя название "Библиотека CocoonJS". Открываю его в блокноте и вижу что-то типа того:

Ага... интересно. А вдруг среди всего этого хаоса все таки есть картинка? Я был уверен, что формат у картинки именно PNG т.к. именно этот формат советовался для использования сплаш-скринов, поэтому первым делом я решил попробовать распознать именно его. Но как? Для начала надо бы узнать, как выглядит PNG в не читаемом виде (прошу прощения за не совсем крутые термины). Для этого я открыл блокнотом несколько PNG картинок.


Все они начинались и заканчивались одинаково! Обратите внимание на скриншоты... видите, в самом начале *закорючка* затем PNG, а потом уже пошел всякий шлак. Так вот *закорючка*PNG - это метка начала любого PNG - файла! А вот чем они заканчиваются:

в конце всегда IEND и некий набор символов.
Возвратившись к файлу библиотеки CocoonJS я ввел в поиск эти символы и нашел аж 5 совпадений!!! Т.е. в нем явно вшито 5 тел PNG-изображений! А вдруг я ошибаюсь? Не может же быть так просто... ведь эти данные должны быть зашифрованы, ну, не знаю, я бы зашифровал. Нужно было убедиться наверняка, что это действительно изображения, причем в чистом виде! Как это сделать я знал сразу - нужно просто выделить тело одного из файлов и сохранить его отдельно, а затем получившийся файл открыть в просмотрщике изображений и если я прав - то увижу какое-то изображение, в лучшем случае и сам логотип!
Задача проста, вот только тело файлов очень большое... если делать это в текстовых редакторах. Представьте себе, что вам нужно выделить точно, от точки до точки, кусок из 3000 страниц какой-то книги, которая состоит из миллионов страниц. Как вы себе это представляете в текстовом редакторе?))) Да никак... регулярные выражения здесь тоже не помогут. Нужен хороший HEX-редактор, который работает с байтами, а не с текстовой информацией.
Я попробовал несколько редакторов - всё не то. В итоге мой выбар пал на Hex Editor Neo. Полнофункциональная версия доступна в течении 14 дней. Русский язык есть! Да и бесплатных функций нам хватит за глаза... Так что качаем его и ставим. Такие банальные вещи уже подсказывать не буду=)) Скажу только, что во время установки я выбрал режим Advanced User. Предположим у вас он уже стоит - едем дальше...
Открываем в нашем редакторе файл библиотеки.

Жмем Ctrl+F и ищем начало первого графического файла:

Помните закорючку (что-то вроде знака %) которая должна быть перед PNG? Вот ищем сочетание PNG до тех пор, пока не увидим перед PNG этот самый %. Т.е. то, что на скриншоте - это пример не нужного нам фрагмента, ищем дальше, нажимая F3. Для более точного совпадения я снял галочку перед опцией "Без регистра", чтобы он искал png только ВЕРХНЕМ регистре.
О! Что-то нашлось!

В этом замечательном редакторе есть возможность делать закладки! Давайте-как её сделаем, а затем поищем конец найденного фрагмента.
Выделяем начало фрагмента и создаем закладку:

Ищем далее конец файла. Как он заканчивается, помните? IEND!

Жмем снова на кнопку создания закладки и теперь у нас их две! Можно легко переключаться между фрагментами! В нашем случае между началом и концом! Круто, попробуйте;) Просто кликайте на них:

Теперь нам нужно вытащить это тело и сохранить в новом файле! Для этого нам нужно выделить фрагмент от начала и до конца! Но, прежде чем мы это сделаем....

Кликнем правым ухом в левый столбик и выберем опцию "Десятичный", для более лёгкого счета размера выделения! Запишите номер строки (хоть это и не правильно, но для лучшего восприятия будем называть это номерами строк), на которой находитесь. У меня это 5 653 812:

Теперь идем к концу фрагмента (тыкаем на закладку №2) и записываем его строку:

6 190 812
Далее открываем калькулятор и решаем: 6 190 812 - 5 653 812 = 537000
Зачем? Сейчас поймете.
Идем снова к началу файла (закладка №1) и теперь идем в меню "Выделение" и выбираем этот пункт:

Выделить область.
Делаем все как у меня и жмем ОК:

Здесь скажу лишь, что "Смещение" - это и есть "строка", но здесь имеется в виду смещение байта (о чем было описано в википедии). А то, что мы посчитали на калькуляторе - это размер выделения! Т.е. начиная от смещения 5 653 812 мы выделяем еще 537000 байт вниз.
В моем случае начало выделилось хорошо:

А вот конец не до конца:

Это потому, что я допустил ошибку... надо было брать на одно смещение больше=) Ну, ничего! В этом офигенски удобном редакторе можно дополнять выделения! Просто ткните мышкой в 00 и перетяните до 49 как показано на скриншоте:

Если не получилось - не беда! Эти символы и дописать можно....
Ну, что ж... что же мы такое выделили? Давайте посмотрим! Жмем Файл - Новый файл или CTRL+N

Переходим на закладку с нашим прошлым файлом, тыкаем правым ухом на наше выделение и жмем Копировать!

Теперь идем к нашему новому файлу, тыкаем на первый байт правым ухом и теперь выбираем Вставить!

Всё... теперь жмем Файл - Сохранить как... В появившемся окне жмем "Да" и сохраняем файл с расширением PNG!

Поздравляю! Вы совершили самое настоящее хакерство=)))
А чтобы быть совсем уж крутыми, давайте заменим это изображение на свое?
Прежде чем начать - обратите внимание, что сразу же после окончания нашего файла, начинается другой файл!

Это файл изображения для ландшафтной ориентации! Как его выделить и вытащить - вы уже знаете!
Для начала нам нужно создать или найти то изображение, на которое мы будем заменять логотипы. Можно создать изображение в пэинте... размеры изображения не важны, но не должны превышать 537 килобайт. Точнее... это возможно, но давайте не будем усложнять себе задачу=)
Я создал такое изображение:
http://j-p-g.net/if/2013/03/10/0250517001362895504.png
Что делаем дальше? Дальше всё просто... Выделяем фрагмент, который будем заменять. Например, тот же самый, что мы выдернули.
Жмем кнопку "Залить" делаем всё как у меня:

Мы залили фрагмент нулями. Т.е. всё, на месте картинки уже ничего нет...
Теперь жмем Правка - Вставить файл.

И выбираем, например, ту картинку, которую вы скачали по моей ссылке выше.
Всё! Теперь вы можете сохранить редактируемый файл, скомпилировать новый APK и проверить свою работу. Напоминаю, что статья про работу с APK-файлами лежит здесь: viewtopic.php?f=4&t=444
Теперь вы поняли, как в Зионе читают матрицу?;)