как узнать код программы
Как посмотреть исходный код приложения Android
С каждым днем приложений для Android становится все больше и больше. Миллионы интересных игр и полезных программ можно найти в Play Market. Все они имеют удобный интерфейс и справляются с поставленной задачей. Без них сложно представить современный мир информационных технологий. Эта статья ориентирована на людей, которые не только ценят функционал и внешний вид приложений, а еще и интересуются их внутренним устройством.
Если Вам когда-либо было интересно, что находится “под капотом” любимого приложения, и вы немного смыслите в программировании – эта статья для Вас. Мы расскажем, как посмотреть исходный код приложения Android прямо на вашем гаджете. Поехали!
Общие сведения
Большинство программ для ОС Android, как и большая часть самой операционной системы, написаны на языке программирования Java. А это значит, что посмотрев в исходный код программ Android, мы, скорее всего, увидим Java код с использованием Android SDK (которая включает в себя инструменты платформы Android). Повторюсь: чтобы понимать исходный код приложений, нужно иметь базовые знания Java и принципы работы Android.
Как узнать исходный код приложений Android?
Для начала скачайте приложение, исходный код которого Вас заинтересовал. Затем зайдите в Play Market и скачайте утилиту под названием Show Java. Именно она будет заниматься декомпилированием. Установили? Отлично, а теперь перейдем к самому интересному – извлечению исходного кода Android программы. Запускаем Show Java.
Выберите нужное приложение из установленных, или найдите его на SD карте. Теперь нужно выбрать декомпилятор. Я обычно выбираю CRF. Если возникнут проблемы – пробуйте JaDX.
Начнется декомпиляция программы. Это может занять некоторое время. Чем больше приложение – тем дольше декомпилятор будет доставать исходные коды. Пока вы ждете результата, почитайте о перспективных языках программирования.
По завершению процесса вы получите список пакетов с исходниками Android приложения. Конечно, это не 100% копия кода, которую писали разработчики этого приложения. Но основная логика сохраняется, разобрать не сложно. Что делать с исходниками? Что угодно. Смотрите, разбирайте, возможно Вам будут интересны некоторые “фичи” или особенности реализации функционала программы.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Просмотр кода программы
Извините за тупой вопрос. Я в программировании я профан, поэтому задам его максимально просто, чтобы вы поняли.
Программист создал программу на каком-то языке (любом). Скомпилировал и получился файл с программой. Этот файл программист дает пользователям.
Пользователь может имея один этот файл посмотреть код программы, внести изменения?
Про дизассемблер я слышал, но из описания в википедии не ясно, можно ли допустим перевести программу на машинный код, а потом этот код переделать в тот, на котором была написана программа?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Анализ кода программы на ошибки
Подскажите что-нибудь по теме нахождения ошибок в тексте программы (языка Паскаль скорее всего). С.
Просмотр кода программы
Здравствуйте. Подскажите пожалуйста, если у меня есть программа, могу ли я каким-то образом узнать.
Просмотр кода программы
Как посмотреть код готовой программы? Как то пару раз открыл код файла l2.exe Но забыл как это.
Просмотр кода программы на C++ Builder
Вопрос такой: Кто-то писал программу на C++builder, скинул мне папочку со всеми файлами которые.
Начнем с того, что «файлы с программой» (имея в виду исполняемый модуль) бывают разные.
Ну и конечно же, создать программу, машинный код которой никак не просмотреть, можно. Однако, это потребует известных трудозатрат и времени. А вот стоит ли овчинка выделки.
. CheshireCat дал ответ, но мне стало жалко всего мною написанного, поэтому всё же опубликую, может, поможет чем-то.
Нельзя. Вот представьте, Вам говорят: «Сделай так, как предписано Нормативным Документом РФ и Всея Человечества. » — но сам этот документ Вам не дают. Что Вы будете делать? Скажете, что незнание закона не освобождает от ответственности? А компьютеру что делать, если Вы ему не можете предоставить четкого описания того, что ему делать надо?
Это я к тому веду, что некоторый код ему всё же надо дать. Всегда.
Пример: под Windows весь код программы содержится в файле *.exe. Другой пример: весь код веб-программы содержится в *.js. Думаю, суть ясна.
Откуда Ваш вопрос возник о представлении программы и дезассемблировании? Полагаю, он исходит из двух тезисов, которые, полагаю, Вам окажутся очевидными:
1. Крайне затруднительно писать большую программу на низкоуровневом языке. Сейчас в машинных кодах, ровно как и на asm никто не пишет весь проект, пользуются C/C++/Pascal/D/. ибо так легче. Ровно по той же причине возникли CoffeScript, Dart и иже с ними, на которых пишутся большие сайты просто потому, что на них писать проще, чем на чистом JavaScript. Ровно по той же причине кроме Java существуют другие языки под JVM. Но результат всегда один и тот же: всякая Windows-программа будет exe, всякая JVM-программа будет в своём формате, всякое html-css-js приложение будет компилироваться в js. По-другому не будет.
2. Люди не хотят, чтоб их продукты воровали. Здесь exe-приложения занимают выгодную позицию, потому что скомпилированную программу дешифровать практически нереально. Для js есть обфускаторы; jvm-приложения, полагаю, тоже обладают чем-то подобным.
Говоря формально, любой может открыть в текстовом редакторе exe-файл и его изменить. Реально это невозможно. Проще написать с нуля программу на нормальном языке, чем разбираться в скомпилированном.
Помимо этого здесь действует принцип «Неуловимого Джо»: для некоторой программы оцените количество крупных компаний, которые были б готовы потратить время (
10-1000 тыс.долл.) для её декомпозиции. Я на вскидку могу назвать лишь единицы, начиная со Скайпа. 99% программистов не пишут такие программы.
Я надеюсь, что объяснил понятно.
Как Вы правильно выразились, «машинный язык» есть 0 и 1. 0 или 1 это один бит, в байте группы по 8 цифр, стало быть.
В то же время есть понятие кодировки (см. вики) для того, чтобы прдставлять текст в виде тех же самых 0 и 1, по байту на символ (грубо говоря).
Как правило, символы с кодами 0..16 — управляющие, 48..57 — цифры и т.п.
А что есть машинные коды? Это тоже таблица соответствия между числом и коммандой. Если таблица говорит, что 0x11 — это сложение, то всякое сложение будет кодироваться именно как 0x11.
Вообще это не только программ касается, а вообще любой не-текстовой информации.
Так вот блокнот открывает текстовый файл. Поэтому большую часть символов он «глотает», потому что они расцениваются как служебные, а остальные отображаются как некоторые символы. Поэтому и скопировать не получится. В этом смысле лучше пользоваться Notepad++.
Почему никак не узнать исходный код игры?
Объясните пожалуйста, почему я никогда не узнаю исходный код какой-нибудь игры пока разработчики его сами не выложат в открытый доступ или хакеры его не сольют?
В обычных приложениях его можно узнать через DotPeek, но в большинстве игр нет.
Почему нельзя узнать исходный код, как например достать текстуры из игры?
Почему после компиляции всё?
Если это всё как-то шифруют, то как работает эта шифровка?
Я понимаю вопросы глупые, но объясните мне пожалуйста как дурачку. Я просто не могу этого понять. =(
(Объясните пожалуйста на простых словах, без википедии, я не понимаю что там написано)
Вот и как голодному студенту узнать рецепт? Да, продукт перед ним. Да, он может расковырять свою порцию, отсортировать кукурузки и нарезку, по форме кубиков узнать каким ножом резали, подсчитать в граммах каждый ингридиент, фигакнуть соус на центрифуге, просветить спектроанализатором на химические элементы, прикинуть примерно из чего оно могло состоять. Но на это уйдет уйма времени и средств.
Потому куда важнее дать пояснение чем просто посмотреть чужой код
Как узнать код программы
Остальное не смотрел, но все что угодно можно нарисовать.
Ответ # 8 · | дата добавления: 02.09.2013 / 21:56 |
---|
Автор ответа: Дерепа Алексей |
Ответ # 9 · | дата добавления: 02.09.2013 / 22:31 |
---|
Автор ответа: Алексей Немиро |
Ответ # 10 · | дата добавления: 02.09.2013 / 22:38 |
---|
Автор ответа: Дерепа Алексей |
Ответ # 11 · | дата добавления: 03.09.2013 / 11:39 |
---|
Автор ответа: Алексей Немиро Но лучше, чтобы размер был фиксированным и не приходилось его отдельно рассчитывать. |
Ответ # 12 · | дата добавления: 07.09.2013 / 10:17 |
---|
Автор ответа: i32 |
Ответ # 13 · | дата добавления: 07.09.2013 / 11:36 |
---|
Автор ответа: Алексей Немиро
Степень и условия изменения программ не изначальными авторами определяется лицензией. Программы с открытым исходным кодом вполне могут быть платными для конечных пользователей. Декомпиляторы к этому вопросу никакого отношения не имеют. Декомпиляция чужих программ сама по себе является незаконной деятельностью. Декомпиляторы, особенно в случае с .NET Framework, могут быть необходимы разработчикам для тестирования безопасности кода, если автор хочет обезопасить код от кражи или от взлома. Сборки .NET декомпилировать очень легко. |
Ответ # 14 · | дата добавления: 07.09.2013 / 13:40 |
---|
Автор ответа: i32 |
Ответ # 15 · | дата добавления: 07.09.2013 / 17:38 |
---|
Автор ответа: Алексей Немиро При добавлении программы в каталоги, тип лицензии указывается обязательно.
Автор программы EasyWatermark не гарантирует работоспособность программы и качество выполнения поставленных задач. Программа бесплатная для некоммерческого использования. Условия коммерческого использования программы EasyWatermark и/или её компонентов обговариваются отдельно. Программа EasyWatermark и её компоненты защищены законами об авторских правах. Запрещено разбирать, декомпилировать, модифицировать, изменять программу и/или её части. Это типовые условия, можно часто встретить с похожей формулировкой. Можно использовать готовое лицензионное соглашение, чтобы своего не выдумывать. В свойствах программы обычно пишется владелец авторских прав: (c) Имя/название владельца. Лицензию/условия там обычно не пишут, места мало, да и редко кто туда заглядывает. Исходный код и его 11 составляющихТеперь, когда вы понимаете концепцию программирования, мы рассмотрим исходный код – его главные составляющие и принципы работы с ними. Часть 2 – Исходный кодВ предыдущей части мы затронули азы программирования, где рассказали о машинном языке, преобразователях, языках программирования и работе с CLI. Двигаемся дальше. Исходным кодом называется основной файл вроде Microsoft (.doc), но немного другой. Это текстовый файл, написанный с помощью простых редакторов, таких как Windows Блокнот. В предыдущем разделе мы перечислили, что нужно, чтобы интерпретаторы или компиляторы конвертировали исходный код в двоичный. Первый должен быть сохранен в файле, что передается для ввода в переводчик (преобразователь). Когда вы закончите писать код, запустите его через переводчик. Рассмотрим в качестве примера запуск кода на языке Python с использованием команды python. Начало работы: ваша первая программа3. Откройте в нем новый файл и введите следующее: Результат должен выглядеть так: Анатомия типичного кодаТеперь мы рассмотрим содержимое типичного файла исходного кода. Ниже приведены регулярные компоненты. Ключевые словаКороткие человекочитаемые слова, обычно называемые ключевыми. Они свойственны изучаемому вами языку и они особенны. Их просто нужно знать. Вот небольшой набор ключевых слов, часто используемых в Python. ИдентификаторыСлова, изобретенные вами. Да, не удивляйтесь! Вы, программист. Эти слова обычно называются идентификаторами. Они могут быть созданы вами или другими программистами. Они упакованы в плагины, более известные как библиотеки. Примером является библиотека Math. Она позволяет получить доступ к функциям, таким как квадратный корень (Math.sqrt), используемый в JavaScript. Многие языки программирования поставляются со множеством библиотек. Они обычно называются SDK (комплекты разработки программного обеспечения). Загружаются вместе с компилятором для дальнейшего создания технологий, приложений и проектов. Также существуют фреймворки, созданные, чтобы облегчить разработку проекта и объединить его различные составляющие. Некоторые идентификаторы в комплекте с выбранным языком не могут использоваться в качестве идентификатора пользователя. Примером является слово string в Java. Такие идентификаторы вместе с ключевыми словами называются Зарезервированными Словами. Они также являются особыми. Все ключевые слова являются зарезервированными. Также слова, которые вы выбираете, должны иметь смысл для тех, кто впервые их видит. Основные типы данныхЦелые числа могут быть знаковыми и беззнаковыми, большими и малыми. Последние фактически зависят от объема памяти, зарезервированного для таких чисел. Есть числа с десятичными частями, обычно называемые double и float, в зависимости от языка, который вы изучаете. Также существуют логические типы данных boolean, которые имеют значение true или false. Сложные типы данныхУказанные выше типы известны как элементарные, первичные или базовые. Мы можем создавать более сложные типы данных из приведенных базовых. Массив (Array) – это простейшая форма сложного типа. Строка (String) – это массив символов. Мы не можем обойтись без этих данных и часто используем их при написании кода. Комбинация символов – это строка. Чтобы использовать аналогию, строка для компьютера означает, что слово принадлежит человеку. Слово «термометр» состоит из 9 символов – мы просто называем это строкой символов. Обработка строк – это обширная тема, которая должна изучаться каждым начинающим программистом. Сложные типы данных поставляются с большинством языков программирования, которые используются. Есть и другие, такие как системы классов. Это явление также известно как объектно-ориентированное программирование (ООП). ПеременныеПеременные – это просто имена областей памяти. Иногда нужно сохранить данные в исходном коде в месте, откуда их можно вызвать, чтобы использовать. Обычно это место памяти, которое резервирует компилятор/интерпретатор. Нам нужно дать имя этим ячейкам памяти, чтобы потом их вспомнить. Рассмотрим фрагмент кода Python ниже: pet_name – пример переменной, и тип данных, хранящихся в pet_name, является строкой, что делает переменную строковой. Существуют также числовые. Таким образом, переменные классифицируются по типам данных. КонстантыКонстанты – это значения, которые не изменяются на протяжении всего жизненного цикла программы. Чаще всего в их именах используются заглавные буквы. Некоторые языки поддерживают создание постоянных значений, а некоторые – нет. Существуют строго типизированные языки программирования, в которых каждая переменная должна быть определенного типа. Выбрав тип один раз, вы больше не сможете его изменить. Java – хороший пример такого ЯП. Другие же не предоставляют эти функции. Они являются свободно типизированными или динамическими языками программирования. Пример – Python. Вот как объявить постоянное значение в JavaScript: ЛитералыВ каждом исходном коде существуют типы данных, которые используются повсюду и изменяются только в том случае, если их отредактировали. Это литералы, которые не следует путать с переменными или константами. Ни один исходный код не обходится без них. Литералы могут быть строками, числами, десятичными знаками или любыми другими типами данных. В приведенном выше фрагменте слово «Hippo» является строковым литералом. Это всегда будет «Hippo», пока вы не отредактируете исходный код. Когда вы научитесь кодить, узнаете, как управлять литералами таким образом, чтобы оставлять неизменной большую часть кода. Пунктуация/СимволыВ большинстве написанных программ вы найдете различные знаки препинания в зависимости от выбранного языка программирования. Например, в Java используется больше знаков препинания, чем в Python. Основные знаки включают в себя запятую (,), точку с запятой (;), двоеточие (:), фигурные скобки (<>), обычные круглые скобки (()), квадратные скобки ([]), кавычки («» или »), вертикальную черту (|), слэш (\), точку (.), знак вопроса (?), карет (^) и процент (%). Добро пожаловать в мир программирования, где знаки препинания – ваши лучшие друзья. Скоро вы обнаружите, что в коде их всегда очень много. ОператорыШансы, что вы будете писать исходный код для выполнения какой-нибудь операции, крайне высоки. Любые языки программирования, которые мы используем, включают в себя множество операторов. Среди применяемых выделяют сложение (+), деление (/) умножение (*), вычитание (—) и знак больше (>). Операторы обычно классифицируются следующим образом: КомментарииДокументация будет важным аспектом деятельности в сфере программирования. Это то, как вы объясняете свой код другим программистам. Подобное делается с помощью комментариев, которые добавляются к различным частям кода. С помощью комментариев вы можете направлять других программистов через написанную программу. Компилятор игнорирует строки кода, которые являются комментариями. Объявление комментариев разное для разных языков. Например, # используется для ввода комментариев в языке Python. Вот пример комментария в Python: Пробелы и вкладкиЭто пробелы, созданные между кодом, который вы пишете. Они ставятся при нажатии пробела или клавиши табуляции на клавиатуре. Двигаемся дальшеВы познакомились с исходным кодом и изучили его содержимое. Скомпилированный или преобразованный код может не запускаться по ряду причин. Эти причины обычно связаны с ошибками. Действие поиска и удаления ошибок называется отладкой и является навыком, который вы должны изучить. Ошибки мы рассмотрим в следующей части. Убедитесь, что вы правильно настроили Python в своей компьютерной системе, и запустите свою первую программу. ВикторинаОпределите элементы, которые мы изучили, в приведенном ниже фрагменте кода Java:
|