![]() |
eXeL@B —› Основной форум —› Взлом прог под Симбиан |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 20 . 21 . >> |
Посл.ответ | Сообщение |
|
Создано: 10 августа 2006 22:20 · Поправил: newborn · Личное сообщение · #1 |
|
Создано: 22 декабря 2008 15:17 · Личное сообщение · #2 так может у тебя проблемы с переходом в ARM/Thumb режимы. Для перехода из arm-mode в thumb нужно прибавить 1 к вызываемому адресу. вроде как для uiq3 был какой-то пропатченный app trk, который позволял читать данные из rom, через него по идее можно посмотреть в карбиде, правильно ли происходит переключение режимов. Хотя это можно посмотреть и так в IDA - в каком режиме происходит вызов, и в каком режиме код вызываемого метода в rom. ![]() |
|
Создано: 24 декабря 2008 18:09 · Поправил: mr_way · Личное сообщение · #3 Адрес функции, возвращаемый Lookup - "нечетный" (т.е. надо понимать что код в dll выполняется в THUMB режиме). Проверил вариант с LDR PC, [Rx]. Результат такой-же как и в случае с BLX Rx. На телефоне выпадает диалог "Не поддерживается". И что-бы это значило? ...................................................................... ........ Засада!!!. Отвечаю сам себе. Взял для примера dll "попроще", а именно Hal.dll (она тоже в XIP формате). "Залукапил" функцию Get - 1й номер. Работает! Так что проблема не в вызове, а в самой функции. ...................................................................... .............................................. Ну вот и все... ![]() Проблема была в VendorID. Если в своем примере установить его в 0x7000000F (как в прошивочных файлах), то вызовы из OpaClient.dll "отрабатываются". Дальше правда вылет идет, видимо не до конца в Callback-ах разобрался. Но похоже даже если удастся "замутить" что-нибуть путное, то поставить его можно будет только на "заломанную" систему. ![]() ![]() |
|
Создано: 02 января 2009 17:29 · Поправил: TolyaN3z · Личное сообщение · #4 Ковыряю CorePlayer для UIQ... Глянул, как уже ломали под другие оси, пытаюсь повторить те же действия. Перенаправляем импорты с EZLIB (inflate и т.д.) на нашу dll, а в ней выполняем оригинальный вызов + наш код. Написал dll с 4 экспортируемыми функциями: 3 из EZLIB и 1 из EUSER, пришлось попариться с перенаправлением импорта IMB_Range из EUSER. Подзабылся старый формат E32Image http://www.antonypranata.com/articles/symbian-os-executable-file-format-e32image . В общем, dll успешно загрузилась, сделала необходимые вызовы и прога запустилась. Идём дальше, нужно подменить IMEI. Моё представление этого: 1. Делаем дамп области памяти, на которую грузится распакованый образ 2. Реверсим, смотрим адрес загрузки IMEI 3. Пишем в нашей dll код замены этого значения Собственно, первый пункт: отлавливаем адрес по которому размещается распакованный бинарь. В версии для UIQ нет вызова CreateLocalCode (такое возможно? зачем тогда IMB_Range?), поэтому как словить нужный chunk мне не оч понятно. В функции IMB_Range есть 2 параметра aStart и aEnd, пробую установить thread-local storage по aStart и создать chunk. Создаю указатель на область в памяти используя этот chunk с такими параметрами aBuf = Base+Bottom и aLength = Top - Bottom, на этом dll-ка вываливается KERN-EXEC, 0. Есть подозрение, что aStart это некорректный, точнее непригодный для моих нужд адрес, поэтому TPtrC инициализируется неверными значениями. Смутно представляю как иначе (без дампа) получить адрес IMEI. У кого-нибудь есть соображения? ![]() |
|
Создано: 03 января 2009 15:04 · Поправил: [wl] · Личное сообщение · #5 как ломали товарищи из BiNPDA: перехватывали вызов TDes::Copy(), и если некий символ является цифрой, считали, что происходит копирование imei и подсовывали свой. Делают так потому, что им не хочется париться с самой функцией получения imei, которая в 9-ке делается через Active Objects, хотя на самом деле в этом нет никакой сложности. На 7-й симбе все проще - взятие имея берется функцией PlpVariant::GetPhoneID(), её-то и нужно перехватывать. Наибольшая проблема в том, чтобы адрес этой функции узнать. Есть два варианта: либо дамп памяти (хотя я не понимаю, как там узнать адреса функций), либо ручная распаковка бинарника. Под 9-ку бинарник распаковать не сложно - там есть заголовок 0x10 байт, в котором зашифрован размер кодовой секции, точка входа и что-то еще, и дальше идет zlib-поток с шириной окна 0xFFFFFFF1. Распакованный образ нужно также раскриптовать, и затем загрузить в ida. Хотя наверное это и не обязательно - можно по именам библиотек и ординалам найти, куда мапится PlpVariant::GetPhoneID(), и собственно подменять его на свою функцию. Вот несколько функций, которые помогут: 1) декрипт заголовка и распаковка тела Code:
2) декрипт тела Code:
Написано на двух языках (VC++ & Delphi), потому что это я делал в разное время, а потом стало неохота париться и делать одну универсальную программу распаковки бинарника, проще ткнуть по двум программам ![]() |
|
Создано: 03 января 2009 15:16 · Поправил: TolyaN3z · Личное сообщение · #6 [wl] Я вчера таки сдампил образ с памяти. Ильфаковские IDS для старых осей как всегда подвели, а других не было под рукой. C нормальными IDS нашёлся вызов CreateLocalCode, с него получил chunk и по нему слил бинарь из памяти. Вот, что у меня было на выходе h__p://rapidshare.com/files/179330767/cp_uiq2.rar.html__ pass: cracklab Но в этом бинаре все обращения уже идут в память и поэтому, как ты верно заметил, определить, где идёт вызов функции получения imei без полного дампа памяти нереально. Сейчас буду пробовать твой код. ![]() |
|
Создано: 06 января 2009 14:29 · Поправил: TolyaN3z · Личное сообщение · #7 [wl] После обработки заголовка и тела твоим кодом на выходе получается такой же бинарь, как я слил с тела, только с двумя отличиями: 1. База адресации 0x00000000, а у того, что в памяти 0xFE000000, до запуска IMB_Range. Не важно. 2. С тела слилось на 2240 байт больше. Видимо, резервация под какие-то данные, либо это максимально возможный размер. Нашёл имя импортируемой библиотеки PLPVARIANT.dll. Формат секции импорта какой-то не очень понятный, отличается от того, что в APP. Точнее даже сказать, не вижу там секции импорта. Есть имена библиотек, перед ними идут их UID, а после имени, ВРОДЕ КАК идёт кол-во импортов и дальше ординалы. Вот, даже нарисовал разбивку: ![]() хотелось бы верить, что разбивка правильная, но у функции GetMachineId ординал 6, а там стоит 0007. И импорт всего один. Очевидно, догадка неверная. Кто-нибудь знает как они мапятся, когда всё загружено в память? Загрузив бинарник в IDA ситуация не сильно прояснилась, как узнать, где идёт вызов импортируемой функции? Посидел, посмотрел пару часиков на бинарь, отколупал диалог и проверку серийника. Прога запускается, а через несколько секунд валится, видимо где-то проверяется результат этих функций. Примерно представляю, где может вызываться GetMachineId, но муторно мне туда лезть. Ладно, думаю, попробую поменять имя и UID, перехватить вызов на свою dll, в ней уже есть фейковая функция с нужным ординалом. Не тут-то было, прога запускается, но на нужную функцию не попадает. Пробуем забить эту область (UID и имя DLL) мусором - ни вылета ничего. Из этого делаем вывод, что вызов GetMachineId делается раньше функции IMB_Range. Фиг с ним, патчим прямо после CreateLocalCode - без толку. Но, таки вклинился еще раньше и всё заработало. ![]() |
|
Создано: 06 января 2009 21:49 · Поправил: [wl] · Личное сообщение · #8 ну вот еще код, которым я загружал либы в иду, может поможет. Но вроде как на смарт-се я видел уже взломанный корплейер для юик. Code:
![]() |
|
Создано: 06 января 2009 22:12 · Личное сообщение · #9 |
|
Создано: 18 января 2009 15:54 · Личное сообщение · #10 |
|
Создано: 18 января 2009 17:55 · Личное сообщение · #11 |
|
Создано: 03 марта 2009 11:52 · Личное сообщение · #12 Уважаемые гуру! Есть такой вопрос. Имеется функция RMobileCall::NotifyCallEvent(TRequestStatus& aReqStatus, TMobileCallEvent& aEvent) из etelmm. Кто нибудь ее пробовал использовать? У меня что-то не выходит. Может у кого нибудь пример есть нормальный или описание как ей "правильно" пользоваться. Поиск по инету не помог. Пытался IDA-ой посмотреть кто ее в прошивке пользует, тоже не нашел. ![]() |
|
Создано: 09 марта 2009 09:13 · Личное сообщение · #13 |
|
Создано: 30 марта 2009 18:18 · Личное сообщение · #14 Я во взломе софта под symbian вообще дубовый, потому сильно не пинайте... =) Есть софтина ProfiMail 3.10 hччp://www.lonelycatgames.com Вобщем сам файл ProfiMail.exe, как я понял, распаковывает/расшифровывает (есть подозрение на ZLIB) файл app.bin, который по ходу дела и яв-ся самой программой. Вопросы вот в чем: есть-ли возможность отладки софта в трубе? или нужен эмулятор? как отловить расшифровку или сделать это ручками? (может существуют какие-нить дамперы и т.п.) существует ли что-нить типа filemon (или подобное), чтобы хотя бы отловить и убить триал?... заранее спасиб! ![]() |
|
Создано: 30 марта 2009 21:33 · Поправил: [HEX] · Личное сообщение · #15 alexey_k Отладчика вроде в свободном доступе нет. Если и есть, то отлаживать можно только свои программы под эмулем. В свежей IDA вроде как должно что то быть для отладки, но пока на паблике свежей IDA нет. У ARTeam есть неплохой тутор по реверс симбы в том числе и профика. Primer_on_Reversing_Symbian_S60_Applications ----- Computer Security Laboratory ![]() |
|
Создано: 30 марта 2009 22:04 · Личное сообщение · #16 [HEX] пишет: У ARTeam есть неплохой тутор по реверс симбы в том числе и профика да, они закейгенили профимайл, но дело в том, что регистрация проверяется на сервере, и потому, как только софтина вышла в сеть, мы получаем оплеуху ![]() Фишка с файлом hosts уже не прокатывает (по-моему начиная с версии 3.04), а потому нужно патчить эти проверки... вобщем надо еще туторов от arteam покурить, может что и получится... а так вопрос в догонку - возможен ли инлайн-патч на симбе? кто-нить подобное делал? ![]() |
|
Создано: 30 марта 2009 23:22 · Личное сообщение · #17 |
|
Создано: 31 марта 2009 12:24 · Личное сообщение · #18 |
|
Создано: 02 апреля 2009 15:56 · Личное сообщение · #19 Компиляторов С/С++ для разработки приложений на базе ARM много. Например в IDE: - IAR Embedded Workbench; - Keil Software ARM MDK uVision3 ; - ARM ADS Metrowerks CodeWarrior; - ARM RealView; - Green Hills Multi; - MetaWare; - GNU GCC Tools; - Microsoft Visual Studio; - Carbide c++ 2.0 - CrossWorks for ARM; - Borland C++ Builder и т.д. Вопрос – как по реассемблированному коду определить его родителей? Известно, что это Symbian 9.2 а подпрограммы оформляются следующим образом Code:
Второй пример: Code:
Меня интересует ТОЛЬКО этот компилятор, а добывать, осваивать и тестировать все по списку тяжело, да и времени в обрез… Искренне считаю, что для Symbian-гуру это задача на пол-банана. Помогите. ![]() |
|
Создано: 20 апреля 2009 21:24 · Поправил: Модератор · Личное сообщение · #20 |
|
Создано: 21 апреля 2009 13:00 · Поправил: [wl] · Личное сообщение · #21 abvg пишет: Вопрос – как по реассемблированному коду определить его родителей? реально для написания обычных приложений под симбиан используются только 2 - GCCE и ARM RealView, так как они поддерживаются в Carbide.c++. сказать, какой именно в данном случае не смогу, но скачать оба не составляет труда - один на форуме нокии, второй на торрентс.ру и посмотреть, какой код генерируют. ---- LexS007, раз есть ключ, можно взломать подменой имей, сейчас времени вообще нет, может потом сделаю ![]() |
|
Создано: 09 мая 2009 16:21 · Личное сообщение · #22 |
|
Создано: 10 мая 2009 13:22 · Поправил: TolyaN3z · Личное сообщение · #23 Недавно писал либу для CorePlayer, вот как выглядит одна из её функций: Code:
Похоже на то, что у тебя, но не такое же. Компилил под Carbide C++ 2.0 (GCCE), SDK - UIQ3, CSL ARM Toolchain версии 2005-Q1C. ![]() |
|
Создано: 12 мая 2009 21:16 · Поправил: pollllll_n · Личное сообщение · #24 Народ информация дл размышления, может пригодится, правда от 11.03.2009 года вот источник www.securitylab.ru/news/348341.php Хакеры предлагают новый метод взлома защиты Symbian Хакеры обнаружили еще один способ взлома защиты Symbian. Ранее дыру в защите нашли с помощью официальной программы для обновления ПО, теперь предлагается использовать профессиональный инструментарий для программирования. Владельцы топовой версии официальной среды разработки Carbide.C++ Pro (цена $1300) могут в процессе отладки программы на смартфоне изменить несколько определенных бит в стэке ядра и полностью отключить все проверки защиты. В итоге Symbian Platform Security выключается для данного аппарата. Это позволяет скачивать защищенный контент, модифицировать и скачивать скрытые системные файлы, устанавливать любое ПО с любыми привилегиями. Теоретически, это позволит хакерам скачивать и модифицировать даже встроенную операционную систему. Что смогут извлечь пытливые умы из данной возможности — покажет будущее. Недостатки у метода взлома следующие: все права и привилегии восстанавливаются после перезагрузки девайса (если не применять дополнительные меры), взлом действует только на одном единственном устройстве. В данный момент существует подтверждение взлома Nokia N80. Неизвестно, будет ли этот способ работать на девайсах с Feature Pack 1. ![]() |
|
Создано: 13 мая 2009 03:41 · Личное сообщение · #25 |
|
Создано: 13 мая 2009 08:09 · Поправил: pollllll_n · Личное сообщение · #26 |
|
Создано: 13 мая 2009 09:14 · Личное сообщение · #27 |
|
Создано: 13 мая 2009 18:02 · Поправил: pollllll_n · Личное сообщение · #28 Zorn может вот эта ссылка будет интересной Взлом защиты Symbian 9.1 - 9.4, Нокиа 5800 и другие ранее не взламываемые www.se900.ru/forum/s=04884f9bfdf8cd762f4062044d1c9668&showtopic=7142&pid=48972&st=0entry48972 датирована 23.03.2009. Автор описывает метод получения полного доступа для всех телефонов Symbian OS9x (включая 9.3 и 5800), при помощи этого метода можно легко взлома любую систему 9.х ![]() |
|
Создано: 13 мая 2009 18:32 · Личное сообщение · #29 |
|
Создано: 15 мая 2009 19:09 · Личное сообщение · #30 [wl] пишет: ea_t import_pos=0; do { do { netnode n; n.create(0); long uid; lread4bytes(li, &uid, false); int i=0; unsigned char c; do { do { c = qlgetc(li); if (c=='.') buf[i++] = 0; else else buf[i++] = c; }while (c != 0 ); if (qstring(buf) == qstring("e32stub")) return; int off=0; int x1=0; while (true) { { c = qlgetc(li); if (x1==0) off = c & 0x7F; else else off += ((c & 0x7F) << x1); if ( (c & 0x80) == 0) break; x1+=7; } } import_pos += (off-1); int ord; do { do { ord = 0; int x=0; while (true) { { c = qlgetc(li); if (x==0) ord = c & 0x7F; else else ord += ((c & 0x7F) << x); if ( (c & 0x80) == 0) break; x+=7; } } if ( --ord >= 0) { { doDwrd(import_pos,4); //set temporary name in case of duplicat e name or if there's no ids file there's no ids file char ordname[0x100]; qsnprintf(ordname,sizeof(ordname),"%s_%d ",buf,ord); do_name_anyway(import_pos,ordname); netnode(n).altset( ord , import_pos); import_pos += 4; } } import_module((char*)buf, NULL, n, NULL, "epoc9"); } while (ord >= 0 ); } while ( true ); А с помощью какой проги такой код можно посмотреть exe файла ![]() |
|
Создано: 15 мая 2009 21:10 · Личное сообщение · #31 |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 20 . 21 . >> |
![]() |
eXeL@B —› Основной форум —› Взлом прог под Симбиан |