как записать на FASM следующую конструкцию на MASM: assume esi: ptr IMAGE_DOS_HEADER add esi, [esi].e_lfanew ?
тема не раз поднималась, юзайте поеск перед тем как чтото запостеть Code (Text): virtual at esi dos_header IMAGE_DOS_HEADER end virtual add esi,[dos_header.e_lfanew]
Фримэн ответил точнее, хотя мне такой вариант не очень нравится. Предпочитаю использовать последний вариант, но для его работы директиву virtual я использую по-другому: Code (Text): virtual at 0 IMAGE_DOS_HEADER IMAGE_DOS_HEADER end virtual ... add eax,[esi+IMAGE_DOS_HEADER.e_lfanew]
я что-то пробовал ваот таким вот образом вытянуть значение Code (Text): virtual at 0 IMAGE_DOS_HEADER IMAGE_DOS_HEADER end virtual add eax,[esi+IMAGE_DOS_HEADER.e_lfanew] на строке MAGE_DOS_HEADER IMAGE_DOS_HEADER выскакивает illegal instruction какие тут есть тонкости ?
n1kt0 Если есть структура, как struct IMAGE_DOS_HEADER ..... ends то писать надо add eax,[esi+IMAGE_DOS_HEADER.e_lfanew] а с vitrual попробуй так: virtual at esi IMAGE_DOS_HEADER <> end virtual
n1kt0, значит, ты не объявил структуру IMAGE_DOS_HEADER! Code (Text): struc IMAGE_DOS_HEADER { ... } virtual at 0 IMAGE_DOS_HEADER IMAGE_DOS_HEADER end virtual ... add eax,[esi+IMAGE_DOS_HEADER.e_lfanew]
В последних версиях может и не обязательно - не пробовал. А вот в более ранних версиях было обязательно.
Sol_Ksacap, Phantom_84, обязательно, если структура сделана через struc и не нужно (не скомпилируется даже), если структура сделана через struct.
Про использование макроса struct никто ничего не говорил. В таком случае не следует забывать про это: include "macro/struct.inc"