Сейчас на форуме: Magister Yoda, site-pro, Rio (+6 невидимых)

 eXeL@B —› Крэки, обсуждения —› Анализ ARM кода при взломе программ на PocketPC
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >>
Посл.ответ Сообщение


Ранг: 209.5 (наставник), 42thx
Активность: 0.10
Статус: Участник
WinCE ARM M@sTeR

Создано: 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 ©





Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

Создано: 14 июня 2008 01:11
· Личное сообщение · #2

mak
Да осонова одна, но у разных процов есть свои особености. Так что можешь смело изучать.

-----
Computer Security Laboratory





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 14 июня 2008 01:54
· Личное сообщение · #3

=) значит остается только узнать особенности каждого если что. Тут я так почитал спор идет про разбор кода что лучше. Есть какое нибудь стабильное мнение ? , лучшее чтоли так сказать. И еще если я например прогу под арм буду смотреть , то нужен ли мне эмулятор какойнить , я так понял на винде такие файлы не работаю вообще. Или как тут подразделяется ?

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

Создано: 14 июня 2008 02:09
· Личное сообщение · #4

mak
Начнем с того чего ты собрался реверсить?! Если КПК с Pocket PC и Windows Mobile, то есть эмули для компа у мелкософта. Если смарты на Симбиане, то тебе в другую тему и эмулей для компа нет (если не считать эмуль для своих самопальных прог). На мой взгляд лучше ИДЫ для дизасма армы пока нет. Доки по арму и ссылки на эмули можно найти в этой теме или погуглив.

-----
Computer Security Laboratory




Ранг: 12.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 29 декабря 2008 21:05
· Личное сообщение · #5

Как в IDA посмотреть память во время отладки? (значения регистров) В окне General registers только адреса, а содержимого нет.

Ещё есть проблема: поставил eVC++ 4 SP4, VS2008, WM 6 Pro SDK Refresh. Но при загрузки .exe в eVC у меня только POCKET PC 2003 DEVICE\EMULATOR, сам кпк на WM6 и из-за несоответствия не запускается отладчик. Вываливается с ошибкой.

И конкретно по ARMу:
в ASMе можно было заменять JZ на JNZ - замена одного байта и программа выполняется от обратного условия. Есть ли возможность таикх замен в ARM? BEQ на BNE? Почитал статьи и сам, пока, не нашёл.




Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 29 декабря 2008 21:54
· Личное сообщение · #6

Neuss пишет:
И конкретно по ARMу:
в ASMе можно было заменять JZ на JNZ - замена одного байта и программа выполняется от обратного условия. Есть ли возможность таикх замен в ARM? BEQ на BNE? Почитал статьи и сам, пока, не нашёл.

можно...

-----
Пиво, сиськи, транс




Ранг: 123.0 (ветеран), 10thx
Активность: 0.060
Статус: Участник

Создано: 29 декабря 2008 22:05
· Личное сообщение · #7

Neuss, а зачем eVC, если у тебя есть IDA? С ней же очень приятно дебажить в ппс эмуляторе.
По правой кнопке на значении регистра открывается окно с памятью и видишь содержимое

И не забудь отключить HW бряки по Ctrl+F1, а то IDA будет вываливать с ошибками recv что-то там, у меня такое было...

-----
.[ rE! p0w4 ].




Ранг: 12.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 29 декабря 2008 22:59 · Поправил: Neuss
· Личное сообщение · #8

-= ALEX =-,
Можешь подробнее расписать?

Ultras,
"Open register window" - это оно?



Ранг: 123.0 (ветеран), 10thx
Активность: 0.060
Статус: Участник

Создано: 29 декабря 2008 23:18
· Личное сообщение · #9

Neuss, да. Когда находишься на каком то из адресов, работай как в IDA, меняй представление: byte,word, dword (жми D), полезно когда например идет ссылка на строку (lpSomeStr).

-----
.[ rE! p0w4 ].




Ранг: 12.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 29 декабря 2008 23:54 · Поправил: Neuss
· Личное сообщение · #10

Ultras,
ещё можно просто навести на смещение в окне General registers и покажется в выпадающем окне значение, роликом вниз на мыши и окно увеличивается насколько надо.

К вопросу замены BEQ на BNE:
разобрался сам пишу, вдруг кому пригодится. Программа apMemo.

.text:0001146C BNE loc_11494 ( 08 00 00 1A )

В HIEW загружаем файл, F4, Decode, F5, пишем .1146С, F3, меняем так:

.text:0001146C BEQ loc_11494 ( 08 00 00 0A )

F9, F10. Готово.

Огромное спасибо Black Neuromancer, Getorix за RU_PPCRE_s_ARM_Manual

Если есть более свежая версия доки, чем 0.1 от 10.08.2005 выложите, плиз



Ранг: 123.0 (ветеран), 10thx
Активность: 0.060
Статус: Участник

Создано: 30 декабря 2008 09:45 · Поправил: Ultras
· Личное сообщение · #11

Neuss пишет:
ещё можно просто навести на смещение в окне General registers и покажется в выпадающем окне значение, роликом вниз на мыши и окно увеличивается насколько надо.


Угу, но это уже на любителя. Мне например нагляднее видеть в открытых окнах память и как она меняется сразу видно. Особенно когда использовано какое-нибудь крипто.

-----
.[ rE! p0w4 ].




Ранг: 12.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 30 декабря 2008 13:56
· Личное сообщение · #12

В окнах регистров видно только регистры, а вообще память программы где нужно смотреть? В SoftIce есть возможность произвести поиск введённого ключа/имени в памяти и поставить бряк на его чтение. Как сделать всё это в IDA?




Ранг: 209.5 (наставник), 42thx
Активность: 0.10
Статус: Участник
WinCE ARM M@sTeR

Создано: 30 декабря 2008 15:07
· Личное сообщение · #13

Neuss
Вообще ИДА поддерживает хардварные бряки для ARM, но только на процессорах xScale.

-----
Get busy living or get busy dying ©




Ранг: 12.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 30 декабря 2008 16:05
· Личное сообщение · #14

Именно мой случай. Отлаживаю на кпк зацепленном к активсинк. Asus p535 xScale 270.
Только не разобрался как именно бряки ставить на доступ к памяти.

Getorix,
По поводу мануала по ARM: есть ли новые версии?



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 01 января 2009 14:24
· Личное сообщение · #15

А зачем тебе новые мануалы на архитектуру ARM?
Девайсы на windows mobile в основном на коде v5.
Инфа про v6 доступна, но оно только в ARM11. А это пока только iPhone и девайсы на MSM7200.
Инфа про v7 тоже помоему уже есть, но оно только в Cortex. Девайсов на Cortex'aх пока нет.

-----
Реверсивная инженерия - написание кода идентичного натуральному





Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 01 января 2009 16:27
· Личное сообщение · #16

хорошо хоть топик актуальным стал )

-----
Пиво, сиськи, транс




Ранг: 12.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 02 января 2009 03:48
· Личное сообщение · #17

Мануал нужен чтоб понять принцип формирования опкода команд. MOV и LDR простые, с ними разобрался, а BEQ, BNE вообще не понимаю... Есть опкод самой команды, но где записано смещение куда осуществляется переход? Просьба к знающим объяснить на примере.

p.s. в hiew есть возможность написать саму команду, а он сам переведёт её в hex. есть ли подобное для arm?




Ранг: 209.5 (наставник), 42thx
Активность: 0.10
Статус: Участник
WinCE ARM M@sTeR

Создано: 02 января 2009 07:07 · Поправил: Getorix
· Личное сообщение · #18

BEQ, BNE вообще не понимаю
ну на самом деле ветвление намного проще остальных (и в мануале описаны кстати)
EQ NE это просто условия, L сохраняет адрес возврата, а расчет конечного адреса происходит по формуле:
PC = PC + (immed_24 << 2)
что на практике будет выглядеть так:
dst_adr = (cur_adr + 8) + (immed_24 << 2) поскольку PC содержит адрес инструкции ветвления + 8

есть ли подобное для arm?
Конечно есть, но если не брать в расчет компиляторы то остается не так много вариантов
У меня такая штука пользуется в составе полной версии DisARM Studio, а у Лешки (-= ALEX =-) как я понял целая утиля (типа Hiew) на этот счет, причем под десктоп, попроси у него

-----
Get busy living or get busy dying ©





Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 02 января 2009 09:08
· Личное сообщение · #19

Getorix пишет:
а у Лешки (-= ALEX =-) как я понял целая утиля (типа Hiew) на этот счет, причем под десктоп, попроси у него

Не, я только начал делать) и перестал пока что) обратная процедура гиморная из мнемоник в опкоды...

-----
Пиво, сиськи, транс




Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 02 января 2009 12:25 · Поправил: Hexxx
· Личное сообщение · #20

Neuss пишет:
Мануал нужен чтоб понять принцип формирования опкода команд. MOV и LDR простые, с ними разобрался, а BEQ, BNE вообще не понимаю... Есть опкод самой команды, но где записано смещение куда осуществляется переход? Просьба к знающим объяснить на примере.

Ну так тебе не "новый" мануал нужен, а мануал вообще.
[url=http://www.arm.com/miscPDFs/14128.pdf
]http://www.arm.com/miscPDFs/14128.pdf
[/url]

раздел A4.1.5
Смещение закодированно в битах <target_address>

The branch target address is calculated by:
1. Sign-extending the 24-bit signed (two's complement) immediate to 30 bits.
2. Shifting the result left two bits to form a 32-bit value.
3. Adding this to the contents of the PC, which contains the address of the branch
instruction plus 8 bytes.


про thumb читай в разделе A7.1.13

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 12.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 02 января 2009 14:31 · Поправил: Neuss
· Личное сообщение · #21

Getorix,
Поможешь раздобыть полный DisARM Studio? Гугл даёт только Lite.

Getorix,Hexxx,
Вот, что понял:

.text:000480A0 BEQ loc_48130 ; К адресу добавляем 4 байта
.text:000480A4

.text:0004812C
.text:00048130 LDR R0, [SP,#0x438+hKey] ; hKey ; Из адреса вычитаем 4 байта

12C - 0A4 = 88 / 4 = 22

Смотрим Hex в IDA:

22 00 00 0A BEQ loc_48130

Но это случай перехода смещением вниз. Проверил на нескольких примерах. Вверх так просто не получается... В английском не настолько силён, лучше на примере, если не трудно.



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 03 января 2009 17:11
· Личное сообщение · #22

Neuss пишет:
В английском не настолько силён, лучше на примере, если не трудно.


Знаешь, если бы ты задавал вопрос типа: почему у меня не компилится программа helloworld. И не понимал бы комменты на английском - я бы перевел. Но ты не такой уж ламер, поэтому справишься с переводом 3 предложений.

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 12.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 03 января 2009 18:00
· Личное сообщение · #23

Hexxx,
Сидя за праздничным столом, сообразил схватил кпк и в DisARM проверил:

Переход выше по коду
.text:000480A0 BEQ loc_48030

480A0 + 4 = 480A4 - 48030 = 74 / 4 = 1D
FF FF FF - 00 00 1D = FF FF E2

E2 FF FF 0A

Спасибо всем за поддержку

Большая просьба, если есть DisARM Studio Full, поделитесь на мыло shnaider_sdk [ @ ] inbox.ru




Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 03 января 2009 18:42
· Личное сообщение · #24

дык ниукого нет) кроме автора ;)

-----
Пиво, сиськи, транс




Ранг: 12.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 03 января 2009 20:30
· Личное сообщение · #25

Ждём появления Getorix) Интересно почему тогда в массы не вышла полная верия? или токма за деньги? ;)




Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 03 января 2009 20:38
· Личное сообщение · #26

Neuss потому что не актуальна вообще в мире эта тема, про взлом под вынь мобайл...

-----
Пиво, сиськи, транс





Ранг: 209.5 (наставник), 42thx
Активность: 0.10
Статус: Участник
WinCE ARM M@sTeR

Создано: 04 января 2009 03:43 · Поправил: Getorix
· Личное сообщение · #27

потому что не актуальна вообще в мире эта тема, про взлом под вынь мобайл
Точна!

-----
Get busy living or get busy dying ©





Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 04 января 2009 06:37
· Личное сообщение · #28

надо это дело исправить

-----
Пиво, сиськи, транс




Ранг: 12.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 04 января 2009 18:35
· Личное сообщение · #29

Энтузиастов мало, да и тема сложная очень. Не каждый может разобраться. Нужна "реклама" чтоб народ понимал что всё реально) Про вынь мобайл вообще почти ничего нет... Всё надо додумывать
Сейчас время есть - сижу изучаю чужие крэки, разбираюсь. Самая трудность для меня - кейгены. Практически не нахожу сами процедуры генерации ключа.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 06 января 2009 04:02
· Личное сообщение · #30

Neuss пишет:
Большая просьба, если есть DisARM Studio Full, поделитесь

Вот и я не нашёл , а интересная софтинка !

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 06 января 2009 05:06
· Личное сообщение · #31

Isaev
Её даже автор (то есть товарищ Getorix) не нашёл, так что будьте спокойны... "Приват" от вас не ушёл


<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >>
 eXeL@B —› Крэки, обсуждения —› Анализ ARM кода при взломе программ на PocketPC
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати