eXeL@B —› Вопросы новичков —› Функция вызывается несмотря на отсутствие в Xrefs |
Посл.ответ | Сообщение |
|
Создано: 30 июня 2019 22:33 · Личное сообщение · #1 Есть такая функция. Код: Code:
Xrefs ссылается только на 621F94. Если занопить "call someFunction", то она из Xrefs пропадает, но все-равно как-то вызывается при исполнении кода. Как определить что вызывает эту функцию? |
|
Создано: 30 июня 2019 22:41 · Поправил: difexacaw · Личное сообщение · #2 |
|
Создано: 30 июня 2019 23:09 · Личное сообщение · #3 |
|
Создано: 30 июня 2019 23:15 · Личное сообщение · #4 f13nd Из за этой парадигмы, ида инструмент.. вот такие вопросы и появляются. Не верное восприятие предмета, точнее его полное не понимание, обьект рассматривается как некий в инструменте(ида). С таким подходом ничего тс решить не сможет. Оно уже и видно - референсов нет и что делать дальше тс не знает, поэтому и задал вопрос. Не верный, ошибочный подход. ----- vx |
|
Создано: 30 июня 2019 23:33 · Личное сообщение · #5 |
|
Создано: 30 июня 2019 23:41 · Поправил: Модератор · Личное сообщение · #6 useretail Ты совсем тупой чтоле, сказал ведь что вызовы из разных мест. > Как еще можно вызвать если не через call (E8 <адрес>)? Через RET например. Или есчо как то. Твой код выполняется в ОС, а там свои механизмы. Есть ядерные сервисы для загрузки контекста в процессор, ну что бы ты понимал что ида это фигня. От модератора: Нарушение п.5 ----- vx |
|
Создано: 30 июня 2019 23:46 · Личное сообщение · #7 А как Ида должна определить вызов через вычисляемый адрес например? Ида это статический анализ, есть вещи которые без отладки (динамического анализа) не решаются. Code:
или Code:
Да куча вариантов. И всё, XREFов не будет. Бери отладчик и не занимайся ерундой. Если приспичила именно Ида, в ней тоже отладка есть. | Сообщение посчитали полезным: difexacaw |
|
Создано: 01 июля 2019 00:16 · Поправил: useretail · Личное сообщение · #8 |
|
Создано: 01 июля 2019 04:25 · Личное сообщение · #9 cppasm пишет: А как Ида должна определить вызов через вычисляемый адрес например? С солвером у гидры например несколько получше. В ситуациях, где ида не разглядит динамически рассчитываемый референс, есть ненулевая вероятность, что гидра разглядит. useretail пишет: Как еще можно вызвать если не через call (E8 <адрес>)? У самых примитивных архитектур так и есть. Но вызов метода объекта в интеле например выглядит так: Code:
А каждая копия объекта конструируется в памяти отдельно, отследить какой метод в +90 был помещен в статике бывает тяжело. И это только частный случай динамики, есть и другие. ----- 2 оттенка серого |
|
Создано: 01 июля 2019 08:25 · Личное сообщение · #10 в х64 всё еще веселее не только call (0xE8) кодируется с относительным смещением, но даже и mov, из-за чего поиск статических байтов адреса не особо помогает даже в незащищенных модулях. адрес функции может быть также частью таблицы методов класса или еще какого-то интерфейса: Code:
И кстати, если уж искомый эффект - это "невызываемость" целевой функции, то я бы рекомендовал патчить саму функцию, а не все референсы к ней. Просто вставить ret с учётом стэковых аргументов, и посмотреть что будет. Если нежелательный эффект останется - вероятно, есть еще какая-то функция, с похожим назначением. Такое нередко встречается. |
|
Создано: 01 июля 2019 14:11 · Личное сообщение · #11 useretail пишет: но все-равно как-то вызывается при исполнении кода БП на начало (возврат\тело по ситуации) функции и смотрим (логируем без остановки по ситуации) откуда вызов. Profit. В зависимости от инструмента (в иде тоже можно, но не всегда нативно), можно получить на выходе аккуратный лог с каждым вызовом, аргументами (если есть) и участком откуда данный вызов сделан. Вы же идете от обратного напрасно усложняя себе задачу. |
eXeL@B —› Вопросы новичков —› Функция вызывается несмотря на отсутствие в Xrefs |
Эта тема закрыта. Ответы больше не принимаются. |