![]() |
|
|
![]()
|
|
| Router |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.11.2007 Репутация: нет Всего: нет |
Мне нужно вставить код в exe файл.
Хотелось бы узнать, обязательно вставлять код в одну из секций? И, как вычислить точку входа для вставленного кода, если он в одной из секций или за приделами секций. Ну короче есть смещение в файле, и мне нужно поставить туда точку входа, чтобы мой код выполнялся самым первым. Код просить не буду, но хотелось бы услышать подробный алгоритм. Спасибо ! |
|||
|
||||
| DRUID3 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 20.6.2005 Где: Kyyiv Репутация: нет Всего: 9 |
...Читать Касперского...
-------------------- Every time if you use Linux, you are joined to the communism... практика - критерий истины ... отделенной от нас пропастью субъективного восприятия... |
|||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: нет Всего: 40 |
Router, ты думаешь что сумел без палева свои желания??
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 2 Всего: 158 |
||||
|
||||
| Router |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.11.2007 Репутация: нет Всего: нет |
Да похож на вирус, но это мне нужно для конкретной прикладной программы.
В PE заголовке есть число, которая называется точкой входа (AddressOfEntryPoint), и указывает на первые команды которые будут выполнятся при старте программы. Так как я хочу чтобы мои команды которые я вставил выполнялись первыми, я хочу поменять AddressOfEntryPoint, так чтобы этот адрес указывал на мой код. Но я не знаю как правильно вычислять ? А что значит читай касперского, что имено читать и где ? |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 2 Всего: 158 |
||||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Router, почитай немного про PE формат
вкратце, чтобы выполнить свой код до запуска .exe используются такие варианты: 1) пишется базонезависимый код на асме или на С, записывается в любое свободное место файла , точка входа переключается на него (можно базозависимый, если база фиксирована) 2) пишется длл на любом ЯВУ, добавляется в таблицу импорта .exe, код DllMain() выполнится раньше чем код .exe второй вариант весьма хорош, но требует наличия длл в папке с .exe что не всегда удобно первый вариант достаточно сложен, но если кода мало - он подойдет Куда писать свой код 1) в заголовок 2) в любую секцию где есть свободное место (много нулей) 3) в конец последней секции, увеличив ее размер в PE заголовке 4) в новую секцию которую можно разместить в конце файла (можно и в середине) Как пересчитать адрес точки входа Значение в поле EntryPoint - это относительный адрес в памяти (rva), чтобы пресчитать смещение в файле в rva проще воспользоваться калькулятором (например в PE tools) ------ точку входа можно вообще не трогать, а написать туда jmp на твой код, выполнив потом убитые этим jmp'ом инструкции Это сообщение отредактировал(а) GoldFinch - 15.7.2009, 11:56 |
|||
|
||||
![]()
|
| Правила форума "Asm для Windows/DOS" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для Windows/Dos | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |