Сейчас на форуме: -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, очень годный жава декомпилер. ![]() ----- SaNX ![]() |
|
Создано: 27 июня 2016 16:46 · Личное сообщение · #2 r_e пишет: Второй ребейз более долгий потому что ремапится уже специфичный модуль. Это понятно, непонятно, почему так долго? Если модуль будет более-менее нормального размера - он уже часами будет ремапится? Странно что при этом меняется состав экспорта. Это вы по Ctrl+E смотрите или в окне экспорта модуля?По двойному клику на /data/app/ida.debug.hellojni2-2/lib/arm/libhello-jni.so в окне Module. Новой окно "Module: libhello-jni.so" появляется в том же доке, что и окно "Module". Приеду домой - проверю. Надо бы для писюшных DLL-ей тоже проверить, можно ли добраться до результатов анализа? ![]() |
|
Создано: 27 июня 2016 19:47 · Личное сообщение · #3 Apokrif Некоторые защиты и модули по несколько раз могут ремап вызывать. Я успеваю поужинать пока грузится ))) По Ctrl+E тебе показывает точки входа модуля, который ты в статике грузил. По Modules - то что ида смогла распарсить в экспорте на удаленной системе. Отличия могут быть, но если их много, то вопрос а тот ли ты модуль вообще грузишь? Попробуй по Ctrl+E перейти на какое-нибудь имя и посмотреть куда тебя отмапило. ----- старый пень ![]() |
|
Создано: 28 июня 2016 21:05 · Личное сообщение · #4 r_e пишет: По Ctrl+E тебе показывает точки входа модуля, который ты в статике грузил. Проверил. По Сtrl-E открывается окно с 38 функциями окно "Module: libhello-jni.so" – 44 (все те же и еще несколько) при анализе было 69 По Сtrl-E одинаково при открытии libhello-jni.idb и после Attach process (как и должно быть) Моей переименованной функции там нет (XXX_Java_ida_debug_hellojni2_MainActivity_stringFromJNI) А есть её оригинальное имя. И найти её XXX_Java_* тоже нельзя (очевидно) Подскажите, что еще можно поменять при анализе, чтобы это было видно после Attach process? ![]() |
|
Создано: 28 июня 2016 21:16 · Личное сообщение · #5 Apokrif пишет: А есть её оригинальное имя. Пишу по памяти, могут быть ошибки. В окнах модуля и экспорта должно быть оригинальное имя, которое публичный экспорт. А то что ты переименовывал в базе ты, по идее, должен видеть уже при переходе на эту функцию. Еще можешь попробовать Shift+F4 вроде (окно Names что ли) и там уже поискать твое назначенное имя. Если я правильно понял то проблема в том что просле аттача ты не можешь найти свою функцию? Можешь еще такой трюк попробовать. До аттача перейди на свою функцию и Alt+M, Enter - будет назначена метка с именем. После аттача нажми Ctrl+M и выбери эту метку чтоб быстро перейти на нее. Хз то ли это что тебе нужно ))) ----- старый пень ![]() |
|
Создано: 28 июня 2016 22:28 · Личное сообщение · #6 |
|
Создано: 28 июня 2016 23:01 · Поправил: mixer632 · Личное сообщение · #7 r_e пишет: Можешь еще такой трюк попробовать. Вообще мы писали, что после аттача ида не видит наш анализ функций и это доставляет неудобства при отладке. Ведь код во многих местах становится красным снова (это было убрано в процессе ручного анализа). Кстати как поставить бряк на доступ на всю память либы, то есть как в оллудбг когда хотят поймать момент вызова в либу, но не знают конкретно на что бряк ставить. Вот хочу таким методом выловить функции в либе, которые динамически экспортируются. Кстати они обязательно через registernatives() в JNI или может есть еще способы сделать, беглым просмотром по коду не нашел просто эту функцию. ![]() |
|
Создано: 28 июня 2016 23:41 · Поправил: Apokrif · Личное сообщение · #8 Посмотрел, что либа грузиться по 9B709000: loaded /data/app/ida.debug.hellojni2-2/lib/arm/libhello-jni.so Сделал Rebase для проанализированной либы (типа думал сэкономить) Моя функция сидит на 9BC39C68 Вот что получается после Attach process 1: Если либа НЕ загружена: Rebasing program to 0xB6F82BA0... (15 сек) Debugger: attached to process /system/bin/app_process32_original (pid=16487) Загружаем либу... Rebasing program to 0x9B709BA0... (5 мин) 9B709000: loaded /data/app/ida.debug.hellojni2-2/lib/arm/libhello-jni.so Моя функция на 9BC39C68, установленные на ней бряки работают. Зачем было делать 1-й Rebasing на 0xB6F82BA0 непонятно, но это привело к длинному 2-ому Rebasing 2: Если либа уже загружена: Rebasing program to 0x9BBDFBA0... 9BBDF000: loaded /data/app/ida.debug.hellojni2-2/lib/arm/libhello-jni.so 70652000: loaded /data/dalvik-cache/arm/system@framework@boot.oat B6F72000: loaded /system/bin/linker Rebasing program to 0xB6F82BA0... Debugger: attached to process /system/bin/app_process32_original (pid=16940) Т.е. два Rebasing program поменялись местами! Либа загрузилась на 9BBDF000 Функция из неё оказалась на 9BBDFC68 А моя проанализированная и переименованная функция оказалась на B6F82C68 Т.е. модули разъехались! ![]() При этом в окне "Module: libhello-jni.so" осталось всего 2 функции! В 1-ом варианте, Shift+F4 вроде (окно Names) есть все мои проанализированные и переименованные функции! Огромное спасибо! А вот что делать со 2-м вариантом, когда либа уже загружена, совсем непонятно... До кучи, попробовал сделать disable aslr способом для Не вышло - всё время грузит либу по разным адресам... два apk и сорцы ![]() |
|
Создано: 30 июня 2016 04:56 · Личное сообщение · #9 |
|
Создано: 30 июня 2016 07:59 · Личное сообщение · #10 |
|
Создано: 30 июня 2016 08:21 · Личное сообщение · #11 mixer632 пишет: А как так может быть, что в либе около 5000 скрытых функций имеется r_e точно описал как проверить, подхватился ли и правильно ли за-Rebase-ился наш анализ или нет: По шагам: Открываем в IDA нашу проанализированную либу. Делаем Attach process. (Для примера, наша либа называется libhello-jni.so) В окне Module делаем двойной клик на libhello-jni.so Открывается "Module: libhello-jni.so" В нём двойной клик по любой функции Запоминаем адрес Нажимаем Сtrl-E Открывается "Names" В нём двойной клик по ТОЙ ЖЕ функции Если перешла на тот же адрес - наша проанализированная либа и загруженная из Attach process совпали, можно радоваться и дебажить. Если нет - то ![]() Почему могут не совпасть - я писал чуть выше. Глюк это IDA или фига я не знаю. Хорошо бы если кто-то проверил на 6.9 Еще один косвенный индикатор, если Rebase прошел слишком быстро - то точно не совпало. ![]() |
|
Создано: 30 июня 2016 14:05 · Поправил: mixer632 · Личное сообщение · #12 reversecode пишет: idb надо показывать Прикрепил. http://rgho.st/6NxhbwPMQ Добавлено спустя 6 минут reversecode пишет: откуда взялась цифра про 5тыс скрытых ? Из смали файла, в котором описаны прототипы нативных методов. Скрытые - то есть в экспорте отсутствуют до запуска. Вот этот смали http://rgho.st/8gMVBssSl в нем около 3500 фунок нативных, а в ида показывается только 523 после анализа. ![]() А где сидят оставшиеся 3000 получается ? ![]() |
|
Создано: 30 июня 2016 14:16 · Поправил: reversecode · Личное сообщение · #13 позже отписал Добавлено спустя 9 минут mixer632 пишет: в нем около 3500 фунок нативных, а в ида показывается только 523 после анализа. это все не экспортируемые функции, к нейтиву от явы вообще отношения не имеют как я вижу, либо у вас ида не правильно сошку распарсила, но экспорт там только одна функция JNI_OnLoad mixer632 пишет: А где сидят оставшиеся 3000 получается ? получается что не 3000, а все 3500, потому что те 523 к ним отношения не имеют)) ![]() |
|
Создано: 30 июня 2016 14:41 · Поправил: mixer632 · Личное сообщение · #14 reversecode пишет: либо у вас ида не правильно сошку распарсила Вот посмотрите, прикрепил либу. Я думаю jni_onload() где-то в своем коде их экспортирует видимо скрытно вызывая registernatives(). Там еще после загрузки либы защита вызывает эту функцию: Code:
А после уже передает управление в пользовательский код, из которого уже запускаются остальные нативы, но если ту первую пропустить, то при вызове других будет ошибка, что не найдена реализация в logcat. То есть как я понял при загрузке registernatives() добалвяет ead() функцию, а она при вызове все те 3500. Добавлено спустя 3 часа 24 минуты Я нашел вот сам вызов Registernatives(), но не пойму куда адрес функции в его параметрах указывает. ![]() По докам структура вида: Code:
То есть 3 дворд там 4da21409 адрес функции, но этот адрес отсутствует в секции либы, он указывает в секцию debug357. Может я неправильно тут смотрю, вроде ведь должен указывать в либу этот адрес ? ![]() ![]() |
|
Создано: 01 июля 2016 08:52 · Поправил: VodoleY · Личное сообщение · #15 Apokrif пишет: Взял простейший код отсюда http://www.hexblog.com/?p=809 вот засел тоже покурить эту траву.. есть просьба.. для особо одаренных.. можно скомпиленный ida.debug.hellojni выложить? PS касательно ребейза.. у меня ида просы высыпается в креш. правда либа 17 метров.. PSS для себя заметки делаю. может комуто тоже сгодится jmp -2 FE E7 ->jmp short -2 FE FF FF EA ->jmp long -2 ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 01 июля 2016 16:49 · Личное сообщение · #16 VodoleY пишет: вот засел тоже покурить эту траву.. есть просьба.. для особо одаренных.. можно скомпиленный ida.debug.hellojni выложить PS касательно ребейза.. у меня ида просы высыпается в креш. правда либа 17 метров.. Сейчас выложу пару. В одном либа с debug info, в другом - без. Оба с debug=true в AndroidManifest.xml Это не C, а С++ (более реальный пример) Либа грузиться НЕ при старте, а по кнопке, чтобы сравнить, что получается при attach с уже загруженной либой и без. Все сорцы в комплекте. Подойдёт? Добавлено спустя 3 минуты VodoleY пишет: PS касательно ребейза.. у меня ида просы высыпается в креш. правда либа 17 метров.. По моему, что-то там не так с этим ребейзом… Не вашим, а вообще. Надо бы что-бы кто-то на более новой версии проверил. ![]() |
|
Создано: 01 июля 2016 18:10 · Поправил: theCollision · Личное сообщение · #17 Прошу помощи в след. вопросах: 1. Какой выбрать и купить девайс для отладки в IDA apk на мобиле? 2. Не совсем понятно, что нужно сделать для отладки в IDA? Про первый вопрос: У меня есть apk внутри которого есть lib\armeabi\libc2ssmon.so . Открыв этот файл в Hiew вижу: Code:
Что мне еще нужо посмотреть для выбора мобилы, чтобы быть уверенным в том, что apk запустится и позволит дебажить в IDA? По второму вопросу читаю В его комментарии непонятны слова: "Заливаешь отладчик". Может быть под ними имеется ввиду установка Android SDK с установкой ADB или что? P.S.: Сильно не пинать ;) В андроид-реверсе можно сказать новичок ![]() ----- My love is very cool girl. ![]() |
|
Создано: 01 июля 2016 18:43 · Личное сообщение · #18 theCollision по телефонам.. я хз.. ща дебажу на Gigabyte mike M3 и на LG L60i дешевые картонки.. почитай статьи.. которые я на этой и на предыдущих страничках в своих постах скидывал.. для начала. НО телефон должен быть рутован.. иначе ничего не выйдет ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 01 июля 2016 18:50 · Поправил: Apokrif · Личное сообщение · #19 theCollision пишет: 2. Не совсем понятно, что нужно сделать для отладки в IDA? Do once ---- From your PC run (from C:\Program Files (x86)\IDA 6.8\dbgsrv) Code:
Code:
To start debugging, run from Android shell: Code:
IDA Android 32-bit remote debug server(ST) v1.17. Hex-Rays (c) 2004-2013 Listening on port #23946... From IDA do: To connect via WiFi/Network Debugger | Attach | Remote ARM Linux/Android debugger Address: 192.168.1.100 (your Android IP) Port: 23946 To connect via USB Code:
Address: localhost Port: 23946 И ![]() |
|
Создано: 01 июля 2016 19:01 · Поправил: VodoleY · Личное сообщение · #20 Apokrif пишет: Address: localhost Port: 23946 у меня локал хость не конектится.. ток на 127.0.0.1 + надо еще во 2ой консоли прокинуть порты (специально пишу, тоже затормозил изначально. в одной консоли запускаем сервер, во 2ой добавляем форвард) adb forward tcp:23946 tcp:23946 вобщем сдублирую. мне помогло 3 мануала https://habrahabr.ru/post/151192/ https://habrahabr.ru/post/232531/ http://forum.xda-developers.com/showthread.php?t=2050393 и еще.. на разных девайсах разные разрешения стоят.. не во всех папках можно права менят.. пол дня про..бся.. в конце концов заливал все в /data/local/tmp/ ЗЫ. ща наверно буду эксперементировать еще с gdbserver чтото андроидный меня вываливает постоянно.. типа.. Code:
хотя so по идее зациклина.. хз .. по таймауту его убивает чтоли ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 01 июля 2016 19:18 · Поправил: Apokrif · Личное сообщение · #21 VodoleY пишет: у меня локал хость не конектится.. ток на 127.0.0.1 А он у вас случайно не на IP6 резолвиться? По умолчанию, adbd запускается только при подключении USB и НЕ слушает network. Когда слушает, его видно: Code:
надо еще во 2ой консоли прокинуть порты (специально пишу, тоже затормозил изначально. в одной консоли запускаем сервер, во 2ой добавляем форвард) adb forward tcp:23946 tcp:23946 adb forward можно сделать и на писюке. А android_server лучше запускать в background: Code:
![]() |
|
Создано: 01 июля 2016 22:59 · Личное сообщение · #22 |
|
Создано: 01 июля 2016 23:36 · Поправил: Apokrif · Личное сообщение · #23 |
|
Создано: 02 июля 2016 02:20 · Поправил: vovanre · Личное сообщение · #24 |
|
Создано: 02 июля 2016 06:21 · Поправил: Apokrif · Личное сообщение · #25 vovanre пишет: Я руками его делаю до аттача, в других случаях ида не верно находит либу в памяти. Тогда у нас одинаково работает, у вас получатся вариант А если вы используете gdb, то №1, и всё работает. Можно использовать gdb и android_server одновременно как описано Весь смысл балагана, сделать attach process ДО загрузки либы, которую вы дебажите. Уверен, что подтолкнуть процесс можно с помощью IDA + gdb, вместо Code:
Через usb отладка или черeз wi-fi? Д.б. без разницы. Но честно говоря, я использовал только wi-fi, для usb все эти телодвижения я не делал... VodoleY пишет: Code:
А не может прибиваться именно из-за "CPU limit exceeded"? ![]() |
|
Создано: 02 июля 2016 08:26 · Личное сообщение · #26 Apokrif пишет: А не может прибиваться именно из-за "CPU limit exceeded"? а бог его знает. суть в том.. что после аттача я вываливаюсь в системную либу.. (хотя по идее должен падать в зациклинную so) зацикл работает нормально.. ибо прога подвисает.. ну и после попытки продолжить дебаг.. меня терминейтит.. ща буду пробовать gdb и если и тут будут косяки буду gikdbg.art пробовать ЗЫ к слову.. такие же (подобные) вываливания иды(по сигналам) у меня были когда я дебажил по сетке линуксовые приложения. я хз с чем это связано ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 03 июля 2016 05:27 · Поправил: Apokrif · Личное сообщение · #27 vovanre VodoleY, Если есть идеи, аpk с native code запилить для проверки чего-нибудь - пишите. А то у меня вообще идей никаких нет... А кстати, никому еще не попадались аpk-шки со 100% native code ? С ними по идее, вообще никак не справиться (с предварительным анализом), т.к. весь native code будет уже загружен при старте? Добавлено спустя 42 минуты Для проверки собрал ![]() Выложил ![]() |
|
Создано: 03 июля 2016 08:50 · Личное сообщение · #28 Apokrif ну вобщем.. чем я больше смотрю на этот цирк.. тем больше у меня складывается уверенность.. что надо писать мануалы на отладку в 1. adnroid_server (IDA) 2. gdbserver (gdb.arm gdb.win gdb.ida) 3. gikdbg.art ибо на разных девайсах с разным софтом, с разными прошивками.. цирк разный ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 03 июля 2016 19:56 · Личное сообщение · #29 VodoleY пишет: чем я больше смотрю на этот цирк.. тем больше у меня складывается уверенность.. что надо писать мануалы на отладку Начните потихоньку, я постараюсь присоедениться. Для унификации девайсов может на Genimotion x86 делать, чтобы у всех одинаково было? А потом смотреть, что на конкретных устройствах получается. ![]() |
|
Создано: 03 июля 2016 23:10 · Поправил: mixer632 · Личное сообщение · #30 Apokrif пишет: Для унификации девайсов может на Genimotion x86 делать, чтобы у всех одинаково было? А как там заставить андроид-сервер работать от иды я так и не понял. Тот патч арм не помогает. Хотел попробовать отлаживать на genimotion либу x86 архитектуры, но серв не удается запустить там. Добавлено спустя 12 минут Ида еще любит отваливаться, когда долго трассирую нативный код, а по выходу из него в смали вываливается, выдавая, что таймаут истек. Если быстро пройти, то все норм. Не знаете как это лечится, а то нудный баг такой. ![]() |
|
Создано: 04 июля 2016 06:51 · Личное сообщение · #31 mixer632 пишет: Хотел попробовать отлаживать на genimotion либу x86 архитектуры, но серв не удается запустить там. А что, разве можно запустить android_server ARM и отлаживать либу x86? И точно, это я размечтался. На 6.8 android_server только ARM, x86 и ARM64 нэту... На 6.6 проверяли, в SDK не хватало файлов, чтобы перекомпилить или собрать под другую архитектуру. Скорее всего и на 6.8 тоже самое, если никто баг не зарепортил... mixer632 пишет: Ида еще любит отваливаться, когда долго трассирую нативный код, а по выходу из него в смали вываливается, выдавая, что таймаут истек. Если быстро пройти, то все норм. Не знаете как это лечится, а то нудный баг такой. Да видел… Ужас как неудобно, даже подумать не дает, а что делать не знаю... ![]() |
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 38 . 39 . >> |
![]() |
eXeL@B —› Основной форум —› Взлом Android приложений |