Сейчас на форуме: asfa (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Все секции сдампленной DLL грузятся в заголовок |
Посл.ответ | Сообщение |
|
Создано: 11 апреля 2010 16:34 · Личное сообщение · #1 Есть упакованная petite dll. Запустил в OllyDbg, сдампил, подправил imagebaza, SizeOfRawData, PointerToRawData В файле пять секций, все описаны. После этого весь файл целиком грузится в заголовок. Вопрос к знатокам: почему так происходит и не идет разбивка по секциям? И еще: не смог найти описание работы загрузчика винды, т.е. что проверяется и в какой последовательности. ![]() |
|
Создано: 11 апреля 2010 17:53 · Личное сообщение · #2 |
|
Создано: 11 апреля 2010 21:24 · Личное сообщение · #3 |
|
Создано: 12 апреля 2010 01:17 · Личное сообщение · #4 |
|
Создано: 12 апреля 2010 11:25 · Поправил: alt · Личное сообщение · #5 Archer пишет Это как это он грузится целиком в заголовок? Сначала OllyDbg ругается "Плохой или неизвестный формат 32-bit выполняемого файла" потом я смотрю "Выполняемые модули" и "Карту памяти" Выполняемые модули База Размер Вход Имя 008B0000 0006E000 0091C10B Comtls32 Memory map Адрес Size Owner Section Contains Type Access Initial Mapped as 008B0000 0006E000 Comtls32 PE заголовок Образ 01001002 R RWE Весь файл размером 6Е000 оказывается в заголовке. И он там реально есть. Затем происходит ошибка на чтении памяти и Dll выгружается с разными вариантами ругательств. Типа: "Не знаю какой поток продолжить", "Не могу загрузить" ClockMan пишет После дампа надо ещё править пe хидер,и за косяков в нём олька неотоброжает все секции... Т.е. все данные должны быть абсолютно точными? (речь пока не про правильную работу, а про загрузку) А это вообще реально сделать? Ну например, есть поля "размер кода" и "размер инициализационных данных" И есть одна секция, помеченная, как "код, инициализационные данные и еше что-то" . Как разобрать, сколько в них чего? Разве вручную это возможно? Дай хыть файлы, что ли. Сдампленый, без правки. Заметил одну особенность. На машине, где дампил, таким образом загружается правленый файл. На другой машине таким образом загружается не правленый. ![]() ![]() |
|
Создано: 12 апреля 2010 11:40 · Личное сообщение · #6 |
|
Создано: 12 апреля 2010 13:09 · Поправил: alt · Личное сообщение · #7 ClockMan пишет: Base Relocation Table указывает в некуда...Без новых релоков бибблиотека будет работать только на твоей машине и то невсегда Дык вопрос пока не с работой, а с загрузкой. Кажись нашел причину, но не способ устранения. Провел эксперемент с этой же, но еще упакованной DLL Начал убивать данные, начинаю от описания секций и дальше наверх. Когда убил поле NumberOfRvaAndSizes в 0 - вылезла та-же ошибка. странно, в описании PE про это поле сказано: указывает размер массива VA/Size который следует ниже, данная фича зарезервирована под будущие расширения формата. В данный момент его значение всегда равно 10h Про VA там же цитата VA есть виртуальный адрес, который уже базирован на смещение Image Base, прочитанное из PE Header'а, RVA есть относительный адрес ссылающийся на Image Base. Size - понятно, размер. А как понимать (посчитать) VA/Size ? ![]() |
|
Создано: 12 апреля 2010 13:24 · Личное сообщение · #8 |
|
Создано: 12 апреля 2010 13:47 · Личное сообщение · #9 |
|
Создано: 12 апреля 2010 14:24 · Личное сообщение · #10 |
|
Создано: 13 апреля 2010 01:19 · Личное сообщение · #11 |
![]() |
eXeL@B —› Вопросы новичков —› Все секции сдампленной DLL грузятся в заголовок |