![]() |
eXeL@B —› Вопросы новичков —› Как мне объяснить IDA что этот участок памяти относится к какому то классу? |
Посл.ответ | Сообщение |
|
Создано: 04 декабря 2007 12:57 · Личное сообщение · #1 К примеру в программе я нашел конструктор, который создает класс CMyClass. Даже допустим я опредилил размер этого класса. Как мне теперь используя IDA отметить эту область памяти как класс, чтобы можно было поставить брейкпоинт на обращение к нему? И есть ли какие нибудь функции в IDA для автоматического анализа переменных класса? (ну тоесть чтобы он автоматически попытался на основе кода определить типа переменных принадлежащих этому классу) ![]() |
|
Создано: 04 декабря 2007 21:07 · Поправил: s0larian · Личное сообщение · #2 При компиляции С++ кода все OO конструкции превращаются в обычные процедурный код. Компилер расставляет невидимые програмеру вызовы конструкторов и деструкторов. Поэтому чёткого понятия "принадлежность кода классу" в откомпиленом коде нету. Есть логическая связь между несколькими функциями, которые ты проанализируешь как что-то относящееся к какому-то там классу и дав функциям правильные имена. Ну а про данные отдельный разговор. На стеке или хипе выделяются блоки в которых упакована совокупность всех атрибутов классов по цепочке наследования. Там же лежит указатель на vtable где кранятся указатели на virtual member functions. Breakpoint ставь на адрес начала матода - это ж просто инструкции. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Как мне объяснить IDA что этот участок памяти относится к какому то классу? |