Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/75: Рейтинг темы: голосов - 75, средняя оценка - 4.88
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028

Как достать исходный код из APK?

27.07.2016, 15:46. Показов 16223. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сразу оговорюсь, пытаюсь "вскрыть" свою программу, дабы увидеть её внутренности глазами взломщика и помешать ему.
Тот же apktool запросто выковыривает ресурсы. Мне это не страшно, все критичные данные я аккуратно зашифровал.
А вот если кто-либо доберется до алгоритма дешифрования, то это будет конец.
Сабж.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.07.2016, 15:46
Ответы с готовыми решениями:

Как конвертивровать apk файл если имеется exe, jar и исходный код программы?
Как конвертивровать apk файл если имеется exe, jar и исходный код программы?

Как достать исходный код?
Имеется программа, написанная на Delphi. Нужен исходный код программы. Возможно ли это? Если да - то как сделать?!

достать исходный код из .exe
я прекрасно понимаю, что не первая с этой проблемой, но просто ужас как срочно нужен код! декомпиляторы не спасают(( они дают мне...

14
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
27.07.2016, 18:08
+1, ну а как используете ресурсы? Куда-то распаковываете или всё в оперативной памяти?
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
27.07.2016, 22:21  [ТС]
Всё в оперативке. там немного.
А картинки и звуки ничего ценного не представляют.
0
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
27.07.2016, 22:53
+1, если понадобится доберутся, чтобы ты не сделал.
1
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
28.07.2016, 11:34
Цитата Сообщение от DarkVortex Посмотреть сообщение
+1, если понадобится доберутся, чтобы ты не сделал.
Не понимаю, за что тут "спасибо".
Кто вообще не защищается, первый кандидат на то, что у него всё утащат. Чтобы не быть голословным, приведу пример. Зная, что у соседнего отдела есть пароль от sa к БД, я хотел защитить структуру и данные. Однако на известном форуме по БД все тролли были способны лишь на советы типа "как ни защищайся, всё равно всё украдут", ни одного грамотного совета не было. В итоге структуру БД украли. Поменять пароль я тогда не рискнул, т.к. это могло привести к нехорошим последствиям. Вот и результат. Им за это даже ничего не было, хотя их вину я доказал. После уже сделал комплекс мероприятий и поменял пароль от sa.
0
400 / 343 / 85
Регистрация: 17.10.2014
Сообщений: 1,015
28.07.2016, 11:48
Цитата Сообщение от DarkVortex Посмотреть сообщение
если понадобится доберутся, чтобы ты не сделал.
Цитата Сообщение от CoolMind Посмотреть сообщение
Не понимаю, за что тут "спасибо".
не, ну по факту то, так и есть...однако не стоит расценивать данную фразу как призыв никак не защищаться
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
28.07.2016, 12:42
androbro, если фраза стоит сама по себе одна, то по-другому её и не расценить
0
145 / 134 / 22
Регистрация: 28.06.2015
Сообщений: 674
28.07.2016, 13:21
Защищать обязательно, максимально. А с такой политикой можно и мыться перестать. А зачем, все равно испачкаешься.
Чем больше стоит защиты, тем дороже взлом, тем сильнее нужно мотивировать, того кто будет ломать. А если защита еще и самопальная, то это еще сложнее, не стандартный алгоритм, нужно еще больше времени, следовательно еще больше денег.

Добавлено через 2 минуты
Цитата Сообщение от +1 Посмотреть сообщение
А вот если кто-либо доберется до алгоритма дешифрования, то это будет конец.
Это кому то должно быть очень нужно. Главное что бы школьники не смогли, они первые хакеры.
Опять же сейчас к примеру в зоне ru, стало намного легче защищать авторское право. Не так конечно просто, как хотелось бы, но тем не менее. Можно блокировать сайты на которых будут распространять, пиратский контент. Более того если взяться за дело, можно привлечь администратора сайта. На самые реальные деньги, при этом не важно сам админ ломал прогу, или не сам, на сайте есть значит он виноват.
0
400 / 343 / 85
Регистрация: 17.10.2014
Сообщений: 1,015
28.07.2016, 13:48
Цитата Сообщение от Vladimir93 Посмотреть сообщение
Защищать обязательно, максимально.
да что вы говорите.
надо взвешивать то, какие потери вы понесете от взлома, и то, какие затраты времени и денег потребует защита. после чего найти золотую середину.
согласитесь, глупо для какой нибудь офлайн аркады городить "максимальную" защиту, что бы какой нить школьник Вася не мог накрутит себе каких либо монеток
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
28.07.2016, 18:04
androbro, здесь я склонен согласиться и с вами, и с Vladimir93 тоже. Вопрос в данном контексте такой: что значит максимально? Это субъективно. Один человек разрабатывал программу год и готов защитить её, потратив месяц. Другой вложил N килорублей и заказал дизайн, потратил тоже год. В защиту он вложится несколько подороже. Для него это будет другой максимум.
0
319 / 13 / 7
Регистрация: 29.06.2014
Сообщений: 65
28.07.2016, 20:43
делал для автошколы небольшое приложение в виде увлекательной игры тренажера с вопросами ПДД. Ничего особенного, вопросы и варианты ответов. Решил сделать на Эйр, т.к. нужен был красочный интерфейс со многими эффектами и т.д., да и вообще, нравится мне писать на as3.
Так вот, долго думал как же спрятать ответы от кулхацкеров и конечно тот самый секретный ключ для расшифровки xml файлов. Решил просто запутать код

Чтение файла
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
file = File.applicationStorageDirectory.resolvePath(path);
               var bytes:ByteArray = new ByteArray();
               fileStream = new FileStream();
               fileStream.open(file, FileMode.READ);
               fileStream.readBytes(bytes);
               fileStream.close();
               var key:ByteArray = Hex.toArray(gen() as String);
               var md5:MD5 = new MD5();
               key = md5.hash(key);
               var pad:IPad = new PKCS5;
               var aes:ICipher = Crypto.getCipher("simple-aes-128-cbc", key, pad);
               pad.setBlockSize(aes.getBlockSize());
               aes.decrypt(bytes);
               bytes.position = 0;
               prefsXML = XML(bytes.readObject());
Функция генерирующий нужный ключ
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
private function gen():String
        {
            var arr:Array = [];
            for (var i:int = 1; i < 5; ++i)
            {
                var b:String = "t1NH0WQ?oStPcyN2qq_CU1RHRw";
                var diff:int = 185;
                arr.push(Global.EMAIL.length * i * Global.APP_NAME.length);
                var alt1:String = "Pfl+8LoVh4Uu186Y";
                var alt2:String = "kohDZ/F0suaAiW9lhWJc";
                var alt3:String = "rz8xzZuKpLB2B";
                var alt4:String = "jX59yie4PzdLylDfQFbn+";
                if (arr.length > 82 && arr.length < 65 && 87 && diff)
                {
                    arr.reverse();
                    for each (var item:String in arr)
                    {
                        var def:int = arr.length + Math.random() * 12;
                        
                        for (var j:int = 0; j < b.length; j++)
                        {
                            def++;
                            def + arr.length * (Math.random() * Global.EMAIL.length);
                            if (def > b.length || def < diff && b.length != 0)
                            {
                                return arr[12] + [13] + [28] + [4] + arr[11];
                            }
                            else if (b.length > arr[12] + [13])
                            {
                                return b;
                            }
                            else
                            {
                                return alt1.concat(alt2 + alt3 + alt4);
                            }
                            
                        }
                    }
                }
                
            }
            
            var arrr:String = "4XFErS37bt+Os6";
            return String(arr[0] + [1] + [2] + [3] + arr[0]);
        
        }
Представьте себя на месте взломщика, какой ключ может выдать это функция?
Вот таким простым способом можно защитить свои данные
0
400 / 343 / 85
Регистрация: 17.10.2014
Сообщений: 1,015
29.07.2016, 09:40
Цитата Сообщение от Performans Посмотреть сообщение
долго думал как же спрятать ответы от кулхацкеров
вы серьезно?
вот он, пример с явной переоценкой интереса взлома своего приложения...вот смысл взламывать приложение если ответы заведомо известны(задачники, как я помню, уже идут с ответами, или тот же самый интернет)...тут если только "хакер" преследует исключительно спортивный интерестак как тренить на взломанном приложении, где к примеру сразу виден ответ, результата никакого не даст.
Однако если защита была сделана в первую очередь для себя, так сказать набить руку, то весьма похвально
0
319 / 13 / 7
Регистрация: 29.06.2014
Сообщений: 65
29.07.2016, 11:18
Цитата Сообщение от androbro Посмотреть сообщение
вот он, пример с явной переоценкой интереса взлома своего приложения...вот смысл взламывать приложение если ответы заведомо известны(задачники, как я помню, уже идут с ответами, или тот же самый интернет)...
Имелось в виду защита от плагиата, отличиться уникальностью своего контента с конкурирующими школами. Хотя, если сильно захотеть можно и без взлома заскринить экран и переписывать все ручками)
0
 Аватар для Valakin
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
29.07.2016, 11:48
переписывают на себя приложения только для того чтобы туда свою рекламу вставить

можно ли от этого защититься? вряд ли

есть идеи?

все придет к тому что логику надо писать на сервере, а это уже не мобильное программирование по сути
0
100 / 79 / 9
Регистрация: 03.08.2014
Сообщений: 447
30.07.2016, 07:36
Performans,
Есть хороший способ решить вашу проблему, но он тоже, увы, не гарантирует 100% защиту.
Это вообще убрать ответы из приложения. Ответы должны храниться на сервере, на который пользователь будет посылать свой выбор по картинкам ПДД.
Не стоит бояться применять сервер в мобильных приложениях, учитывая распространение мобильного интернета. Да и при грамотном планировании трафик будет не слишком большой.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.07.2016, 07:36
Помогаю со студенческими работами здесь

Достать исходный код application из Oracle Application Server
Господа, возникла проблема. Понадобилось вытянуть исходники одного приложения из Oracle Application Server. С java не знаком, а нужно...

Как узнать исходный код метода из dll через код C#?
Как узнать исходный код метода из dll через код C#? помогите, пожалуйста!! :sorry:

Как получить исходный код *.exe или отредактировать его исполняемый код?
Собственно возможно ли декомпилить его так, чтобы можно было потом обратно скомпилировать? Или хотя-бы отредактировать код, только не...

Как java код скомпилировать в apk?
Здравствуйте , интересует вариант компиляции java кода , под андроид .У меня стоит 3 ide netbeans,eclipse и android studio , как в них...

Как вставить исходный код ?
Извиняюсь за глупый вопрос (ибо я начинающий), как вставить исходный код программы в Delphi ? Если тупо скопировать из блокнота и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru