· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› PTR

Посл.отвђт Сообщенiе


Дата: Авг 26, 2003 19:01:58

Вот такой кусочек кода:
...
local MZh : PTR IMAGE_DOS_HEADER
...
mov eax, modbase
mov MZh, eax     
.if [MZh].e_magic!=IMAGE_DOS_SIGNATURE
  int 03h
  ret
.endif
...

В итоге компилятор ругается, что undefined symbol e_magic. Может я не так понимаю смысл ptr.


Дата: Авг 26, 2003 19:12:12

Я не очень хорошо знаю синтаксис MASM но мне кажется, что скобки в выражении [MZh].e_magic не нужны


Дата: Авг 26, 2003 19:15:19

Вроде нужны, но если убрать, то все равно такой же результат...


Дата: Авг 26, 2003 20:05:13

Вроде так:

...
mov di,modbase
.if (IMAGE_DOS_HEADER PTR [di]).e_magic!=IMAGE_DOS_SIGNATURE
int 03h
ret
.endif
...


Дата: Авг 27, 2003 11:16:01 · Поправил: Four-F

R4DX, твоя MZh на самом деле ebp+что-то. Поэтому [ebp+<что-то>].<еще что-то> работать не будет. Делай так:
...
local MZh : PTR IMAGE_DOS_HEADER
...
mov eax, modbase
mov MZh, eax     
.if [IMAGE_DOS_HEADER PTR [eax]].e_magic != IMAGE_DOS_SIGNATURE
  int 03h
  ret
.endif
...


Обрати внимание на квадратные скобки. Во всех других случаях используют обычно круглые, например так:
mov ax, (IMAGE_DOS_HEADER PTR [eax]).e_magic

Но в .if это не работает - только квадратные!


Дата: Авг 27, 2003 12:17:39

Спасибо большое, все работает.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.070