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

Поиск:

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


asm fanat
****


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

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



1) названия
2) на распаковщик


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


Новичок



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

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



Тоесть на функцию unpack ? Но я не могу понять как при получении контроля сдвинуть EXE на ImageBase smile
PM MAIL   Вверх
oleg1973
Дата 26.2.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


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

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



а как ты вообще делаеш?


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


Новичок



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

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



Я создаю новую секцию в файле, туда пишу внедряемый EXE'шник ну конечно ставлю аттрибуты, виртуальный размер и физический размеры устанавливаю равным размеру внедр. EXE, меняю точку входа на (EntryPoint внедряемого EXE + физический адрес по которому он закинут, то есть физическому адресу последней секции), увеличиваю SizeOfImage.
Но сам процесс перекидывания EXE в виртуальном пространстве не пойму, как это вообще делается ?


Это сообщение отредактировал(а) SIGAra - 27.2.2006, 14:36
PM MAIL   Вверх
SIGAra
Дата 1.3.2006, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Наконец-то разобрался. Это оказалось просто! Большое спасибо oleg1973 за оказанную помощь.
PM MAIL   Вверх
SIGAra
Дата 1.3.2006, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



При перекидывании EXE в памяти, он использует оригинальные адреса или адреса относительно с места которого он загружен ?
То есть, например:
Код

const char primer = "Hello World";
MessageBox( NULL, primer, "Caption...", MB_OK );

В оригинале (Не будучи склееным с некоторым EXE) выведет Hello World, а вот при переадрессации в склееном EXE, выведет какой-то мусор. Действитвительно это так ?
PM MAIL   Вверх
oleg1973
Дата 2.3.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


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

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



в данном случае адрес указывающий на стринг будет фиксированным


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


Новичок



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

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



И сразу же возникает вопрос.
Например:
Код

void func()
{
    printf("Hello World!");
}

void main()
{
   func();
   return;
}

Функия будет переадресована ? Или просто вызов будет по стандартному адресу ?
PM MAIL   Вверх
oleg1973
Дата 2.3.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


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

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



что значит переадресована?

оно получается так:
MessageBox(0,"hello","world",0);

компилятор переведет все это дело в
push 0
push adr_hello <- тут у нас адрес нашего стринга hello
push adr_world <- тут у нас адрес нашего стринга world
push 0
call [adr_msgbox] <- указывает НА АДРЕС в таблице импорта ехе файла , по которому лежит адрес функции MessageBox из User32.dll


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


Новичок



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

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



Я имел ввиду переадресована, например имеется функция func , а main её вызывает и в момент когда весь образ exe закинут на ImageBase(в моем случае - 0x00400000) функция main будет вызывать func или она будет брать адрес этой функции относительно ImageBase ?
PM MAIL   Вверх
oleg1973
Дата 2.3.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


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

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



есть несколько вариантов вызова процедуры (всмысле интерпритация в асме/машинном коде)
call main_proc
если имеем дело с CALL то тут будет указано смещение относительно адреса с которого мы вызываем процедуру
в 99% оно так и будет
а вот если в сишном коде есть нечто типа IF - проверка некого условия то компилер может сделать в данном случае 2 варианта
jz или jmp
тут уже будет все по другому так как к примеру jmp бывает "короткий" и "длинный"
если вызываемая процедура находится в пределах 128 байт то будет использован короткий "релативный" jmp в котором укажется смещение вызываемой процедуры относительно адреса вызова
а если вызываемая процедура находится "вне доступа" короткого jmp тогда компилятор сделает конструкцию типа jmp 0x401000 тоесть подставит жесткий фиксированный адрес вызываемой процедуры и соответственно перенеся данный код на другой адрес он будет не работоспособен


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


Новичок



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

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



Спасибо за помощь !
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.1056 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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