Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых)

 eXeL@B —› Программирование —› Patch не через Offset
Посл.ответ Сообщение

Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 22 января 2007 15:48
· Личное сообщение · #1

Вобщем кто знает как осуществить сабж?

Я патчу вот таким макаром:

//-----------------------------------
Seek(F, $<Offset>);
Ch:=Char($<byte>);
BlockWrite(F, Ch, 1);
//-----------------------------------

Кто знает как выполнять поиск чтобы вместо смещения в файле писать виртуальный адрес.

-----
xchg dword [eax], eax





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

Создано: 22 января 2007 16:06
· Личное сообщение · #2

v0id2k, читать PE, заголовки секций и смотреть в какую секцию попадает твой байт, потом смотреть где эта секция в файле.




Ранг: 120.9 (ветеран), 5thx
Активность: 0.080
Статус: Участник
Programmer and reverser

Создано: 22 января 2007 17:07
· Личное сообщение · #3

почитай сначала что-нить про формат PE32 и сразу все станет ясно.
Прикрепляю статью "От зеленого к красному" с wasm'а.
а вообще:
offset = RVA – IMAGE_SECTION_HEADER.VirtualAddress +IMAGE_SECTION_HEADER.PointerRawData
RVA = VA - IMAGE_OPTIONAL_HEADER.ImageBase
следовательно:
offset = (VA - IMAGE_OPTIONAL_HEADER.ImageBase) – IMAGE_SECTION_HEADER.VirtualAddress +IMAGE_SECTION_HEADER.PointerRawData, где VA - твой виртуальный адрес.
v0id2k пишет:
вместо смещения в файле писать виртуальный адрес
- мне кажется, что это нафиг не нужно. но это мое скромное мнение)

a5bb_22.01.2007_CRACKLAB.rU.tgz - green2red.rar

-----
Уважайте других и пишите грамотно.




Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 22 января 2007 17:32
· Личное сообщение · #4

Executioner
Спасибо, давно искал эту статью. На wasm'e видать не там искал.
Еще раз спасибо. Думаю тему можно закрывать.

-----
xchg dword [eax], eax



 eXeL@B —› Программирование —› Patch не через Offset
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати