![]() |
eXeL@B —› Вопросы новичков —› Проблема с добавлением секции |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 31 августа 2017 16:14 · Поправил: alex-rudenkiy · Личное сообщение · #1 Здравствуйте, я хочу добавить CODE секцию в программу вручную, ну в общем, я добавляю в Section Header описание своей секции lol, затем меняю в заголовке число секций с 3 на 4, ну вот, потом добавляю байт-код (он не рабочий, чиста для примера) и потом пытаюсь его запустить в ollydbg, вроде-бы схема должна быть рабочей, но он даже не открывается, error вылетает, что делать, подскажите пожалуйста ![]() ![]() ![]() Name VirtSize VirtAddr SizeRaw PtrRaw Flags Pointing Directories ------------------------------------------------------------------------------------------- .text 00003A56h 01001000h 00003C00h 00000400h 60000020h Import Table .lol 00000050h 0100A200h 00000050h 0001D430h E0000020h .data 00000B98h 01005000h 00000200h 00004000h C0000040h .rsrc 00019160h 01006000h 00019200h 00004200h 40000040h Resource Table ![]() ![]() |
|
Создано: 31 августа 2017 16:44 · Личное сообщение · #2 |
|
Создано: 31 августа 2017 16:48 · Поправил: alex-rudenkiy · Личное сообщение · #3 |
|
Создано: 31 августа 2017 17:32 · Поправил: hors · Личное сообщение · #4 alex-rudenkiy пишет: Здравствуйте, я хочу добавить CODE секцию в программу вручную, ну в общем, я добавляю в Section Header описание своей секции lol, затем меняю в заголовке число секций с 3 на 4, ну вот, потом добавляю байт-код (он не рабочий, чиста для примера) и потом пытаюсь его запустить в ollydbg, вроде-бы схема должна быть рабочей, но он даже не открывается, error вылетает, что делать, подскажите пожалуйста : Описание новой секции нужно добавлять в конец таблицы секций, а не вставлять в середину, как у Вас. ----- http://ntinfo.biz ![]() |
|
Создано: 31 августа 2017 17:47 · Поправил: alex-rudenkiy · Личное сообщение · #5 |
|
Создано: 31 августа 2017 23:56 · Поправил: dezmand07 · Личное сообщение · #6 можно кодом добавить Code:
![]() |
|
Создано: 01 сентября 2017 01:08 · Личное сообщение · #7 alex-rudenkiy пишет: Не помогает 1 Берём калькулятор программиста ![]() ![]() 2. Высчитываем начало виртуальной секции и RAW данные, берём начало предыдущей секции и прибавляем её размер 01006000 + 1А000(округляем) = 1020000 и 4200 + 19200 = 1D400 а у вас другие значения 3. прежде чем писать секцию надо убедится что у файла нет оверлея 4. после внесённых изменения правим кол во секций и меняем Image size ![]() ![]() ![]() ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 01 сентября 2017 01:23 · Поправил: difexacaw · Личное сообщение · #8 alex-rudenkiy > error вылетает, что делать, подскажите пожалуйста : Правильный ход мыслей - разобрать непосредственно что за ошибка и в чём её причина, те отладить загрузчик. Иначе можно рандомом изменять биты в хидере пе и вновь и вновь просить помощи. FLG_SHOW_LDR_SNAPS и смотрим суть поломки. ----- vx ![]() |
|
Создано: 01 сентября 2017 02:28 · Личное сообщение · #9 difexacaw пишет: FLG_SHOW_LDR_SNAPS и смотрим суть поломки. Посоветовал хирург сантехнику как операцию на сердце сделать ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 01 сентября 2017 02:45 · Поправил: VOLKOFF · Личное сообщение · #10 Это же его "фишка" - дать вполне корректный "умный" ответ который хотя бы частично попадает в зону тематики, но абсолютно никак не решающий изначальную проблему, или решающий но сопровождающийся обязательным наличием боли и мучений спросившего смертного ![]() alex-rudenkiy пишет: Не помогает Возьми же наконец CFFE кликни 2 раза мышкой чтобы добавить твою многострадальную секцию правильно и сравни с тем, что делаешь ты. Плюс сразу увидишь много подсвеченных ошибок PE полей (понимая что ошибки не в них непосредственно а из-за поломки структуры хидера твоими изящными вставками) P.S. Professional PE Explorer (для большей иронии название полное ![]() ![]() |
|
Создано: 01 сентября 2017 11:11 · Поправил: ajax · Личное сообщение · #11 тему об улучшениях форума снесли, так понимаю? в пи хомячка, посты после нескольких дней. clerk, это для того, чтоб народ гуглил и т.п. каждый 2 ньюб регается для хелпа "прям щас", не втыкая в мануалы hors вау, ты еще тут появляешься ![]() ![]() ----- От многой мудрости много скорби, и умножающий знание умножает печаль ![]() |
|
Создано: 01 сентября 2017 14:50 · Личное сообщение · #12 VOLKOFF пишет: CFFE А что это за инструмент такой, полное название можно? ![]() Добавлено спустя 18 минут ClockMan пишет: прежде чем писать секцию надо убедится что у файла нет оверлея Overlay - это всё то, что находится за последней секцией как я помню. ![]() |
|
Создано: 01 сентября 2017 15:11 · Личное сообщение · #13 |
|
Создано: 01 сентября 2017 15:48 · Поправил: alex-rudenkiy · Личное сообщение · #14 VOLKOFF пишет: Возьми же наконец CFFE кликни 2 раза мышкой чтобы добавить твою многострадальную секцию правильно Ну всё, секция добавлена, думал всё, славу богу, но не тут то было, при запуске программа сразу же крашится ![]() ![]() Пишет "Ошибка при запуске приложения (0xc000007b)...", может он что-то забывает на автомате делать? ![]() |
|
Создано: 01 сентября 2017 15:51 · Личное сообщение · #15 |
|
Создано: 01 сентября 2017 15:54 · Личное сообщение · #16 |
|
Создано: 01 сентября 2017 15:59 · Личное сообщение · #17 |
|
Создано: 01 сентября 2017 16:01 · Личное сообщение · #18 |
|
Создано: 01 сентября 2017 18:58 · Поправил: alex-rudenkiy · Личное сообщение · #19 VOLKOFF пишет: fuck ну блин, я смотрю data (4 буквы), text (4 буквы), rsrc (4 буквы), так ещё у меня нечего и не получается, злой и написал первое что в голову пришло ![]() Добавлено спустя 4 минуты Так вы не вкурсе, в чём косяк? Ох, опять всё самому разбираться ) Добавлено спустя 15 минут Я помню в последний раз меня так сильно выбесила модель MVVM в C#.net, особенно после того как ты всю жизнь делал линейный (скорее всего не правильно называю) программы, а там сплошные binding'и и ещё эта структура только чего стоит Model, ViewModel, View, я тогда помню вообще поник, нужно же так придумать названия, ну вроде-бы потом разобрался и программы норм стали получаться ![]() ![]() |
|
Создано: 01 сентября 2017 19:55 · Личное сообщение · #20 |
|
Создано: 02 сентября 2017 02:15 · Личное сообщение · #21 VOLKOFF > Это же его "фишка" - дать вполне корректный "умный" ответ который хотя бы частично попадает в зону тематики Да, согласен; это моя ошибка. Я не вдовался в тех детали, так как небыло времени, а описал общее решение классической задачи - любое действие юзер загрузчика логгируется. В данном случае это не годится, как не странно ![]() Процесс создаётся из секции(обьект), они бывают трёх типов. Создание процесса это создание конвеера на основе образа который создатся ранее как image-секция. Именно на этом этапе ядро выполняет валидации. Я после ответа быстро прогнал отладчиком, суть в том что создание образа в ядре это очень важный механизм с точки зрения безопасности, так как образ пе фактически есть структура, которая использует изменяющиеся указатели, к такому обьекту выполняются особые проверки безопасности. Если углубиться в детали, то фейл создания секции можно узнать только отладив в км, место около MiCreateImageFileMap() -> MiVerifyImageHeader(). Следует заметить что так как этим механизмам уделяется особое внимание по выше описанной причине, то они активно допиливаются. И в более новой версии системы валидации изменены до не узнаваемости(2k:creasect.c). Я не стал писать сразу это всё, так как думал что проблема с юзер загрузчиком. Добавлено спустя 12 минут ajax > это для того, чтоб народ гуглил Да, достаточно для поиска. Давайте посмотрим: Первая ссылка в гугле на мс Находим нашу опцию Смотрим на код загрузчика, какой больше нравится - дасм или старый исходный, не важно и видим что логгируется всё. Если же отладчик какой то фейл выдаёт - нет проблем, открываем им же самого себя, ставим останов на NtCreateSection и получаем статус - bad image. ----- vx ![]() |
|
Создано: 02 сентября 2017 22:48 · Личное сообщение · #22 alex-rudenkiy Для А на счёт твоей конкретной ошибки (STATUS_INVALID_IMAGE_FORMAT), то полагаю, что ты не подумал о размере образа в памяти. Считай SizeOfImage, когда увеличиваешь размер образа. Тебе пригодится, изучай: ----- EnJoy! ![]() |
|
Создано: 03 сентября 2017 09:40 · Поправил: dosprog · Личное сообщение · #23 |
|
Создано: 03 сентября 2017 14:57 · Личное сообщение · #24 |
|
Создано: 03 сентября 2017 15:17 · Личное сообщение · #25 |
|
Создано: 04 сентября 2017 11:26 · Личное сообщение · #26 |
|
Создано: 04 сентября 2017 16:39 · Личное сообщение · #27 |
|
Создано: 04 сентября 2017 17:04 · Личное сообщение · #28 ajax Я дал ссылки как на краткие (для ленивых) так и на очень подробные схемы-описания от Ange Albertini (corkami), так что даже если ТС предпочитает обучаться, не слизывая с чужих сорсов, то и в этом случае ему должно помочь. Так то всяких библиотек для работы с PE предостаточно. От небольших до фреймворков. ----- EnJoy! ![]() |
|
Создано: 04 сентября 2017 17:35 · Поправил: difexacaw · Личное сообщение · #29 Jupiter > ему ж надо вроде как разбираться Давайте взглянем. Трассируем MiCreateImageFileMap(), причём делаем это на XP, так как для неё имеются сурки. Находим место с фейлом: -> STATUS_INVALID_IMAGE_FORMAT [ECX-8]: 0xA200 EAX: 0x100A200 VAR: 0x1005000 Дизасмим ядро: Code:
Открываем сурец из w2k/wrk и находим наше место: Code:
Видим что IMAGE_SECTION_HEADER.VirtualAddress невалид(0xA200). ![]() ----- vx ![]() |
|
Создано: 04 сентября 2017 18:52 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Проблема с добавлением секции |