eXeL@B —› Крэки, обсуждения —› Алгоритм определения смещения в exe |
Посл.ответ | Сообщение |
|
Создано: 17 ноября 2005 20:45 · Личное сообщение · #1 |
|
Создано: 17 ноября 2005 20:51 · Личное сообщение · #2 |
|
Создано: 17 ноября 2005 21:16 · Личное сообщение · #3 |
|
Создано: 17 ноября 2005 21:20 · Личное сообщение · #4 |
|
Создано: 17 ноября 2005 21:29 · Личное сообщение · #5 |
|
Создано: 17 ноября 2005 21:34 · Личное сообщение · #6 |
|
Создано: 17 ноября 2005 21:46 · Личное сообщение · #7 |
|
Создано: 17 ноября 2005 21:56 · Личное сообщение · #8 |
|
Создано: 17 ноября 2005 23:23 · Личное сообщение · #9 Если я правильно понял задачу у нее есть как минимум 2 решения: 1. Вооружившись знаниями по формату PE (подборка доков с wasm.ru http://wasm.ru/docs/2/pe_docs.zip ) находить смещение с которым в файле лежит секция кода и складываем с AddressOfEntryPoint. 2. Несовсем правильное - смотрим в отладчике первые ~20 байт от EP и делаем поиск по ним в файле. Но мне кажется я не совсем правильно понял задачу. |
|
Создано: 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 |
|
Создано: 18 ноября 2005 11:28 · Личное сообщение · #11 |
|
Создано: 18 ноября 2005 12:38 · Личное сообщение · #12 |
|
Создано: 18 ноября 2005 12:05 · Личное сообщение · #13 |
eXeL@B —› Крэки, обсуждения —› Алгоритм определения смещения в exe |