Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Склейка PE EXE 
:(
    Опции темы
SIGAra
Дата 21.2.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.2.2006

Репутация: нет
Всего: нет



Добрый вечер форумчане !
Не могли бы Вы мне подсказать как склеить два PE EXE файла в один и чтобы при запуске управление переходило второму EXE.
Я делаю следующее:
1. Открываю EXE.
2. Записываю в него машинный код другого, в последнюю секцию как виртуально так и физически.
3. Меняю аттрибуты данной секции на чтение, исполнение и запись.
4. Устанавливаю AddressOfEntryoint на точку входа внедряемого EXE.
5. Увеличиваю SizeOfImage, SizeOfRawData последней секции, Misc.VirtualSize последней секции на тело внедряемого EXE.
Но по какой-то не понятной мне причине EXE просто портится и появляется отладчик Windows. smile
Этот вопрос я рассматриваю категорически в образовательных целях.

Пожалуйста дайте ответ или ссылочку на данный вопрос.
[email protected]
PM MAIL   Вверх
oleg1973
Дата 22.2.2006, 03:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



а импорты?


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
SIGAra
Дата 22.2.2006, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.2.2006

Репутация: нет
Всего: нет



А что с таблицей импортов делать ?
PM MAIL   Вверх
SIGAra
Дата 22.2.2006, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.2.2006

Репутация: нет
Всего: нет



Кто нибудь поможет разобраться с данным вопросом smile
PM MAIL   Вверх
oleg1973
Дата 23.2.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



1) во первых у любого ЕХЕ есть image base тоесть адрес на который этот ехе надо загрузить для корректной работы
у тебя этот адрес для второго ехе явно не соблюдается
2) нужно заполнить Import table у второго ехе так как она у тебя остается пустой
3) при загрузке ехе в память виртуальный адрес секций вовсе не равен физическому смещению в файле

тоесть что надо делать
после загрузки первого ехе в память сдвинуть второй ехе на image base
разложить его секции по нужным смешениям относительно image base
заполнить таблицу импорта и подгрузить необходимые библиотеки

ну вот в 2х словах все


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
SIGAra
Дата 23.2.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.2.2006

Репутация: нет
Всего: нет



Цитата

после загрузки первого ехе в память сдвинуть второй ехе на image base

У меня имеются 2 exe и ImageBase одиноковы - 0x00400000. Тоесть получается так, что как только первый EXE закинут по адрессу 0x00400000 нужно сдвинуть 2 exe на 0x00400000. Я так понял ? Можно какой-нибудь примерчик демонстрирующий эту реализацию ?
PM MAIL   Вверх
oleg1973
Дата 23.2.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



upx исходники


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
SIGAra
Дата 23.2.2006, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.2.2006

Репутация: нет
Всего: нет



Большое спасибо oleg1973. Щас буду разбираться, надеюсь что наконец-то решу вышепоставленную проблему. smile
PM MAIL   Вверх
SIGAra
Дата 24.2.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.2.2006

Репутация: нет
Всего: нет



Плиз помагите разобраться с данным кодом их UPX.
Код

const unsigned usize = ih.imagesize;
const unsigned xtrasize = 65536+IDSIZE(PEDIR_IMPORT)+IDSIZE(PEDIR_BOUNDIM)+IDSIZE(PEDIR_IAT)+IDSIZE(PEDIR_DELAYIMP)+IDSIZE(PEDIR_RELOC);

А именно я не пойму, зачем прибавлять к всему образу файла каталог данных, и что дает число 65536 ? Может это под какую-то заглучшку. Вобщем хелп ми smile.
PM MAIL   Вверх
oleg1973
Дата 24.2.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



upx и не только он а почти все пакеры ехе файлов работают примерно так:
создается ехешник с image base как у пакуемого файла
в этом ехе делается 2 секции
секция номер 1 имеет физический размер = 0 а вот виртуальный размер равный сумме всех секций пакуемого файла с учетом их выравнивания в памяти при загрузке
секция номер 2 является непосредственно кодом распаковщика + упакованные данные
далее при запуске такого файла происходит следующее
секция номер 1 "резервирует" место для распакованных данных
распаковщик распаковывает данные и переносит их в секцию номер 1
затем заполняет таблицу импорта
и передает управление на точку входа в оригинальном файле (ну еще иногда освобождает память занятую секцией номер 2)

а чито делает число 65536 я не знаю )))


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
SIGAra
Дата 24.2.2006, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.2.2006

Репутация: нет
Всего: нет



Большое спасибо за помощь, но у меня есть вопросы.
Цитата

создается ехешник с image base как у пакуемого файла

1. Этот exe'шник создается физически(На диске) или в адресном пространстве данного процесса ?
2. Точка входа должна указывать на оригинальную точку или нет ?
PM MAIL   Вверх
oleg1973
Дата 25.2.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



ехешник делается на диске
точка входа указывает на нащу процедуру распаовки и так далее


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
SIGAra
Дата 25.2.2006, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.2.2006

Репутация: нет
Всего: нет



А при склеивании тоже нужно создавать EXE на диске ?
PM MAIL   Вверх
oleg1973
Дата 25.2.2006, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



естестно
береш файл
ну к примеру пакуеш его там какнить
потом нужно сделать ехе в котором будет
1) распаковщик
2) пакованый файл
user posted image
вот структура ехе после упаковки его upx
секция upx0 имеет физический размер = 0 в ней будет потом лежать распакованый ехе


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
SIGAra
Дата 26.2.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.2.2006

Репутация: нет
Всего: нет



У меня есть 2 вопроса
Код

unsigned PackW32Pe::processImports()

1)Что возвращяет эта функция ? Адреса функций или названия ?
2)Точка входа при сжатии UPX указывает на какую функцию ?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1264 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.