Русский / Russian English / Английский

Сейчас на форуме: (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Крэки, обсуждения —› Алгоритм определения смещения в exe
Посл.ответ Сообщение

Ранг: 6.0 (гость)
Статус: Участник

Создано: 17 ноября 2005 20:45 New!
Цитата · Личное сообщение · #1

Кокой алгоритм определения смещения в exe относительно начала файла для Entrypoint? Желательно на делфи или асме.

Ранг: 450.1 (мудрец)
Статус: Участник

Создано: 17 ноября 2005 20:51 New!
Цитата · Личное сообщение · #2

вообще важно свой файл или чужой, алго будет другой
но в любом случае нужно наверно текущий eip определить сначала

Ранг: 6.0 (гость)
Статус: Участник

Создано: 17 ноября 2005 21:16 New!
Цитата · Личное сообщение · #3

100% чужой .... а ЕР - ведь через _IMAGE_OPTIONAL_HEADER
AddressOfEntryPoint: DWORD; //Виртуальный адрес точки входа в PE-файл

Ранг: 450.1 (мудрец)
Статус: Участник

Создано: 17 ноября 2005 21:20 New!
Цитата · Личное сообщение · #4

еще не плохо бы знать это все в памяти или нужно в файле на диске что-то найти?

Ранг: 79.6 (постоянный)
Статус: Участник
алХимик

Создано: 17 ноября 2005 21:29 New!
Цитата · Личное сообщение · #5

ImpleX

Это типа VA в offset ?


Ранг: 500.5 (!)
Статус: Участник

Создано: 17 ноября 2005 21:34 New!
Цитата · Личное сообщение · #6

ImpleX
Может смещение в байтах относительно заголовка ?

Ранг: 450.1 (мудрец)
Статус: Участник

Создано: 17 ноября 2005 21:46 New!
Цитата · Личное сообщение · #7

фтопку короче такие вопросы, нужно сначала подробно изложить что нужно

Ранг: 516.1 (!)
Статус: Участник

Создано: 17 ноября 2005 21:56 New!
Цитата · Личное сообщение · #8

offset2rva, rva2offset чтоли?

Ранг: 17.8 (новичок)
Статус: Участник

Создано: 17 ноября 2005 23:23 New!
Цитата · Личное сообщение · #9

Если я правильно понял задачу у нее есть как минимум 2 решения:
1. Вооружившись знаниями по формату PE (подборка доков с wasm.ru http://wasm.ru/docs/2/pe_docs.zip ) находить смещение с которым в файле лежит секция кода и складываем с AddressOfEntryPoint.
2. Несовсем правильное - смотрим в отладчике первые ~20 байт от EP и делаем поиск по ним в файле.
Но мне кажется я не совсем правильно понял задачу.


Ранг: 500.5 (!)
Статус: Участник

Создано: 18 ноября 2005 08:42 · Поправил: Smon New!
Цитата · Личное сообщение · #10

ImpleX

если ты хочешь перевести указатель на еп или считать с него байты -

Potok.Seek(PEPosition+248,soFromBeginning); - смещение в байтах к началу первой секции относительно сигнатуры PE

For I:=1 to (SectionCol) do begin;
Potok.Seek(8,soFromCurrent);
Potok.ReadBuffer(VIRTSIZE,4);
Potok.ReadBuffer(VIRTOFFSET,4);
Potok.ReadBuffer(RAWSIZE,4);
Potok.ReadBuffer(RAWOFFSET,4); - читаем атрибуты секций
If (EntryPoint>=VIRTOFFSET) and (EntryPoint<=VIRTOFFSET+RAWSIZE) then begin
OFFSET:=VirtOFFSET+RAWSIZE-EntryPoint;
MESTO:=RawSize+RawOffset-OFFSET; - вычисляем смещение ep
Potok.Seek(Mesto,SoFromBeginning); - переводим указатель на вычисленный ep
Potok.ReadBuffer(EPBytes,4); -читаем байты в буфер
goto SectNaydena;
end;
Potok.Seek(16,soFromCurrent);
end;

SectNaydena:
Edit10.Text:=InttoHex(EPBytes,8); - байты с еp


или можно использовать PE_Files by DrGolova - в аттаче =)

SetFilePointer(hFile,PE_HEADER.OPTIONAL_HEADER.AddressOfEntryPoint,NIL ,FILE_BEGIN); -указатель на ep
ReadFile(hFile,buffer,50,bread,NIL); - считываем 50 байт с ep в массив buffer

{ Атач доступен только для участников форума }

Ранг: 6.0 (гость)
Статус: Участник

Создано: 18 ноября 2005 11:28 New!
Цитата · Личное сообщение · #11

Да какой оффтоп ....... Смещение (offset) относительно начала файла для ЕР - проще на примере - все PEiD пользовались - второй edit с верху (offset) - вот я спросшивал про это.
Smon
Спасибо - более чем достаточно!

Ранг: 516.1 (!)
Статус: Участник

Создано: 18 ноября 2005 12:38 New!
Цитата · Личное сообщение · #12

mappedfile+IMAGE_DOS_HEADER.e_lfanew+IMAGE_NT_HEADERS.OptionalHeader.A ddressOfEntryPoint

Ранг: 6.0 (гость)
Статус: Участник

Создано: 18 ноября 2005 12:05 New!
Цитата · Личное сообщение · #13

Всем спасибо разобрался.
Пример Smon-а прекрасно работает.
 eXeL@B —› Крэки, обсуждения —› Алгоритм определения смещения в exe

Видеокурс ВЗЛОМ