Почему никак не узнать исходный код игры?
Объясните пожалуйста, почему я никогда не узнаю исходный код какой-нибудь игры пока разработчики его сами не выложат в открытый доступ?
В приложениях .net его можно узнать через DotPeek, но в большинстве игр нет.
Почему нельзя узнать исходный код, как например достать текстуры из игры?
Почему после компиляции всё?
Если это всё как-то шифруют, то как работает эта шифровка?
Я понимаю вопросы глупые, но я просто не могу этого понять. =(
(Объясните пожалуйста на простых словах, без википедии, я не понимаю что там написано)
- Вопрос задан более года назад
- 2540 просмотров
Средний 2 комментария
- Вконтакте
Эмм ну допустим вы приготовили салат. Нарезали крабовые палочки, кукурузку всыпали, намешали особый соус по своему рецепту. И поставили на стол — нате, хавайте.
Вот и как голодному студенту узнать рецепт? Да, продукт перед ним. Да, он может расковырять свою порцию, отсортировать кукурузки и нарезку, по форме кубиков узнать каким ножом резали, подсчитать в граммах каждый ингридиент, фигакнуть соус на центрифуге, просветить спектроанализатором на химические элементы, прикинуть примерно из чего оно могло состоять. Но на это уйдет уйма времени и средств.
Так же и с программой. Исходный код — это для нас, человеков. Нам так удобнее описывать программу. Машине же для исполнения вообще не сдались красивые имена и английский язык, всё наше рукоделие переводится в машинные коды, притом покомпактнее, пооптимальнее (упаковкой / нарезкой салата из нашего кода занимаются оптимизирующие компиляторы). В результате получается бинарный файл. Да, его можно дизассемблировать, сломать мозги, но понять, как он работает. И чтобы его понять — нужно научиться читать как машина, думать, как компилятор. В общем, сложно это и часто нецелесообразно. А вообще, люди не то что софт, даже железо реверсят по фотографиям среза кристалла. Но это совсем другая история.
- Вконтакте
DotPeek работает только для .net. Если приложение написано на чем т одругом — дотпик бесполезен. Есть разные другие инструменты для декомпиляции.
Но — полный исходный код вы не получите, если он был скомпилирован.
А текстуры можно вытащить — это совсем другое.
- Вконтакте
- Вконтакте
- Вконтакте
чужой код бесполезный. какой в нем смысл? я могу воспроизвести любую игру просто поиграв в нее,зачем нужен чужой код? любую игру не сложно воспроизвести .Свой код будет намного быстрее.
Вы потеряете много время читая чужой код . Проще написать новый, просто посмотрев на игру
Более того ту игру что вы видите можно реализовать как минимум шестью способами,смысл тратить время на чужой код если вам понравилась идея? создать свою игру увидев чужую не сложно .
Я как раз поругалась с Massachusetts Institute of Technology из за этого . Они хотят красть у детей код и раздавать всем. Я же не вижу в этом смысла и считаю смысл в том что бы Закрыть код, но научить каждого взглянув на чужую игру воспроизвести ее.
Я считаю что код должен быть закрыт ,а игру нужно публиковать не на сайте института ,а в магазине Хюавей
.
Задача не научить красть чужой код и меняя спрайты выдавать за свою,а задача научить любого написать код просто взглянуть на игру .
Поверте чужой код — это не только не чему не учить, но и научить плохому, а имено кражам.
Для того что бы украсть чужую игру достаточно взглянуть на рабочую. Я не вижу проблем сделать точно такую же если вижу готовую игру .
Важнее понять и знать что делает код ,чем просто глупо смотреть на чужой
К примеру вот код
Кто знает что он делает?
я не уверена что без пояснение кто то сразу даст ответ .
Потому куда важнее дать пояснение чем просто посмотреть чужой код
В играх важнее идея ,а не код . Самое важное в игре , это игровой сценарий.
Допустим вы украли код игры на питон , а сами знаете только си шарп, какой прок от этого?
Исходный код игры: что это такое и как можно его заполучить?
Исходный код игры — это тот самый код, который пишет программист, чтобы игра заработала. Он может быть написан на любом удобном программисту языке программирования.
Для тех , кто не знае т, я зыки программирования нужны для человека, а не для компьютера. С их помощью программист пишет программы, которые удобно читать и понимать человеку. Поэтом у в основно м п рограммисты стараются писать код качественно, компактно и красиво для своего же удобства. А компьютеру совершенно не важна красота исходного кода, потому что он понимает только свой машинный язык, который состоит из единиц и нулей. Большинство написанных программистом программ компилируется в машинный язык, который человеку очень сложно понять.
Так происходит и с кодом игр. Программист пишет игр у н а известном ему языке и выпускает ее в широкое пользование. Исходный код игры обычно закрыт, а пользователям игры доступен лишь машинный код игры, который достаточно сложно понять. Можно ли с машинного кода получить исходный код? В принципе , можно, но это очень трудная и кропотливая работа с применением различных инструментов и подходов к анализу получаемых результатов. Для такого комплекса проводимых работ придуман даже свой термин — реверс-инженеринг ( реверсная инженерия или обратное программирование ) . Само действие по конвертации кода из машинного в код языка программирования называется декомпиляцией. И это действие является обязательной частью реверс-инженер ии .
Исходный код игры
Нужно понимать, что реверсная инженерия не дает стопроцентный результат. Полученный код с применением инструментов для реверса не будет кодом , идентичным исходному, но может быть очень похожим на него. Настоящий исходный код игры может быть доступен только в том случае, если разработчик опубликует его в открытом доступе.
Иногда разработчики используют такую практику — публикуют исходники игры в открытом доступе, чтобы каждый, кто смыслит в программировании, смог внести свою лепту в развитие игры. При этом авторское право сохраняется за разработчиками игры и регулируется соответствующими лицензиями и документацией.
Но большинство игр распространяются по другому сценарию. Когда программист пишет игру, он закрывает исходный код от посторонних глаз и затем распространяет игру в виде скомпилированного файла. Скомпилированные файлы могут содержать как двоичный машинный код, так и объектный код или код из ассемблерных команд.
Например , вы скачиваете файл игры с «ехе»-расширением, чтобы установить такую игру к себе на компьютер с операционной системой Windows. Если вы попытаетесь открыть такой файл для просмотра его кода, то максимум , что вы там обнаружите , — это объектный код, который состоит из «смеси» цифр и букв в 16-битовой системе исчисления. Полностью восстановить из объектного кода исходный не представляется возможным, только его частичное восстановление, чтобы можно было «уловить» алгоритмы и логику в игре.
В общем, нужно понимать простую вещь : в основном игры пишутся на компилируемых языках. А это значит, что код игры должен пройти процесс компиляции, для того чтобы его мог «понять» компьютер. А компиляция — это односторонний процесс, который всегда происходит только в одном направлении. Это означает, что обратное программирование — это всего лишь попытка воссоздать исходный код игры.
Исходный код игры: для чего закрывать и для чего его хочется заполучить
-
с закрытым исходным кодом;
-
с открытым исходным кодом.
Для чего нужен исходный код игры
Чуть выше мы уже обсудили, что иногда и сходный код нужен, чтобы клонировать игру. Но бывают более мелкие «нужды», например , хочется написать какой-либо мод или даже чит к игре. В этих случаях вам необязательно искать весь исходный код. Иногда разработчики открывают код игры частично, чтобы «мододелы» могли писать моды. В некоторых ситуациях фанаты игры уже частично восстановили исходный код интересующей вас игры и выложили в сеть. Вы не поверите, но у огромного числа «закрытых» игр уже есть «реверсные» версии, которые находятся в открытом доступе.
В общем, по конкретной игре нужно искать наличие исходного кода. Если же вы просто хотите «поиграться» с исходным кодом какой-либо игры, то мож ете найти игры 90-х или 2000-х годов, у которых исходный код открыт , и экспериментируйте сколько душе угодно.
Заключение
Исходный код игры — это гарантия авторского права на игру. У кого исходники, тот и автор. Восстанавливать исходный код — это довольно сложное занятие, которое потребует от вас специальных знаний. А самое главное , что чем «больше» и сложнее игра, тем дольше и менее точным будет восстановленный исходный код игры.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Исходный код почему нельзя достать из игры
Исходный код игры: что это такое и как можно его заполучить?
Исходный код игры — это тот самый код, который пишет программист, чтобы игра заработала. Он может быть написан на любом удобном программисту языке программирования.
Для тех , кто не знае т, я зыки программирования нужны для человека, а не для компьютера. С их помощью программист пишет программы, которые удобно читать и понимать человеку. Поэтом у в основно м п рограммисты стараются писать код качественно, компактно и красиво для своего же удобства. А компьютеру совершенно не важна красота исходного кода, потому что он понимает только свой машинный язык, который состоит из единиц и нулей. Большинство написанных программистом программ компилируется в машинный язык, который человеку очень сложно понять.
Так происходит и с кодом игр. Программист пишет игр у н а известном ему языке и выпускает ее в широкое пользование. Исходный код игры обычно закрыт, а пользователям игры доступен лишь машинный код игры, который достаточно сложно понять. Можно ли с машинного кода получить исходный код? В принципе , можно, но это очень трудная и кропотливая работа с применением различных инструментов и подходов к анализу получаемых результатов. Для такого комплекса проводимых работ придуман даже свой термин — реверс-инженеринг ( реверсная инженерия или обратное программирование ) . Само действие по конвертации кода из машинного в код языка программирования называется декомпиляцией. И это действие является обязательной частью реверс-инженер ии .
Исходный код игры
Нужно понимать, что реверсная инженерия не дает стопроцентный результат. Полученный код с применением инструментов для реверса не будет кодом , идентичным исходному, но может быть очень похожим на него. Настоящий исходный код игры может быть доступен только в том случае, если разработчик опубликует его в открытом доступе.
Иногда разработчики используют такую практику — публикуют исходники игры в открытом доступе, чтобы каждый, кто смыслит в программировании, смог внести свою лепту в развитие игры. При этом авторское право сохраняется за разработчиками игры и регулируется соответствующими лицензиями и документацией.
Но большинство игр распространяются по другому сценарию. Когда программист пишет игру, он закрывает исходный код от посторонних глаз и затем распространяет игру в виде скомпилированного файла. Скомпилированные файлы могут содержать как двоичный машинный код, так и объектный код или код из ассемблерных команд.
Например , вы скачиваете файл игры с «ехе»-расширением, чтобы установить такую игру к себе на компьютер с операционной системой Windows. Если вы попытаетесь открыть такой файл для просмотра его кода, то максимум , что вы там обнаружите , — это объектный код, который состоит из «смеси» цифр и букв в 16-битовой системе исчисления. Полностью восстановить из объектного кода исходный не представляется возможным, только его частичное восстановление, чтобы можно было «уловить» алгоритмы и логику в игре.
В общем, нужно понимать простую вещь : в основном игры пишутся на компилируемых языках. А это значит, что код игры должен пройти процесс компиляции, для того чтобы его мог «понять» компьютер. А компиляция — это односторонний процесс, который всегда происходит только в одном направлении. Это означает, что обратное программирование — это всего лишь попытка воссоздать исходный код игры.
Исходный код игры: для чего закрывать и для чего его хочется заполучить
с закрытым исходным кодом;
с открытым исходным кодом.
Для чего нужен исходный код игры
Чуть выше мы уже обсудили, что иногда и сходный код нужен, чтобы клонировать игру. Но бывают более мелкие «нужды», например , хочется написать какой-либо мод или даже чит к игре. В этих случаях вам необязательно искать весь исходный код. Иногда разработчики открывают код игры частично, чтобы «мододелы» могли писать моды. В некоторых ситуациях фанаты игры уже частично восстановили исходный код интересующей вас игры и выложили в сеть. Вы не поверите, но у огромного числа «закрытых» игр уже есть «реверсные» версии, которые находятся в открытом доступе.
В общем, по конкретной игре нужно искать наличие исходного кода. Если же вы просто хотите «поиграться» с исходным кодом какой-либо игры, то мож ете найти игры 90-х или 2000-х годов, у которых исходный код открыт , и экспериментируйте сколько душе угодно.
Заключение
Исходный код игры — это гарантия авторского права на игру. У кого исходники, тот и автор. Восстанавливать исходный код — это довольно сложное занятие, которое потребует от вас специальных знаний. А самое главное , что чем «больше» и сложнее игра, тем дольше и менее точным будет восстановленный исходный код игры.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Почему никак не узнать исходный код игры?
Объясните пожалуйста, почему я никогда не узнаю исходный код какой-нибудь игры пока разработчики его сами не выложат в открытый доступ?
В приложениях .net его можно узнать через DotPeek, но в большинстве игр нет.
Почему нельзя узнать исходный код, как например достать текстуры из игры?
Почему после компиляции всё?
Если это всё как-то шифруют, то как работает эта шифровка?
Я понимаю вопросы глупые, но я просто не могу этого понять. =(
(Объясните пожалуйста на простых словах, без википедии, я не понимаю что там написано)
- Вопрос задан более года назад
- 2217 просмотров
Средний 2 комментария
- Вконтакте
Эмм ну допустим вы приготовили салат. Нарезали крабовые палочки, кукурузку всыпали, намешали особый соус по своему рецепту. И поставили на стол — нате, хавайте.
Вот и как голодному студенту узнать рецепт? Да, продукт перед ним. Да, он может расковырять свою порцию, отсортировать кукурузки и нарезку, по форме кубиков узнать каким ножом резали, подсчитать в граммах каждый ингридиент, фигакнуть соус на центрифуге, просветить спектроанализатором на химические элементы, прикинуть примерно из чего оно могло состоять. Но на это уйдет уйма времени и средств.
Так же и с программой. Исходный код — это для нас, человеков. Нам так удобнее описывать программу. Машине же для исполнения вообще не сдались красивые имена и английский язык, всё наше рукоделие переводится в машинные коды, притом покомпактнее, пооптимальнее (упаковкой / нарезкой салата из нашего кода занимаются оптимизирующие компиляторы). В результате получается бинарный файл. Да, его можно дизассемблировать, сломать мозги, но понять, как он работает. И чтобы его понять — нужно научиться читать как машина, думать, как компилятор. В общем, сложно это и часто нецелесообразно. А вообще, люди не то что софт, даже железо реверсят по фотографиям среза кристалла. Но это совсем другая история.
- Вконтакте
DotPeek работает только для .net. Если приложение написано на чем т одругом — дотпик бесполезен. Есть разные другие инструменты для декомпиляции.
Но — полный исходный код вы не получите, если он был скомпилирован.
А текстуры можно вытащить — это совсем другое.
- Вконтакте
- Вконтакте
- Вконтакте
чужой код бесполезный. какой в нем смысл? я могу воспроизвести любую игру просто поиграв в нее,зачем нужен чужой код? любую игру не сложно воспроизвести .Свой код будет намного быстрее.
Вы потеряете много время читая чужой код . Проще написать новый, просто посмотрев на игру
Более того ту игру что вы видите можно реализовать как минимум шестью способами,смысл тратить время на чужой код если вам понравилась идея? создать свою игру увидев чужую не сложно .
Я как раз поругалась с Massachusetts Institute of Technology из за этого . Они хотят красть у детей код и раздавать всем. Я же не вижу в этом смысла и считаю смысл в том что бы Закрыть код, но научить каждого взглянув на чужую игру воспроизвести ее.
Я считаю что код должен быть закрыт ,а игру нужно публиковать не на сайте института ,а в магазине Хюавей
.
Задача не научить красть чужой код и меняя спрайты выдавать за свою,а задача научить любого написать код просто взглянуть на игру .
Поверте чужой код — это не только не чему не учить, но и научить плохому, а имено кражам.
Для того что бы украсть чужую игру достаточно взглянуть на рабочую. Я не вижу проблем сделать точно такую же если вижу готовую игру .
Важнее понять и знать что делает код ,чем просто глупо смотреть на чужой
К примеру вот код
Кто знает что он делает?
я не уверена что без пояснение кто то сразу даст ответ .
Потому куда важнее дать пояснение чем просто посмотреть чужой код
В играх важнее идея ,а не код . Самое важное в игре , это игровой сценарий.
Допустим вы украли код игры на питон , а сами знаете только си шарп, какой прок от этого?
Есть ли способ получить исходный код из файла APK?
Жесткий диск на моем ноутбуке просто разбился, и я потерял весь исходный код приложения, над которым я работал последние два месяца. Все, что у меня есть, это файл APK, который хранится в моем письме, когда я отправил его другу.
Есть ли способ извлечь исходный код из этого файла APK?
ОТВЕТЫ
Ответ 1
Простой способ: используйте онлайн-инструмент http://www.javadecompilers.com/apk, загрузите apk и получите исходный код.
Процедура декодирования .apk файлов, пошаговый метод:
Шаг 1:
Создайте новую папку и скопируйте файл .apk, который вы хотите декодировать.
Теперь переименуйте расширение этого файла .apk в .zip (например, переименуйте из filename.apk в filename.zip) и сохраните его. Теперь вы можете получить доступ к файлам classes.dex и т.д. На этом этапе вы можете видеть графические объекты, но не файлы XML и Java, поэтому продолжайте.
Шаг 2:
Теперь распакуйте этот файл .zip в ту же папку (или NEW FOLDER).
Скачайте dex2jar и распакуйте его в ту же папку (или в NEW FOLDER).
Переместите файл classes.dex в папку dex2jar.
Теперь откройте командную строку и измените каталог на эту папку (или NEW FOLDER). Затем напишите d2j-dex2jar classes.dex (для терминала Mac или Ubuntu напишите ./d2j-dex2jar.sh classes.dex ) и нажмите клавишу ввода. Теперь у вас есть файл classes.dex.dex2jar в той же папке.
Загрузите декомпилятор java, дважды щелкните jd-gui, щелкните открытый файл и откройте файл classes.dex.dex2jar из этой папки: теперь вы получаете файлы классов.
Сохраните все эти файлы классов (в jd-gui выберите Файл → Сохранить все источники) под именем src. На этом этапе вы получаете исходный код Java, но файлы .xml по-прежнему не читаются, поэтому продолжайте.
Шаг 3:
Теперь откройте еще одну новую папку
Поместите в файл .apk, который вы хотите декодировать
Загрузите последнюю версию apktool и окно установки apktool (обе можно скачать по одной и той же ссылке) и поместите их в одну папку
Откройте командное окно
Теперь запустите команду как apktool if framework-res.apk (если у вас ее нет, получите ее здесь) и затем
apktool d myApp.apk (где myApp.apk обозначает имя файла, который вы хотите декодировать)
теперь вы получаете папку с файлами в этой папке и можете легко читать файлы apk xml.
Шаг 4:
Это не какой-либо шаг, просто скопируйте содержимое обеих папок (в данном случае обе новые папки) в одну
и наслаждайтесь исходным кодом.
Ответ 2
Это альтернативное описание — на всякий случай, когда кто-то застрял над описанием выше. Выполните следующие шаги:
- скачать apktool.bat (или apktool для Linux) и apktool_<version>.jar из http://ibotpeaches.github.io/Apktool/install/
- переименуйте файл jar сверху до apktool.jar и поместите оба файла в одну папку
Промежуточный результат: файлы ресурсов, AndroidManifest.xml
Промежуточный результат: classes.dex
Промежуточный результат: classes_dex2jar.jar
Результат: исходный код
Примечание: не разрешается декомпилировать пакеты сторонних поставщиков; это руководство предназначено для восстановления личного исходного кода только из файла APK; наконец, полученный код, скорее всего, будет запутан.
Ответ 3
В то время как вы можете декомпилировать ваш файл APK , вы, вероятно, столкнетесь с одной большой проблемой:
он не вернет код, который вы написали. Вместо этого он будет возвращать все, что встраивается компилятором, с переменными, заданными случайными именами, а также функциями, заданными случайными именами. Это может занять значительно больше времени, чтобы попытаться декомпилировать и восстановить его в коде, который у вас был, чем начать.
К сожалению, такие вещи убили много проектов.
В будущем я настоятельно рекомендую изучить систему управления версиями, например CVS, SVN и git и т.д.
и как создать резервную копию.
Ответ 4
Просто установите и получайте удовольствие. Я думаю, что это самый простой способ декомпилировать приложение.
Ответ 5
apktool — лучшая вещь, которую вы можете попробовать. Я сохранил некоторые XML с ним, но, честно говоря, я не знаю, как это будет работать с кодом .java.
Я бы порекомендовал вам иметь хранилище кода, даже если вы единственный кодер. Я использую Project Locker для своих собственных проектов. Это дает вам бесплатные репозитории SVN и GIT.
Ответ 6
В этих двух статьях описывается, как совместить использование apktool и dex2jar для получения файла APK и создания проекта Eclipse, который может его собрать и запустить.
- Используйте apktool чтобы получить файлы ресурсов из apk
- Используйте dex2jar чтобы получить файл jar, содержащий классы в формате, который понравится Eclipse.
- Создайте проект Eclipse, наведите его на файлы ресурсов и новый файл jar
- Откройте файл jar утилитой zip и удалите существующие ресурсы
- Откройте файл JDGui с JDGui чтобы просмотреть исходный код
- Возьмите любой исходный код из JDGui , JDGui его в класс внутри Eclipse и измените его
- Удалите этот класс из файла jar (чтобы один и тот же класс не определялся несколько раз)
- Запустить его.
Ответ 7
apktool будет работать. Вам даже не нужно знать хранилище ключей, чтобы извлечь исходный код (что немного страшно). Основной недостаток заключается в том, что источник представлен в формате Smali вместо Java. Другие файлы, такие как значок и main.xml, проходят отлично, хотя, возможно, стоит потратить время, чтобы хотя бы восстановить их. В конечном итоге вам, скорее всего, придется перезаписать Java-код с нуля.
Здесь вы можете найти apktool здесь. Просто скачайте apktool и соответствующий помощник (для Windows, Linux или Mac OS). Я рекомендую использовать такой инструмент, как 7-zip, чтобы распаковать их.
Ответ 8
Есть несколько способов сделать это:
Используйте функцию «Профиль или Отладка APK» в Android Studio 3.0.
Это позволяет открывать и изучать APK в Android Studio. Классы декомпилированы в smali. Ресурсы не извлекаются, и такие вещи, как «Перейти к определению», «Найти все ссылки» и отладка, не работают без исходного кода (android studio 3.0 canary 9). Некоторые дополнительные функции smali могут работать с smallidea.
Jadx декомпилирует код в данном APK в исходные файлы Java.
Apktool — это инструмент командной строки, который извлекает ресурсы и декомпилирует код в smali для данного apk. Вы также можете перекомпилировать, используя apktool. Вот пример этого в действии:
Ответ 9
Может быть, легко увидеть источник:
В Android Studio 2.3, Build → Analyze APK → Select the apk that you want to decompile .
Вы увидите исходный код.
Ответ 10
Я покажу вам другой способ декомпилировать файлы .apk.
Вы можете выполнить первые 2 шага из » prankul garg«. Таким образом, у вас есть еще одна возможность:
Шаг 3 ‘:
Загрузите «JD-GUI» , который легко найти. Откройте файл .jar в файле «jd-gui.exe». (Файл > Открыть файл > ‘нашел ваш файл .jar). После этой процедуры вы можете сохранить все ресурсы в файле .zip.
1st — вам нужно переименовать файл .apk в .zip
2nd — Вы должны декодировать файл .dex (если хотите, декодируйте файл .apk на dex2jar, что возможно)
3rd — вам нужно декодировать .jar файл с JD-GUI
Ответ 11
Ниже ОНЛАЙН:
он делает ВСЕ одним щелчком мыши: декомпилировал .java файлы + ресурсы + xml (в одном .zip файле) с очень хорошим декомпилятором (jadx возвращает java-код в местах/функциях, где другие компиляции возвращают комментарии внутри функции типа «невозможно декомпилировать» или какой-либо ассемблер/машинный код Android)
Ответ 12
Этот сайт https://www.apkdecompilers.com/ сделал это автоматически.
Сначала я попробовал сайт, упомянутый в принятом ответе, но у меня это не получилось.
Ответ 13
Я лично рекомендую показать Java Android App, чтобы получить исходный код. Вы можете скачать его из игрового магазина или отсюда
Ответ 14
Apktool для обратной инженерии сторонних, закрытых, бинарных приложений для Android.
Он может декодировать ресурсы до почти первоначальной формы и восстанавливать их после внесения некоторых изменений.
Это позволяет отлаживать smali-код шаг за шагом. Кроме того, упрощается работа с приложением из-за проектной структуры файла и автоматизации некоторых повторяющихся задач, таких как создание apk и т.д.
Ответ 15
apktool — это путь. Онлайн-служба apktool существует: http://www.javadecompilers.com/apktool
Некоторые ограничения, очевидно, существуют из-за службы онлайн-характера: вы можете извлекать и исследовать активы и файл манифеста, но невозможно перекомпилировать приложение на данный момент.
Тем не менее, это бесполезный способ «открыть» приложение для Android.
Ответ 16
Вы можете попробовать DexPatcher. Он даже интегрируется с Android Studio. Он использует Apktool и Dex2Jar внутренне.
Вы также можете использовать эти инструменты самостоятельно. Apktool декомпилирует apk и извлекает файлы .dex, которые могут быть преобразованы в jar с использованием Dex2Jar. Jar можно декомпилировать, используя JD-GUI. Вы можете увидеть Java-код с помощью этого инструмента. Хотя сходство декомпилированного кода с реальным кодом не может быть гарантировано. Есть некоторые продвинутые методы обфускации кода, доступные на рынке, которые испортили код, чтобы затруднить декомпиляцию/понимание. например. Proguard
Ответ 17
Самым простым способом является использование Apk OneClick Decompiler. Это пакет инструментов для декомпиляции и дизассемблирования APK (пакетов Android).
ФУНКЦИИ
- Все функции интегрированы в контекстное меню Windows.
- Декомпилируйте классы APK в исходные коды Java.
- Разберите APK, чтобы смали код и расшифруйте его ресурсы.
- Установите APK на телефон, щелкнув правой кнопкой мыши.
- Перекомпилируйте APK после редактирования кода и/или ресурсов. Во время перекомпиляции:
- Оптимизировать PNG изображения
- Войти apks
- Zipalign
ТРЕБОВАНИЯ
Java Runtime Environment (JRE) должна быть установлена.
Вы можете скачать его по этой ссылке Apk OneClick Decompiler
Ответ 18
Я нашел следующее как самый простой метод:
- Переименуйте ваш app.apk в app.zip (измените расширение с apk на zip)
- Распакуйте zip файл в папку
- Используйте инструмент JADX, чтобы прочитать исходный код, представленный в файле classes.dex.
Ответ 19
Есть приложение для этого и обычно занимает всего несколько кликов, и все готово. https://github.com/Nuvolect/DeepDive-Android
- Выберите Приложения, в разделе «Установленные приложения» выберите свое приложение. Если его там нет, вы можете загрузить APK.
- Выберите «Извлечь APK»
- Выберите «Распаковать APK»
- Выберите «Декомпилировать с помощью Jadx». Это может занять несколько секунд или несколько минут в зависимости от скорости вашего устройства
После этого вы можете просмотреть исходный код, загрузить его на другой компьютер с elFinder или выполнить поиск по нему с помощью Lucene.
В дополнение к Jadx есть декомпиляторы CFR и Fernflower.
Ответ 20
Студия Android предлагает вам проанализировать любой файл apk.
1 — В меню сборки выберите параметр анализировать apk и выберите файл apk. 2 — В результате вы получите файл classes.dex и другие файлы. 3 — Нажмите на classes.dex, который предоставит вам список папок, пакетов, библиотек и файлов. 4 — Из настроек android studio установите плагин под названием «Dex to Jar» 5 — нажмите на любой файл активности вашего извлеченного проекта и выберите «dex to jar» в меню сборки.
Это приведет к фактическому коду вашего Java файла.
Ответ 21
в зависимости от вашего состояния, если ваш Android APK:
Условие 1: НЕ затвердевать (от Tencent Legu/Qihoo 360/. )
Выбор1: с помощью онлайн-сервиса
используя www.javadecompilers.com
- http://www.javadecompilers.com/apk
- Примечание: внутренне используя Jadx
автоматически декодировать из АПК в исходный код Java
upload файл apk + нажать Run + подождать некоторое время + нажать Download чтобы получить zip + unzip ->
ваш ожидаемый исходный код Java
Choice2: декомпилировать/взломать самостоятельно
Используйте соответствующий инструмент для декомпиляции/взлома самостоятельно:
используйте jadx / jadx-gui конвертировать apk в java sourcecode
скачайте jadx-0.9.0.zip, затем распакуйте в bin/jadx , затем:
- режим командной строки:
- в терминальном запуске: jadx-0.9.0/bin/jadx -o output_folder/path_to_your_apk/your_apk_file.apk
- output_folder покажет декодированные sources и resources
- sources/com/ / — ваш ожидаемый java sourcecode
- дважды щелкните для запуска jadx-0.9.0/bin/jadx-gui (Linux jadx-gui.sh /Windows jadx-gui.bat )
- открыть файл apk
- это будет автоматическое декодирование → увидеть ожидаемый исходный код Java
- save all или save as Gradle project
Условие 2: закалка (Tencent Legu/Qihoo 360/. )
основной метод 3 steps :
- apk/app to dex
- dex to jar
- jar to java src
Шаг 1: apk/app to dex
использовать инструмент ( FDex2 /DumpDex) для выгрузки/извлечения (одного или нескольких) файла dex из запущенного приложения
подготовить среду
- root ed андроид
- настоящий телефон
- или эмулятор
- здесь, используя китайскийNox App Player 夜 夜 安卓 模拟器
- на телефон или эмулятор
- Примечание: необходимо перезапустить Xposed, чтобы заставить работать FDex2
- Адрес загрузки FDex2, китайский:
- 工具 工具 FDex2-CSDN 下载
- 链接: https://pan.baidu.com/s/1lTF8CN96bxWpFwv7J174lg提取 码: 3e3t
выкинуть dex из запущенного приложения
запустите FDex2 затем щелкните по вашему имени apk, чтобы позже включить/захватить dex
- в своей корневой папке обычно найдет несколько файлов dex
Step2: dex to jar
используйте инструмент ( dex2jar ), чтобы преобразовать (определенный, содержащий логику приложения) файл dex файл jar
загрузить dex2jar получил dex-tools-2.1-SNAPSHOT.zip, распаковать получил dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh , затем
sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex
Шаг 3: jar to java src
используйте один из инструментов:
- Jadx
- Процион
- Инструмент с графическим интерфейсом на основе Procyon:
- Люйтен
- Просмотр байт-кода
- Кракатау
- Fernflower
- Cavaj
конвертировать jar в java src
для преобразования из jar в java src:
Jadx > Procyon > CRF >> JD-GUI
поэтому рекомендуем использовать: Jadx / jadx-gui
- двойной щелчок для запуска jadx-gui
- открыть файл dex
- File → save all
экспортированный источник Java:
Более подробное объяснение можно посмотреть в моей онлайн-книге китайского учебника:
Исходный код почему нельзя достать из игры
- скачать apktool.bat (или apktool для Linux) и apktool_<version>.jar от http://ibotpeaches.github.io/Apktool/install/
- переименуйте файл jar сверху в apktool.jar и поместите оба файла в одну папку
- использовать apktool to получить файлы ресурсов из apk
- использовать dex2jar чтобы получить файл jar, содержащий классы в формате, который понравится Eclipse.
- создать проект Eclipse укажите его на файлы ресурсов и новый файл jar
- откройте файл jar с помощью утилиты zip и удалите существующие ресурсы
- откройте файл jar с помощью JDGui для просмотра исходного кода
- Возьмите любой исходный код, который вам нужен от JDGui , вставьте его в класс внутри Eclipse и изменить его
- удалите этот класс из файла jar (так что у вас нет одного и того же класса, определенного несколько раз)
- запустить его.
Вскрываем, модифицируем и запаковываем Android-приложения
- dex2jar — транслятор байт-кода Dalvik в байт-код JVM, на основе которого мы сможем получить код на языке Java;
- jd-gui — сам декомпилятор, позволяющий получить из байт-кода JVM читаемый код Java. В качестве альтернативы можно использовать Jad (www.varaneckas.com/jad); хоть он и довольно старый, но в некоторых случаях генерирует более читаемый код, нежели Jd-gui.
- META-INF/ — содержит цифровой сертификат приложения, удостоверяющий его создателя, и контрольные суммы файлов пакета;
- res/ — различные ресурсы, которые приложение использует в своей работе, например изображения, декларативное описание интерфейса, а также другие данные;
- AndroidManifest.xml — описание приложения. Сюда входит, например, список требуемых разрешений, требуемая версия Android и необходимое разрешение экрана;
- classes.dex — компилированный байт-код приложения для виртуальной машины Dalvik;
- resources.arsc — тоже ресурсы, но другого рода — в частности, строки (да-да, этот файл можно использовать для русификации!).
- assets — аналог ресурсов. Основное отличие — для доступа к ресурсу необходимо знать его идентификатор, список asset’ов же можно получать динамически, используя метод AssetManager.list() в коде приложения;
- lib — нативные Linux-библиотеки, написанные с помощью NDK (Native Development Kit).
- расширение APK Downloader для Chrome;
- приложение Real APK Leecher;
- различные файлообменники и варезники.
Другие статьи в выпуске:
Хакер #170. Малварь для OS X
- архиватор ZIP для распаковки и запаковки;
- smali — ассемблер/дизассемблер байт-кода виртуальной машины Dalvik (code.google.com/p/smali);
- aapt — инструмент для запаковки ресурсов (по умолчанию ресурсы хранятся в бинарном виде для оптимизации производительности приложения). Входит в состав Android SDK, но может быть получен и отдельно;
- signer — инструмент для цифровой подписи модифицированного пакета (bit.ly/Rmrv4M).
- -s — не дизассемблировать файлы dex;
- -r — не распаковывать ресурсы;
- -b — не вставлять отладочную информацию в результаты дизассемблирования файла dex;
- —frame-path — использовать указанный UI-фреймворк вместо встроенного в apktool. Теперь рассмотрим пару опций для команды b:
- -f — форсированная сборка без проверки изменений;
- -a — указываем путь к aapt (средство для сборки APK-архива), если ты по какой-то причине хочешь использовать его из другого источника.
- Target File — выходной файл хранилища ключей; в нем обычно хранится одна пара ключей;
- Password и Confirm — пароль для хранилища;
- Alias — имя ключа в хранилище;
- Alias password и Confirm — пароль секретного ключа;
- Validity — срок действия (в годах). Значение по умолчанию оптимально.
WARNING
Наш подопытный кролик. Видна реклама
Он же, но уже без рекламы
- Инструмент с графическим интерфейсом на основе Procyon:
- здесь, используя китайскийNox App Player 夜 夜 安卓 模拟器