Сейчас на форуме: vsv1, _MBK_ (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Как мне объяснить IDA что этот участок памяти относится к какому то классу?
Посл.ответ Сообщение

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

Создано: 04 декабря 2007 12:57
· Личное сообщение · #1

К примеру в программе я нашел конструктор, который создает класс CMyClass. Даже допустим я опредилил размер этого класса. Как мне теперь используя IDA отметить эту область памяти как класс, чтобы можно было поставить брейкпоинт на обращение к нему?
И есть ли какие нибудь функции в IDA для автоматического анализа переменных класса? (ну тоесть чтобы он автоматически попытался на основе кода определить типа переменных принадлежащих этому классу)




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 04 декабря 2007 21:07 · Поправил: s0larian
· Личное сообщение · #2

При компиляции С++ кода все OO конструкции превращаются в обычные процедурный код. Компилер расставляет невидимые програмеру вызовы конструкторов и деструкторов. Поэтому чёткого понятия "принадлежность кода классу" в откомпиленом коде нету. Есть логическая связь между несколькими функциями, которые ты проанализируешь как что-то относящееся к какому-то там классу и дав функциям правильные имена.

Ну а про данные отдельный разговор. На стеке или хипе выделяются блоки в которых упакована совокупность всех атрибутов классов по цепочке наследования. Там же лежит указатель на vtable где кранятся указатели на virtual member functions.

Breakpoint ставь на адрес начала матода - это ж просто инструкции.


 eXeL@B —› Вопросы новичков —› Как мне объяснить IDA что этот участок памяти относится к какому то классу?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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