Русский / Russian English / Английский

Сейчас на форуме: Alf
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

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


Ранг: 322.2 (мудрец)
Статус: Участник

Создано: 29 декабря 2019 06:04 New!
Цитата · Личное сообщение · #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. Можно ли такое реализовать на нём чисто программно?


Ранг: 325.1 (мудрец)
Статус: Участник

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

DenCoder

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

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

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

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



Ранг: 62.8 (постоянный)
Статус: Участник

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

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

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


Ранг: 322.2 (мудрец)
Статус: Участник

Создано: 29 декабря 2019 15:16 · Поправил: DenCoder New!
Цитата · Личное сообщение · #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 кб расшифрованного файла с кодом вряд ли вам будут интересны...


Ранг: 664.6 (! !)
Статус: Участник
CyberMonk

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

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

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

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

Видеокурс ВЗЛОМ