Сейчас на форуме: Magister Yoda, site-pro, Rio (+6 невидимых) |
eXeL@B —› Крэки, обсуждения —› Анализ ARM кода при взломе программ на PocketPC |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >> |
Посл.ответ | Сообщение |
|
Создано: 01 августа 2005 13:27 · Личное сообщение · #1 Средства отладки в Microsoft eMbedded Visual C++ 4.0 "чуток" уступают ollydbg, поэтому хотел бы спросить - как с сплошном коде выловить требуемую функцию. Останов делается только на бряке, а куда ставить эти бряки в сплошном коде очень даже неясно. Если нажимать паузу (Break Execution) во время работы проги, выдается мессага: "All threads are in system calls. It is not possible to break into the debuggee at this time". Хорошо бы также знать соответствие адресов функций их названиям, может есть у кого соответствующий мануал? Да и вообще хотелось бы пообщаться с людьми которые занимаются исследованием прог под покет, ибо инет на такой матерьял очень скуп. Хорошо хоть что WASM.RU есть c замечательными статьями от Broken Sword. ----- Get busy living or get busy dying © |
|
Создано: 21 августа 2009 09:21 · Личное сообщение · #2 Помогите начинающему, плз. Есть такой кусок кода: ... присвоение исходных данных (8 операторов) ... BL DeviceIOControl ... анализ полученных результатов ... Мне надо немного подправить результат работы DeviceIOControl (необходимо дополнительно добавить 4 оператора) Вопросы: 1. Где искать свободное место для моего кода? 2. Как правильно выполнить переход туда и возврат в программу (насколько я понимаю, короткого перехода будет недостаточно)? Спасибо |
|
Создано: 21 августа 2009 10:12 · Личное сообщение · #3 |
|
Создано: 21 августа 2009 11:15 · Поправил: vovichek62 · Личное сообщение · #4 Getorix пишет: BL DeviceIOControl меняешь на свою BL ProxyFunc Да, это понятно. А как прописать адрес моей ProxyFunc (я не компилирую ассемблеровский файл, а правлю код в WinHex, поэтому вызов ProxyFunc я должен прописать вручную). Насколько я понимаю, HEX-код оператора BL ... (4 байта) не вместит в себя полный адрес функции, там, видимо, должно стоять смещение - но до самой функции или до какой-то ссылки на нее? И какова максимальная величина такого смещения? А в теле ProxyFunc при вызове DeviceIOControl тоже надо будет изменить смещение? А такой вариант не прокатит (все это пишу на месте загрузки параметров вызова DeviceIOControl)? LDR R0, loc_1 ADD R1, PC, #0C MOV PC, R0 loc_1 DCD <полный адрес ProxyFunc> Возврат делаем по такой же схеме по адресу из R1 |
|
Создано: 21 августа 2009 12:01 · Личное сообщение · #5 |
|
Создано: 21 августа 2009 12:40 · Личное сообщение · #6 vovichek62 BL содержит относительное смещение. То есть адрес до ProxyFunc должен туда влезть. Просто подменяешь 4 байта BL DeviceIOControl на свои 4 байта. Соответственно внутри своей функи пересчитываешь BL DeviceIOControl до импорта DeviceIOControl (куда она раньше ссылалась). Кстати пролог и эпилог ProxyFunc естесственно не должен косячить параметры DeviceIOControl. vovichek62 пишет: А такой вариант не прокатит И придется заботиться о заполнении параметров заново, да еще и куча места понадобится под ProxyFunc Tyra пишет: Используй OffsetCalc Гы, моя утилита для этой цели точно также называется ----- Get busy living or get busy dying © |
|
Создано: 21 августа 2009 12:47 · Личное сообщение · #7 |
|
Создано: 21 августа 2009 13:12 · Личное сообщение · #8 |
|
Создано: 21 августа 2009 13:13 · Поправил: vovichek62 · Личное сообщение · #9 |
|
Создано: 21 августа 2009 13:18 · Поправил: Getorix · Личное сообщение · #10 |
|
Создано: 21 августа 2009 14:39 · Личное сообщение · #11 |
|
Создано: 21 августа 2009 15:27 · Поправил: vovichek62 · Личное сообщение · #12 Getorix, посмотрел Ваш offset_calc, и родился у меня сумасшедший наглый вопрос: а не делали ли Вы случайно подобную программку для других опкодов, не связанных с переходами (очень уж удобно было бы получать сразу HEX-код для любой команды). Или может быть знаете что-то в этом роде (ну, кроме, конечно, стандартного компилятора)? |
|
Создано: 21 августа 2009 16:07 · Поправил: Getorix · Личное сообщение · #13 vovichek62 пишет: а не делали ли Вы случайно подобную программку для других опкодов Делал, это был конструктор опкодов с возможностью ассемблирования из строки для патчинга в DisARM, но только в виде кода поскольку времени для тестирования не стало, а уж для интерфейса (хотябы типа как в офсет калке) и подавно Так что ручками, ручками... ----- Get busy living or get busy dying © |
|
Создано: 22 августа 2009 15:25 · Личное сообщение · #14 |
|
Создано: 27 августа 2009 11:42 · Поправил: vovichek62 · Личное сообщение · #15 Подскажите, кто знает, плз, какая программа является вызывающей для Setup.dll при установке каба на девайс. Хочу посмотреть процесс выполнения Setup.dll в дебаггере IDA, но IDA требует указать вызывающее приложение. Насколько я понимаю, это какой-то из системных процессов, но какой? Или может быть есть другой способ? |
|
Создано: 27 августа 2009 17:09 · Личное сообщение · #16 |
|
Создано: 27 августа 2009 22:40 · Личное сообщение · #17 Да прогу-то я сломал, правда не очень красиво - это Yota Contacts - адресная книга и звонилка от HTC MAX 4G. Вот теперь хочу понять, как сделать изящно. Ну и на будущее надо знать... Кстати, вызывающий процесс для Setup.dll из каба - wceload.exe. Только не могу понять, как к нему подключиться для дебага Setup.dll - он запускается только после запуска каба на установку, и сразу первым делом грузит Setup.dll. И где в Setup.dll бряк ставить? Пробовал поймать это дело в момент, когда каб спрашивает, куда ставиться - в девайс или на карту памяти. К wceload.exe IDA подключается нормально, бряк ставил на входе во все пять export-функций Setup.dll, но ни один не сработал до окончания установки каба. |
|
Создано: 27 августа 2009 23:56 · Поправил: Kalmar · Личное сообщение · #18 |
|
Создано: 28 августа 2009 02:16 · Личное сообщение · #19 |
|
Создано: 28 августа 2009 19:03 · Поправил: Kalmar · Личное сообщение · #20 ИМХО, самое простое - это наваять загрузчик к ней и его дебажить с заходом в install_init, install_exit, uninstall_init и uninstall_exit библиотеки. Всё описано (но мутно) в мсдн. Начать можно |
|
Создано: 01 сентября 2009 13:22 · Личное сообщение · #21 |
|
Создано: 01 сентября 2009 16:59 · Поправил: vovichek62 · Личное сообщение · #22 КГ там нет в принципе. Там читается ModelName через SystemParametersInfoW и OEMInfo (для MOVINand) через DeviceIOControl. Потом эта информация как-то очень криво и длинно обрабатывается (я в этом и запутался), по результатам этой обработки либо продолжается установка программы, либо пишет "Данная программа не предназначена для данного девайса. Установка прервана". Причем просто обойти эту проверку не получается, т.к. в ее процессе в разных местах в память пишется куча полезной на будущее информации. Сейчас я просто дописал на свободное место две коротенькие функции, которые вызываются вместо SystemParametersInfoW и DeviceIOControl. Они подменяют информацию, считанную с моего телефона, "правильной". Установка в итоге работает нормально, но в результате этой подмены мой телефон называется не HTC Touch Diamond2, а HTC Max 4G, что меня ужасно раздражает. Вот и хочу разобраться... |
|
Создано: 13 октября 2009 13:51 · Личное сообщение · #23 подскажите чайниковский вопрос, у меня мои комманды не помещаеются на место старой старого текста, можно ли как-то оптимизировать на одну комманду ? спасиба. Code:
|
|
Создано: 13 октября 2009 16:38 · Личное сообщение · #24 можно постараться сэкономить в этом участке Code:
если отыскать место с ноликами, тогда код можно переписать как Code:
можно повозиться со стековым регистром, но все зависит от режима тумб/арм и от адресов размещения команд |
|
Создано: 15 октября 2009 17:56 · Личное сообщение · #25 |
|
Создано: 20 ноября 2009 21:54 · Личное сообщение · #26 подскажите о DeviceIOControl IOCTL_HAL_GET_DEVICEID проблема простая, мой девайс (oem навигатор от mio) не выдает DeviceID. просто "пустая" структура. протрейсить nk.exe/coredll в ida не выходит, а с jtag - не умею переводить проц(SirfTitan) в jtag mode. смотрел по коду, в nk.exe на 0x1010054 есть строки DSK1 (раздел на флешке), и UUID, %06d-%08d %02X%02X%02X%02X%02X%02X%02X%02X. (у меня навигатор, имеи тут нет, думаю тут id+серийник) пытался прописывать/менять известные поля в таблице разделов, и tfaf32, но не помогло. в принципе, можно изменить сам WinCE/nk.exe и залить обратно, но хотелось бы догадатся, где этот uuid может быть прописан, и просто его вписать. что-бы не заморачиватся с каждой версией. заранее благодарен. |
|
Создано: 23 ноября 2009 18:35 · Личное сообщение · #27 в ida разобрался что DeviceIOControl IOCTL_HAL_GET_DEVICEID уходит в nk.exe, а оттуда в DSK_IoControl (0x221F78), видно что читается сектор c серийником и прочими настройками железки, но пока без отладчика тяжело осилить, почему на выходе функции пустота. ну и нагуглить смысл DSK_IoControl (0x221F78) пока не удалось. |
|
Создано: 24 ноября 2009 03:12 · Личное сообщение · #28 |
|
Создано: 09 декабря 2009 14:38 · Личное сообщение · #29 Всем здрасти! Я недавно занялся исследованием ARM процессоров, ну в общем КПКашками. Стал исследовать одну игрушку Zuma v 1.03 for PocketPC. На сайтах смотрел, там есть пропатченные версии но у меня чегото не вышло зарегестрировать её на КПК. Но суть не в этом интерес посмотреть недра и метод обхода регистрации. Может кто подкинет пример исследования ? Весьма буду благодарен. |
|
Создано: 09 декабря 2009 22:17 · Поправил: Ultras · Личное сообщение · #30 AxEExE, для начала вот RU_PPCRE's ARM Manual. Правда не законченная она. 19f7_09.12.2009_CRACKLAB.rU.tgz - RU_PPCRE's ARM Manual.pdf Возможно у TSRH есть подобные туторы на русском. Progopis тогда поможет. Если общие навыкие реверса есть, то КПК-реверс осваивается быстро. ----- .[ rE! p0w4 ]. |
|
Создано: 10 декабря 2009 09:17 · Личное сообщение · #31 Спасибо Ultras, буду читать и то что на англ. не особо большая проблема. Просто люблю когда примеров много - учиться легче и быстрей За ссылочки в двойне спас. Ultras пишет: Возможно у TSRH есть подобные туторы на русском. Progopis тогда поможет. Друзья TSRH, Progopis не подкините инфы ? За рание спас. |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >> |
eXeL@B —› Крэки, обсуждения —› Анализ ARM кода при взломе программ на PocketPC |