Про точку входа

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Про точку входа

Сообщение |kerish| » 18.12.2006 (Пн) 23:34

Задача: Программно найти точку входа у EXE-шника.
Сталкивался кто-нибудь?
Примеры были бы бесценны...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 19.12.2006 (Вт) 0:25

Решение: Изучить формат PE.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 19.12.2006 (Вт) 1:42

Дело в том, что у меня очень мало времени для чтого, чтобы мучаться со структурой PE :(

Перефразирую: Кто-нибудь встречался с примерами нахождения точки входа EXE файла на VB?

Ну или на крайняк на C++...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 19.12.2006 (Вт) 2:04

Тут, наверно, есть.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 24.12.2006 (Вс) 16:01

Мдааа...не думал, что нахождение точки входа в экзешник такое загонное дело.

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 24.12.2006 (Вс) 22:27

|kerish|
Чуть чуть усилий нужно приложить. Я начал с поиска "PE structure", гугла мне выдала, чтото не по теме. Второй поиск пошел со словами "portable executable structure". Первая ссылка ведет на Википедию, где этот формат описывается. Жаль но спецификаций нет, поэтому прокручиваем вниз к источникам и внешним ссылкам. Видим "Microsoft Portable Executable and Common Object File Format Specification", переходим на официальную спецификацию формата. Соглашаемся с лицензией использования, скачиваем документ в Ворде. Ищем "entry point" и находим описание на 11-ой странице - поле называется AddressOfEntryPoint. Теперь ищем код на VB6 где фигурирует данный термин. Ради интереса я поискал на нашел форуме и нашел исходники инжектинга в живой процесс. Если посмотреть на содержимое файла mod_RunIn.bas можно увидеть нужные структуры для чтения PE файла. Но скажем мы совсем совсем не понимаем как грузить бинарный файл, поэтому мы запрягаем гуглу на поиск "vb6 AddressOfEntryPoint". Среди них есть много интересных результатов например этот. Собирая по кусочкам ты получишь то что тебе нужно.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 25.12.2006 (Пн) 0:02

Могу скинуть свой модуль для работы с PE. Главная функция AnalyzeExe. После вызова её адрес Entry Point лежит в в поле AddressOfEntryPoint структуры inh.OptionalHeader
Вложения
modPE.rar
Модуль для работы с PE
(4.04 Кб) Скачиваний: 98
Подпись проходит рефакторинг

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 25.12.2006 (Пн) 16:22

Всем большое спасибо!
Буду разбираться.

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 26.12.2006 (Вт) 13:12

Ещё раз спасибо за модуль!
При разборе этого модуля у меня возник вопрос: А можно с его помощью найти начало определенной секции?

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 26.12.2006 (Вт) 19:13

|kerish|
См. ЛС
Подпись проходит рефакторинг

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 26.12.2006 (Вт) 19:19

Lumen Спасибо!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 106

    TopList  
cron