Сейчас на форуме: -Sanchez- (+8 невидимых) |
eXeL@B —› Основной форум —› Взлом Android приложений |
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 38 . 39 . >> |
Посл.ответ | Сообщение |
|
Создано: 12 сентября 2011 12:37 · Поправил: SaNX · Личное сообщение · #1 В теме обсуждаются вопросы взлома под андроид и соответствующие тулзы. ТУТОРИАЛЫ: ТУЛЗЫ: JEB ApkAnalyser GikDbg В аттаче fernflower, очень годный жава декомпилер. 0ece_06.12.2012_EXELAB.rU.tgz - fernflower.jar ----- SaNX | Сообщение посчитали полезным: 4kusNick, WmLiM, gsx3000, Maximus, CoolMax_86, Rustem, Oott, streit, t0ShA, BAHEK, sooqa, Ara, VodoleY, vden, Thegodofviruses, SDFnik, Soso, ff0h, RAMZEZzz, quency, XroM_N70, Alinator3500, Coderess, samtehnik, Isaev, dgyst, ALSSL, dosprog, omeh2003, d0wn, ELF_7719116, Bad_guy |
|
Создано: 28 марта 2016 16:08 · Поправил: [wl] · Личное сообщение · #2 |
|
Создано: 29 марта 2016 02:00 · Поправил: Apokrif · Личное сообщение · #3 |
|
Создано: 01 июня 2016 02:51 · Личное сообщение · #4 |
|
Создано: 01 июня 2016 04:31 · Поправил: JST · Личное сообщение · #5 |
|
Создано: 01 июня 2016 15:52 · Личное сообщение · #6 |
|
Создано: 02 июня 2016 03:28 · Личное сообщение · #7 Quadcon пишет: Ну так в первом сообщении топика есть ссылка на дебаг *.so, да и в чем сложность то? Берете ida в руки и в перед. Я выяснил, что программа накрыта протектором DexProtect. У меня вопрос файлы *.so.dat ее результат деятельности, это те самые файлы, что в той статье в шапке или тут совсем другой подход снятия защиты ? Меня интересует как снять этот протектор с андроид проги. Как я понял основная проблема в нем. Про иду, я пробовал засунуть эти файлы в иду, не запускается анализ их. |
|
Создано: 08 июня 2016 12:39 · Личное сообщение · #8 mixer632 пишет: Про иду, я пробовал засунуть эти файлы в иду, не запускается анализ их. В таком виде защиты лучше действовать с правами root на устройстве. Когда приложение запущено, это so.dat приводятся в нормальный вид где то во внутренней памяти и уже потом запускаются (это лишь предположение). Вот в этот момент их и надо скопировать отдельно куда-то и уже анализировать их. |
|
Создано: 08 июня 2016 13:06 · Поправил: mixer632 · Личное сообщение · #9 chelpa, работаю на виртуальном устройстве с рутом. А как правильно грузить в иду потом уже скопированный *.so либу. Я знаю список функций нативных, которые она реализует, но когда в иду гружу, она не определяет имена функций. Мне хочется через иду найти, где код этих функций там. Она там определила функции просто как обычно sub_номер. Анализ запускается на *.so файле, перехваченном с устройства, но имена функций не находит. |
|
Создано: 08 июня 2016 15:29 · Личное сообщение · #10 |
|
Создано: 08 июня 2016 21:36 · Личное сообщение · #11 |
|
Создано: 09 июня 2016 17:10 · Личное сообщение · #12 |
|
Создано: 09 июня 2016 22:47 · Личное сообщение · #13 |
|
Создано: 10 июня 2016 00:37 · Поправил: DenCoder · Личное сообщение · #14 mixer632 пишет: Я знаю список функций нативных, которые она реализует, но когда в иду гружу, она не определяет имена функций. У *.so должен же быть экспорт, весь экспорт по именам. mixer632 пишет: у меня в смали файле есть список прототипов нативных функций типа вот пример public static native void aadb(Object var0, Object var1); Мне хочется через иду определить с какой команды каждая эта нативная функция в этой либе начинается Смали - это, грубо говоря, байт-код от компилятора джавы, *.so - машинный код для ARM. Если в приложении на джаве как-то используется so-модуль, то связь с ним через импорт, ида должна его показывать, хотя бы минимум, соответсвенно в *.so ида должна показывать экспорт, иначе никак. Где-то как-то должна быть связь public static native void aadb(Object var0, Object var1) с настоящим названием, если это прототип функции из *.so, иначе бы не грузилось и не работало... Добавлено спустя 6 минут DenCoder пишет: У *.so должен же быть экспорт, весь экспорт по именам. Попробуйте найти dlopen() и dlsym(), через них динамическая линковка/импорт ----- IZ.RU |
|
Создано: 10 июня 2016 01:41 · Личное сообщение · #15 DenCoder пишет: соответсвенно в *.so ида должна показывать экспорт, иначе никак. Да, но только в экспорте всего одна функция JNI_OnLoad. Функции dlopen() и dlsym() действительно тут есть. DenCoder пишет: Если в приложении на джаве как-то используется so-модуль Да используется, к примеру вызов aadb будет там ha.aadb(парам1, парам2); |
|
Создано: 10 июня 2016 10:52 · Личное сообщение · #16 mixer632 Смотри внутри JNI_OnLoad регистрацию интерфейсов. Там будут все маппинги. ----- старый пень | Сообщение посчитали полезным: DenCoder |
|
Создано: 10 июня 2016 12:11 · Личное сообщение · #17 mixer632 То, что выделено в окне функций жирным - импорт. j_j_dlsym - двойной джамп на dlsym(), слабый признак обфускации... но можно через эту функу выйти на заветный код. Правда имена импортируемых функций скорей всего шифрованы... в этом случае расшифровать их стоит определённого труда без дебага. Про JNI_OnLoad не знал... джавовский обработчик загрузки модуля... ----- IZ.RU |
|
Создано: 12 июня 2016 20:31 · Поправил: Apokrif · Личное сообщение · #18 r_e пишет: Смотри внутри JNI_OnLoad регистрацию интерфейсов. Там будут все маппинги. Не обязательно. Это просто рекомендуется делать маппинги (для не экспортируемых функций) в JNI_OnLoad. Маппинги регистрируются с помощью RegisterNatives и её можно вызвать во многих местах. Я вызываю RegisterNatives() в статическом методе моего класса и у этого класса "вдруг" появляется еще вагон функций: Code:
| Сообщение посчитали полезным: DenCoder |
|
Создано: 14 июня 2016 16:22 · Личное сообщение · #19 Apokrif, я пропатчил в приложении метод расшифровки assests файлов *.so.dat и classes.dex.dat. Он их расшифровывает и копирует потом себе. Я убрал всю расшифровку, а туда подложил уже расшифрованные. Но при старте прога теперь не падает, но libdexprotector.so в катлог вижу ловит сигнал SIGBUS и прога висит. Можете подсказать почему так получается ? Сама прога только расшифровывает либу и подгружает в память ее через эту функцию void java.lang.Runtime.load(java.lang.String,java.lang.ClassLoader) |
|
Создано: 14 июня 2016 21:14 · Личное сообщение · #20 mixer632 пишет: но libdexprotector.so в катлог вижу ловит сигнал SIGBUS и прога висит. Всё зависит от того, каким дебаггером отлаживаете. Встречался на ARM с такой ситуацией, долго не мог понять, в чём дело... Вышел случайно на инфу, что происходит SIG-спам (предполагаю, что из-за неправильного ответа в прошлом), а дебаггер не может на это нормально отреагировать, и получает либо череду SIG, либо просто молчание ввиду очередного не-ответа. ----- IZ.RU |
|
Создано: 14 июня 2016 22:06 · Поправил: mixer632 · Личное сообщение · #21 DenCoder, я без дебага запускал на устройстве приложение. Как-то пробовал как тут https://habrahabr.ru/post/150825/ собрать приложение для дебага, но апктул с опцией -d не хочет собирать. Автор в статье говорит, что это принципиально собирать с опцией -d. Добавлено спустя 4 минуты DenCoder, в моей проге нашел причину падения, она считывает сигнатуру примерно так. Code:
|
|
Создано: 15 июня 2016 08:00 · Поправил: Apokrif · Личное сообщение · #22 mixer632 пишет: в моей проге нашел причину падения, она считывает сигнатуру примерно так. ... и байты сигнатуры участвуют в расшифровке дех и библиотеки, то есть с левой подписью прога просто падает из-за неверной расшифровке. Закиньте старую сигнатуру как строку в java и замените все вызовы getPackageInfo(..., PackageManager.GET_SIGNATURES)? |
|
Создано: 17 июня 2016 01:27 · Поправил: mixer632 · Личное сообщение · #23 DenCoder пишет: j_j_dlsym - двойной джамп на dlsym(), слабый признак обфускации... но можно через эту функу выйти на заветный код. Вы предполагаете, что в смали файлах может быть вызов через эту функцию ? Я уже такое искал, да и просмотрел весь код от момента загрузки либы до передачи управления протом основной программе. Сам прот грузит эту либу и в самом конце его работы вызывают какую-то нативную функцию с такими параметрами: Code:
Все инт параметры не зависят от глобальных переменных и вычисляются перед входом в эту функцию, то есть всегда одни и те же туда поступают инты. А объект это туда передают this, то есть указатель на сам класс, в котором этот прототип написан. Вызывает ее через метод invoke примерно так: Code:
В модифицированном приложении всегда попадает на этот throw почему-то. Как думаете может эта функция и отвечает за настройку тех функций, которых нет в экспорте изначально, потому что после этого он передает управление уже проге, и она начинает работать уже с методами нативными. Еще интересует почему эта функция успешно выполняется протом, ее тоже нет в экспорте библы. |
|
Создано: 17 июня 2016 17:17 · Поправил: Apokrif · Личное сообщение · #24 mixer632 пишет: Code:
| Сообщение посчитали полезным: DenCoder |
|
Создано: 17 июня 2016 17:19 · Поправил: mixer632 · Личное сообщение · #25 |
|
Создано: 19 июня 2016 19:20 · Личное сообщение · #26 |
|
Создано: 19 июня 2016 19:44 · Поправил: mixer632 · Личное сообщение · #27 Apokrif, я именно так и хотел сделать, но после запроса на их офф сайте ничего не приходит на почту, хотя пишут что за 24 часа ответят. Сделал запросы с яндекс почты, потом с гугловой, подумал яндекс игнорят, но уже неделю молчат и не дают триал скачать. Может есть где на варезниках его скачать ? По сути защиту я снял, ведь все смали файлы вытащил, которые он при запуске расшифровывает и быстро удаляет, их вытащил, *.so библиотеку тоже вытащил, собрал их все вместе и в стартовом файле прописал загрузку библы: Code:
Но как только прога пытается вызвать нативный метод, то падает, а в катлог выдает, что не видит реализацию метода. Как бы экспорт в этой либе настроить, ведь падает, так как нет в экспорте этих методов. Добавлено спустя 1 час 35 минут Пробую в своей тестовой проге загрузить эту либу, но получаю ошибку: Code:
Не знаете почему JNI_OnLoad ошибку возвращает при загрузке, как это обойти ? |
|
Создано: 20 июня 2016 07:28 · Поправил: Apokrif · Личное сообщение · #28 mixer632 пишет:Но как только прога пытается вызвать нативный метод, то падает, а в катлог выдает, что не видит реализацию метода. Как бы экспорт в этой либе настроить, ведь падает, так как нет в экспорте этих методов. … Не знаете почему JNI_OnLoad ошибку возвращает при загрузке, как это обойти? Вам ответили раньше, что если нативных методов нет в экспорте, то они скорее всего регистрируются в JNI_OnLoad(), который у вас не отрабатывает правильно (т.к. видит что-то левое). Дебажте саму JNI_OnLoad(), что еще то можно посоветовать? |
|
Создано: 20 июня 2016 22:04 · Личное сообщение · #29 Apokrif пишет: Дебажте саму JNI_OnLoad() Посоветуйте как это делать. Пробую как тут http://www.vans-soft.ru/2016/01/android.html через gikdbg отладчик, но он очень глюченный, удается податтачиться к приложению с либой. Я так понимаю после запуска приложения и старта либы выполняется jni_onload() и в экспорте должны появиться скрытые методы ее, но в этом отладчике только те, что изначально ида показывает. На счет отладчика нативных библиотек что лучше этот gikdbg или андроид сервер от иды или какие-то другие может еще посоветуете. |
|
Создано: 21 июня 2016 06:04 · Поправил: Apokrif · Личное сообщение · #30 >Я так понимаю после запуска приложения и старта либы выполняется jni_onload() и в экспорте должны появиться скрытые методы ее Нет, не появятся. Я, честно говоря, не знаю, как остановится на jni_onload(). Для начала можно посмотреть в листинге, что на какие плюсовые фукнкции мапятся жабовые в jni_onload(). Это про условии, что сама jni_onload() не зашифрована никак. Она должна выглядеть примерно как описано Если зашифрована, то нужно доставить триал… >На счет отладчика нативных библиотек Я пользую только ida... |
|
Создано: 21 июня 2016 10:56 · Личное сообщение · #31 Apokrif пишет: Я, честно говоря, не знаю, как остановится на jni_onload(). Я думаю только модифицируя ее бесконечным циклом наверно ловить. Apokrif пишет: Для начала можно посмотреть в листинге, что на какие плюсовые функции мапятся жабовые в jni_onload(). Я так понимаю надо выловить RegisterNatives() в этой функции, но это можно сделать без захода во все методы, трассируя jni_onload() или нет ? Как бы бряк на нее поставить в ида. И еще если другой подход, мне нужно найти метод, который она динамически экспортирует, этот метод реализует пост и гет запросы. Можно без вылавливания RegisterNatives(), как-то найти, где пост запросы в ида дизасм коде ее или бряк поставить на что-то, связанное с http пост запросами ? |
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 38 . 39 . >> |
eXeL@B —› Основной форум —› Взлом Android приложений |