![]() |
eXeL@B —› Вопросы новичков —› размер структуры С++ в ассемблере |
Посл.ответ | Сообщение |
|
Создано: 31 января 2014 17:08 · Личное сообщение · #1 Прошу помощи в конкретных вопросах, а именно: Имеется .exe файл с идущим в комплекте .pdb файлом, в нем есть структура с постоянным размером, назовем её условно struct_1 (состоящей из кучи других структур постоянного размера) Цель - изменить размер структуры входящей в struct_1 1. обязательно ли у структур должен быть метод/поле _size? 2. если нужно изменить размер структуры входящей в struct_1, то размер struct_1 нужно менять на то же кол-во байт соответственно, а так же всех других, в которые может входить изменяемая? 3. всегда ли размер структуры указан в ассемблере (например при выделении памяти alloc/malloc) точно или он может быть составным? (зависит от компилятора?) ![]() |
|
Создано: 31 января 2014 17:19 · Поправил: reversecode · Личное сообщение · #2 если это не указатели на структуры, то нереально поплывут все смешения полей в структуре, а значит нужно весь екзе править, находить какое было смещение и вписывать новое, и так по всем поля структуры, даже если их с десяток полей, то в программе они могут вызываться и оптимизироваться совершенно по разному лучше пересмотрите само ТЗ ![]() |
|
Создано: 31 января 2014 17:34 · Личное сообщение · #3 |
|
Создано: 31 января 2014 17:39 · Личное сообщение · #4 |
|
Создано: 31 января 2014 17:51 · Личное сообщение · #5 |
|
Создано: 31 января 2014 17:55 · Личное сообщение · #6 |
|
Создано: 01 февраля 2014 11:55 · Поправил: Dr0p · Личное сообщение · #7 |
|
Создано: 01 февраля 2014 15:10 · Личное сообщение · #8 |
|
Создано: 01 февраля 2014 15:16 · Поправил: Dr0p · Личное сообщение · #9 reversecode Решение от цели зависит. Вычисление размера произвольных структур это задача реверса, также для IDP техники необходимо вычислять размер. Структуры без использующего её кода нет, так что можно по коду найти макс смещение, отслеживая память по ссылке(это если в динамике без анализа кода). Иногда расчётный размер брался много больше реального размера. Но опять же это смотря что в буфере - зависит от задачи. ![]() |
|
Создано: 01 февраля 2014 15:29 · Личное сообщение · #10 |
|
Создано: 01 февраля 2014 17:20 · Личное сообщение · #11 reversecode Тут вопрос нужно угадать вначале: > memcpy(указатель на структуру типа struct_1, struct_1, размер) > как можно проверить размеры структур 1 и 2 аргумента имея их адреса во время бряка? Размер ведь явно задан, тогда что проверять ![]() Быть может имелась в виду валидация памяти ? Что есчо это может быть не представляю.. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› размер структуры С++ в ассемблере |