Сейчас на форуме: -Sanchez- (+7 невидимых) |
![]() |
eXeL@B —› Основной форум —› Взлом Android приложений |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 38 . 39 . >> |
Посл.ответ | Сообщение |
|
Создано: 12 сентября 2011 12:37 · Поправил: SaNX · Личное сообщение · #1 В теме обсуждаются вопросы взлома под андроид и соответствующие тулзы. ТУТОРИАЛЫ: ТУЛЗЫ: JEB ApkAnalyser GikDbg В аттаче fernflower, очень годный жава декомпилер. ![]() ----- SaNX ![]() |
|
Создано: 22 августа 2013 19:54 · Поправил: Apokrif · Личное сообщение · #2 Опаньки. А похоже ссылки на __ANDROID__ __CEARM__ __ARMLINUX__ Есть только в allmake.mak defaults.mk и makeopts.mk Эти файлы используются только для компиляции на Windows. На Linux используются *.unx Да и make на Linux переменную __ANDROID__ не видит, и пытается компилить под __MAC__ # export __ANDROID__=1 # idamake.pl make[1]: Entering directory '/root/idasdk/plugins' make[2]: Entering directory '/root/idasdk/plugins/debugger' g++ -g -D_DEBUG -D__MAC__ -fvisibility=hidden # export __LINUX__=1 # idamake.pl make[1]: Entering directory '/root/idasdk/plugins' make[2]: Entering directory '/root/idasdk/plugins/debugger' g++ -m32 -lrt -lpthread -D__LINUX__ -D_FORTIFY_SOURCE=0 Выходит, что для Android (Arm) можно скомпилить только на на Windows, на Linux не получится? Или я опять конкретно не догоняю? To mods: Как разберемся, обещаю весь "мусор" стереть и оставить только пошаговые инструкции. ![]() Хорошо, что у reversecode всё компилиться без проблем, надеюсь, что и у меня получиться! ![]() |
|
Создано: 22 августа 2013 20:02 · Личное сообщение · #3 |
|
Создано: 22 августа 2013 20:26 · Личное сообщение · #4 >файлы с расширением .mak используются во всех системах У меня используются .unx (Интересно, а зачем .unx тогда в SDK?) Кажется в readme.txt сказано: .unx для gcc make .mak для Borland make Если переименовать makefile.unx в корне SDK, получится: # mv makefile.unx makefile.unx_ # idamake.pl /tmp/makefile.root.42829:2: "makeopts.mk": No such file or directory make: *** No rule to make target '"makeopts.mk"'. Stop. # mv makefile.unx_ makefile.unx # idamake.pl make[1]: Entering directory '/root/idasdk/plugins' make[2]: Entering directory '/root/idasdk/plugins/debugger' А у вас по другому получается? ![]() |
|
Создано: 22 августа 2013 20:31 · Личное сообщение · #5 |
|
Создано: 22 августа 2013 20:58 · Личное сообщение · #6 >да, у меня всегда все получается Отлично. Значит в SDK 6.1 есть всё, что нужно для компиляции! >man make >make -f имямейкфала Не понял... Это о чём? idamake.pl, тоже самое и запускает, по сути. Но как это должно помочь с вагоном "undefined reference-ов"? Подумал, что не догоняю опять, запустил: cd plugins/debugger make -f makefile.unx Все ошибки те же... Чисто ради интереса, какого размера у вас получается android_server для 4.0.3 и для 4.2? ![]() |
|
Создано: 22 августа 2013 21:03 · Личное сообщение · #7 |
|
Создано: 22 августа 2013 21:26 · Поправил: Apokrif · Личное сообщение · #8 >только под линукс Т.е. тоже, что я делаю сейчас. Судя по предыдущим постам, вы собирали на Linux, а не на Windows? А при линковке, что использовали libida.a (ida.a) или libida.so и откуда или ни то и ни другое? И можно команду, которая у меня падает показать: g++ -m32 -lrt -lpthread -D__LINUX__ -D_FORTIFY_SOURCE=0 -fvisibility=hidden -fvisibility-inlines-hidden --shared -Wl,--gc-sections -Wl,--no-undefined -o /root/idasdk/61/bin/plugins/linux_user.plx obj/x86_linux_gcc_32/linux_user.o32 obj/x86_linux_gcc_32/debmod.o32 obj/x86_linux_gcc_32/pc_debmod.o32 obj/x86_linux_gcc_32/linux_debmod.o32 obj/x86_linux_gcc_32/linux_wait.o32 obj/x86_linux_gcc_32/symelf.o32 -L/root/idasdk/61/bin/ -lida --version-script=linux_debmod.script -Wl,--export-dynamic -ldl -lthread_db /usr/bin/ld: cannot find -lida collect2: ld returned 1 exit status Опять же судя по вашим ответам, фрагмента -lida у вас не было (убрали в allmake.unx?) и все слинковалось без проблем. Я правильно понял? Если не сложно, может под Android компильнёте? Сдаётся мне, там (мне бы) понадобились libida.a или libida.so под Android, про которые вообще нигде упоминаний не было. Если у вас и без этих либ всё работает, то это просто замечательно. ![]() |
|
Создано: 22 августа 2013 21:39 · Поправил: reversecode · Личное сообщение · #9 Apokrif пишет: Судя по предыдущим постам, вы собирали на Linux, а не на Windows? yes Apokrif пишет: при линковке, что использовали libida.a (ida.a) или libida.so и откуда или ни то и ни другое? no Apokrif пишет: Опять же судя по вашим ответам, фрагмента -lida у вас не было (убрали в allmake.unx?) и все слинковалось без проблем. уже не помню, я много чего там правил и слинковалось без проблем Apokrif пишет: Сдаётся мне, там (мне бы) понадобились libida.a или libida.so под Android, про которые вообще нигде упоминаний не было. в ida6.1 уже есть android_server вы видите там в зависимостях libida.so ? правильно, значит и быть ее там не должно Apokrif пишет: Если не сложно, может под Android компильнёте? 1) сложно, надо ndk тянуть итд, накладно 2) а зачем? в комплекте ида уже есть андроид сервер Apokrif пишет: Если у вас и без этих либ всё работает, то это просто замечательно. ну а как и наче? или вы адроид сервер будете заливать на андроид вместе с ядро ida ? ![]() андроид сервер самостоятельная независимая программа ![]() |
|
Создано: 22 августа 2013 21:59 · Поправил: Apokrif · Личное сообщение · #10 >>Опять же судя по вашим ответам, фрагмента -lida у вас не было (убрали в allmake.unx?) и все слинковалось без проблем. >уже не помню, я много чего там правил >и слинковалось без проблем Так это самое главное и есть! Киньте хоть make файлы, я сравню со своими? >>Сдаётся мне, там (мне бы) понадобились libida.a или libida.so под Android, про которые вообще нигде упоминаний не было. >в ida6.1 уже есть android_server >вы видите там в зависимостях libida.so? правильно, значит и быть ее там не должно >>Если не сложно, может под Android компильнёте? >1) сложно, надо ndk тянуть итд, накладно >2) а зачем? в комплекте ида уже есть андроид сервер >Если у вас и без этих либ всё работает, то это просто замечательно. >ну а как и наче? или вы адроид сервер будете заливать на андроид вместе с ядро ida ? >андроид сервер самостоятельная независимая программа Это я все прекрасно понимаю. Либа упоминается в общем make файле, т.к. она м.б. нужна для других plugins. Я компилю только linux_server (в готовом linux_server ссылок на *ida.so) тоже нет. Но для "готового linux_server" могла быть использована *ida.a (что противоречит install_linux.txt) Возможно, илфак компилил с *ida.a, а нам предлагает с *ida.so? Т.е. единственный вопрос, что именно нужно сделать, что бы скомпилить linux_server на Linux. Может вспомните и подскажете? Или просто по новой сделайте, у вас же reversecode пишет: да, у меня всегда все получается ![]() |
|
Создано: 22 августа 2013 22:06 · Личное сообщение · #11 чудак человек! я уже и не помню на каком из серверов это собирал той версии помоему уже и нет к тому же у меня была цель смержить улучшения из idasdk6.4 и я мержил только линуксовые и постил в соответсвующей теме эти нафиг никому не нужные билды ![]() а андроид версия меня не интересовала ничего там не предпологается никаких .so просто вдумчиво изучите все мейк файлы итд и увас получится! ![]() |
|
Создано: 22 августа 2013 22:35 · Поправил: Apokrif · Личное сообщение · #12 >чудак человек! я уже и не помню на каком из серверов это собирал >той версии помоему уже и нет Извините, не понял. Версии чего "уже и нет"? Linux-а или IDA SDK? Linux поднять можно за нескольких минут, развернуть IDA SDK еще быстрее? >просто вдумчиво изучите все мейк файлы итд и у вас получится! Опять не понял. Make файлы там совсем простенькие. Какой из них нужно "вдумчиво изучить" (и поправить)? Ссылку на либу я убирал и получил как и ожидалось undefined references. IMHO, надо разбираться с кодом, что там нужно и что нет. И быстро и запросто это не получится (по моему опыту) Или это была шутка и имелось ввиду: Тщательно пройти по всем *.cpp в idasdk/plugins/debugger, разобраться и убрать всё ненужное? Если вам это всё внапряг вспоминать, может просто посоветуете, у кого еще спросить (кроме илфака ![]() ![]() |
|
Создано: 22 августа 2013 22:39 · Поправил: reversecode · Личное сообщение · #13 патченой версии sdk уже нет) тянуть ставить итд, это все накладно когда голова другим уже забита, тогда у меня была цель, я ее минут за 20 разобрался пофиксил если вы вдумчиво разбреетесь то тоже исправите, я уже реально не помню что там было не так но правил я там и то и это и паралельно еще sdk64 пытался собрать, так что просто не упомню что именно там было неправильно там что то тривиальное... да, думаю еще когото можно спросить, надо их только подождать!)) ![]() |
|
Создано: 22 августа 2013 23:01 · Поправил: Apokrif · Личное сообщение · #14 >патченой версии sdk уже нет) А она разве нужна для linux_server? Хотел уточнить, компилили именно linux_server (linux_server x64) на каком-то Linux. (RedHat, CentOS, Ubunty или что-то другое) И какой SDK (может в 6.1 чего не хватает)? >там что то тривиальное... Угу, и чем проще тем быстрее забывается (это я про себя) >да, думаю еще когото можно спросить, надо их только подождать!)) В какой теме лучше спросить? Тут? Суда как-то редко народ заглядывает… ![]() |
|
Создано: 22 августа 2013 23:07 · Личное сообщение · #15 патченой sdk версии idasdk6.1 имелось ввиду я ее патчил(фиксил для себя) linux_server x86 на убунте Apokrif пишет: В какой теме лучше спросить? это была шутка, спрашивать почти неукого а те кто и знают промолчат в силу своей скромности ) если бы вы целый день просидели не на форуме а над изучением ошибок и медитацией - наверняка бы уже скомпилили ![]() |
|
Создано: 22 августа 2013 23:16 · Личное сообщение · #16 >если бы вы целый день просидели не на форуме а над изучением ошибок и медитацией - наверняка бы уже скомпилили У меня нету шаманского бубна. И в медитциях я тоже не силен. Т.е. на "подсказки свыше" я не могу рассчитывать. Make файлы там совсем простенькие. Компилится всё без ошибок, только не линкуется. В таком случае нужно перебирать файлы (*.cpp) и пытаться выбрасывать по одному, в надежде что он и не нужен вовсе. Другого пути не вижу… ![]() |
|
Создано: 22 августа 2013 23:18 · Поправил: reversecode · Личное сообщение · #17 |
|
Создано: 23 августа 2013 00:47 · Личное сообщение · #18 >это что ли? и как же вы тогда его убирали с мейкфайла если оно все равно в линкере присутсвует ? В allmake.unx менял #LINKIDA=-lida$(SUFF64)$(X64SUFF) на LINKIDA= На предыдущей странице оба варианта ![]() |
|
Создано: 23 августа 2013 01:25 · Поправил: reversecode · Личное сообщение · #19 # export __LINUX__=1 # export PATH=~/ida/idasdk61/bin:$PATH # cd ~/ida/idasdk61/plugins/debugger/ # make linux_server -f makefile.unx у меня все собрало root@host:~/ida/idasdk61/plugins/debugger# ll ../../bin/linux_server -rwxr-xr-x 1 root root 1897232 2013-08-22 23:56 ../../bin/linux_server ![]() |
|
Создано: 23 августа 2013 01:36 · Поправил: Apokrif · Личное сообщение · #20 Я всё тоже и самое делал. Вот эту команду можете показать, какие либы она подключает (пост 8 на этой странице) Похоже, у вас есть что-то, чего у меня нет... А такой вариант у вас соберется? export __LINUX__=1 export __ARM__=1 export PATH=~/ida/idasdk61/bin:$PATH cd ~/ida/idasdk61/plugins/debugger/ make armlinux_server -f makefile.unx ![]() |
|
Создано: 23 августа 2013 01:41 · Личное сообщение · #21 |
|
Создано: 23 августа 2013 02:02 · Поправил: Apokrif · Личное сообщение · #22 >выше линк на пастен бин оставил >конечно же не соберется, ибо нет андроидовского ндк как минимум >а максимум еще может с чем то калдовать нужно будет Нет. Для "просто" armlinux_server Android NDK не нужен. (т.е. просто linux на arm, а не на x86/x64) А нужен ~/ida/idasdk61/lib/arm_linux_gcc_32/dumb.o32 Он д.б. в IDA SDK именно для arm, но у меня его нет. И либы "pro.a" тоже нет для arm... В Android NDK этих файлов нет, они д.б. в IDA SDK. Для Android нужно (примерно) и конечно Android NDK. export __LINUX__=1 export __ARM__=1 export __ANDROID__=1 export PATH=~/ida/idasdk61/bin:$PATH cd ~/ida/idasdk61/plugins/debugger/ make armlinux_server -f makefile.unx * export __ANDROID__=1 не пройдет в g++, нужно править make файл. ![]() |
|
Создано: 24 октября 2013 01:50 · Поправил: dimzdrec33 · Личное сообщение · #23 |
|
Создано: 02 ноября 2013 21:18 · Личное сообщение · #24 Поздравьте меня ![]() ![]() ![]() ![]() ![]() |
|
Создано: 03 ноября 2013 08:05 · Личное сообщение · #25 |
|
Создано: 04 ноября 2013 09:27 · Личное сообщение · #26 |
|
Создано: 04 ноября 2013 15:21 · Поправил: Модератор · Личное сообщение · #27 |
|
Создано: 05 ноября 2013 14:23 · Поправил: chelpa · Личное сообщение · #28 SaNX пишет: Круто Ждем подробностей. Ну прям на "подробности-подробности" времени мало расписывать. Заслуга понятное дело не полностью моя, был человек на 4pda с ником cha-cha, который этим делом летом занялся и разобрал нужную часть кода. Тогда он и кинул мне тулзу на JAVA, которая была способна раскриптовать блоки с классом при определённой подготовке. Он выяснил, что накрыты они AES/CFB/NoPadding. Ключ и IV лежат в коде. Это для первого куска. А вот когда этот кусок разворачивается в памяти, то из него достаются вторые ключ и IV для распаковки уже основной части, где уже сама проверка лицензии. Функция с тремя входящими int, которой пестрит вся часть накрытая DexGuard - это преобразование некоего массива в строки в зависимости от входящих параметров (тут расписано что к чему http://www.android-decompiler.com/blog/2013/04/02/a-look-inside-dexguard/). В общем, сейчас довольно много про DexGuard появилось, я признаться даже не знал, что это стандартной тулзой накрыто у них было, пока недавно на доки не натолкнулся (вот еще про DexGuard http://androidcracking.blogspot.ru/2013/10/nihilus-reversing-dexguard-5x.html). 32 часа я потратил из-за глупости своей, а не из-за сложности. Понимал бы я сразу что к чему, и имел бы побольше опыта в crypto алгоритмах, я бы сделал всё часа за два. А так море глупых ошибок стопорили меня сразу на много часов. Проделал следующее: 1. изменил тулзу так, чтобы не набивать массивов байт, а считывать закриптованную часть из специально созданных файлов, нашел ключ и IV - они сразу над закриптованным массивом были, если смотреть из IDA. 2. Метод шифрования изменился в версии 6.1.1 (cha-cha разбирал 6.0.4), у меня оказался DES/CFB/NoPadding (догадался методом перебора и по размерности IV, так как был из 8 байт вместо 16-ти). Раскриптовал первый кусок и вынул вторые ключ и вектор инициализации. 3. Расшифровал второй кусок (DES/CFB/NoPadding) 4. Изменил classes.dex и упаковал обратно в jar с методом сжатия, чтобы был меньше оригинала и докинул в конец нули, чтобы выровнять размер к оригиналу. 5. Накрыл это обратно DES/CFB/NoPadding с добытыми ключами из первого куска и полученный массив - это массив для патча в программе TitaniumBackup. ![]() |
|
Создано: 05 ноября 2013 16:56 · Поправил: VodoleY · Личное сообщение · #29 уф. страсти мордасти.. Уважаемые жители ветки, простите заранее за темность мою в познании дзена андроида. Вопрос звучит так. Есть ли вменяемая возможность подебажить хоть в емуле хоть на живом смарте игрулю, которая скопилина в байткод далвика. З.Ы. интересует именно возможность дебага. ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 05 ноября 2013 18:30 · Личное сообщение · #30 chelpa круто, чоу ) надо почитать про дексгуард. VodoleY отож. на хабре было: http://habrahabr.ru/post/150825/ ----- SaNX ![]() |
|
Создано: 06 ноября 2013 10:34 · Личное сообщение · #31 SaNX пишет: уф. страсти мордасти.. Уважаемые жители ветки, простите заранее за темность мою в познании дзена андроида. Вопрос звучит так. Есть ли вменяемая возможность подебажить хоть в емуле хоть на живом смарте игрулю, которая скопилина в байткод далвика. З.Ы. интересует именно возможность дебага. есть некая утилита AndBug под Linux , она вроде как очень подробно дебаджит, хотя нет, выводит очень подробный логкат, как я понял. Ей пользовался coolypf, когда лечил титануим. Но так как она под Linux, я ее не копал, под виндой ее завести не удалось. ![]() |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 38 . 39 . >> |
![]() |
eXeL@B —› Основной форум —› Взлом Android приложений |