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 54c7_31.08.2017_EXELAB.rU.tgz - Winmine__XP - с секцией.rar |
|
Создано: 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:
| Сообщение посчитали полезным: alex-rudenkiy |
|
Создано: 01 сентября 2017 01:08 · Личное сообщение · #7 alex-rudenkiy пишет: Не помогает 1 Берём калькулятор программиста 2. Высчитываем начало виртуальной секции и RAW данные, берём начало предыдущей секции и прибавляем её размер 01006000 + 1А000(округляем) = 1020000 и 4200 + 19200 = 1D400 а у вас другие значения 3. прежде чем писать секцию надо убедится что у файла нет оверлея 4. после внесённых изменения правим кол во секций и меняем Image size ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. | Сообщение посчитали полезным: alex-rudenkiy |
|
Создано: 01 сентября 2017 01:23 · Поправил: difexacaw · Личное сообщение · #8 alex-rudenkiy > error вылетает, что делать, подскажите пожалуйста : Правильный ход мыслей - разобрать непосредственно что за ошибка и в чём её причина, те отладить загрузчик. Иначе можно рандомом изменять биты в хидере пе и вновь и вновь просить помощи. FLG_SHOW_LDR_SNAPS и смотрим суть поломки. ----- vx |
|
Создано: 01 сентября 2017 02:28 · Личное сообщение · #9 difexacaw пишет: FLG_SHOW_LDR_SNAPS и смотрим суть поломки. Посоветовал хирург сантехнику как операцию на сердце сделать ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. | Сообщение посчитали полезным: ajax |
|
Создано: 01 сентября 2017 02:45 · Поправил: VOLKOFF · Личное сообщение · #10 Это же его "фишка" - дать вполне корректный "умный" ответ который хотя бы частично попадает в зону тематики, но абсолютно никак не решающий изначальную проблему, или решающий но сопровождающийся обязательным наличием боли и мучений спросившего смертного Так и живем. alex-rudenkiy пишет: Не помогает Возьми же наконец CFFE кликни 2 раза мышкой чтобы добавить твою многострадальную секцию правильно и сравни с тем, что делаешь ты. Плюс сразу увидишь много подсвеченных ошибок PE полей (понимая что ошибки не в них непосредственно а из-за поломки структуры хидера твоими изящными вставками) P.S. Professional PE Explorer (для большей иронии название полное ) на вашем сэмпле просто крашится в нирвану. Черканул аффтару про этот и еще старый баг, в прошлый раз он быстро пофиксил. | Сообщение посчитали полезным: ajax, alex-rudenkiy, difexacaw, sefkrd |
|
Создано: 01 сентября 2017 11:11 · Поправил: ajax · Личное сообщение · #11 тему об улучшениях форума снесли, так понимаю? в пи хомячка, посты после нескольких дней. clerk, это для того, чтоб народ гуглил и т.п. каждый 2 ньюб регается для хелпа "прям щас", не втыкая в мануалы hors вау, ты еще тут появляешься где апдейды die? ----- От многой мудрости много скорби, и умножающий знание умножает печаль |
|
Создано: 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). 2afa_04.09.2017_EXELAB.rU.tgz - mi.png ----- vx |
|
Создано: 04 сентября 2017 18:52 · Личное сообщение · #30 |
. 1 . 2 . >> |
eXeL@B —› Вопросы новичков —› Проблема с добавлением секции |