Сейчас на форуме: -Sanchez- (+9 невидимых)

 eXeL@B —› Основной форум —› Антиотладка на ARM процессорах
Посл.ответ Сообщение


Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 29 декабря 2019 06:04
· Личное сообщение · #1

Доброго времени суток всем, уважаемые форумчане!

Кто-нибудь слышал о программной антиотладке на ARM? Ищу, ищу - ничего по этой теме для этих чипов.

Аппаратную антиотладку можно осушествить и примерно как-то так: определённые пины чипа соединяются с определённой схемой, которая при посылке команды отладки(возможно, какой-то стартовой) посылает IRQ чипу -> вызывается запрограммированный обработчик прерывания(имеем 32 дополнительных вектора, VIC) и это вносит какие-то кратковременные изменения в работу программы, которых достаточно чтобы помешать узнать, в чём дело. Получается аппаратно-программная антиотладка.

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

Проводил сейчас эксперименты:
Эксперимент 1
1) посылаю одну команду устройству, код прошивки её обрабатывает, устанавливает адрес структуры в RAM, посылает, что всё ок
2) посылаю команду чтения адреса(встроена в прошивку, опыт хуков не прошёл даром), получаю адрес
3) посылаю вторую команду, устройство возвращает на него ошибку ERROR_NOT_ACTIVATED
4) повторяю пункт 2, адрес тот же

Эксперимент 2
1) п.1 в эксперименте 1
2) п.2 в эксперименте 1
3) п.3 в эксперименте 1, но перед посылкой команды подключаюсь отладчиком (Ozone J-Link Debugger v3.10a). Отладчик достаточно долго коннектится, секунд 5-10.
4) После успешного подключения, посылки всех отладочных команд запрашиваю адрес - он обнулился. При этом активна точка останова на запись по адресу, где должен быть адрес структуры - не срабатывает, видимо, не успевает.

Проц из ARM7TDMI-S архитектуры ARMv4T. Можно ли такое реализовать на нём чисто программно?

-----
IZ.RU





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 29 декабря 2019 09:18
· Личное сообщение · #2

DenCoder

А что делать с вашей инфой, она совершенно бесполезна для вашей задачи. По факту есть некий чёрный ящик, которому вы послали какую то команду и получили не ясный отклик, ERROR_NOT_ACTIVATED - а что это, гугл не знает.

> посылаю одну команду устройству, код прошивки её обрабатывает

Как он её обрабатывает хз ?
Наверно начать нужно с попытки выгрузить прошивку для реверса если такое возможно.

-----
vx


| Сообщение посчитали полезным: BlackCode


Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 29 декабря 2019 10:26
· Личное сообщение · #3

difexacaw пишет:
выгрузить прошивку

Если LOCKBITS не взведен.




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 29 декабря 2019 15:16 · Поправил: DenCoder
· Личное сообщение · #4

difexacaw пишет:
ERROR_NOT_ACTIVATED


Это я к примеру. Настоящий код ошибки вам ничего не даст

difexacaw пишет:
Наверно начать нужно с попытки выгрузить прошивку для реверса если такое возможно


А как ты думаешь, в DenCoder пишет:
2) посылаю команду чтения адреса(встроена в прошивку, опыт хуков не прошёл даром), получаю адрес

фраза "встроена в прошивку" не говорит о том, что чтобы встроить что-то, надо сначала пореверсить?

Добавлено спустя 2 минуты
difexacaw пишет:
Как он её обрабатывает хз ?

Через прерывания, естественно. Есть команды, которые быстро обрабатываются прямо в обработчике. Есть с долгой обработкой, которые обрабатываются в User mode.

Добавлено спустя 16 минут
Ни одного debug-регистра, который хотя бы упоминался в прошивке, не видно. Но это, может, только напрямую. Есть т.н. "защита от любительских глаз", смысл которой в
Code:
  1. LDR R0, dword1
  2. LDR R1, RAM_dword2
  3. LDR R1, [R1]
  4. ADD R0, R0, R1
  5. ADD R0, offset
  6. BL ReadDword
  7. MOV R8, R0
  8. ...
  9. BX R8


То есть, чтобы не было видно сразу, какая функция вызывается. Также такое, бывает, используется, чтобы не было видно сразу, какой адрес используется для чтения/записи. Потому и задал вопрос здесь, чтобы знать точно, есть ли возможность программной антиотладки. Чтобы если искать, то будучи уверенным, что такая есть в природе, значит может быть и здесь. Или не искать того, чего не бывает.

512 кб прошивки + 256 кб расшифрованного файла с кодом вряд ли вам будут интересны...

-----
IZ.RU





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

Создано: 29 декабря 2019 15:50
· Личное сообщение · #5

Advanced Techniques For Anti-Debugging (ARM) - --> Link <--

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


| Сообщение посчитали полезным: DenCoder
 eXeL@B —› Основной форум —› Антиотладка на ARM процессорах
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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