Сейчас на форуме: kris_sexy, Wenzel, r0lka, yashechka (+5 невидимых)

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

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

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

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



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

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

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



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

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

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



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

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

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



Ранг: 79.6 (постоянный), 2thx
Активность: 0.080
Статус: Участник
алХимик

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

ImpleX

Это типа VA в offset ?

-----
Все говорят что мы вместе. Но не многие знают в каком.




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

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

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

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels




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

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

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



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

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

offset2rva, rva2offset чтоли?



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

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

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



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 18 ноября 2005 08:42 · Поправил: Smon
· Личное сообщение · #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

5c99_PE_Files.pas

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels




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

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

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



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

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

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



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

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

Всем спасибо разобрался.
Пример Smon-а прекрасно работает.


 eXeL@B —› Крэки, обсуждения —› Алгоритм определения смещения в exe
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати