Перейти к содержанию

Непонятный глюк в MASM


Рекомендуемые сообщения

Товарищи, я уже обгуглился, или просто очень хочу спать, но тем не менее. Делаю я, скажем, вот так:

val1_on db 90h,90h,90h,90h

Это ок. Теперь хочу сделать вот так:

val1_off db d8h,62h,24h,20h

...и при попытке скомпилировать это месье компилятор принимает "d8h" не за безобидный байт, а за нечто непонятное - illegal instruction, как бы - и компилировать отказывается.

Обнаружилось сие в WinAsm studio, попробовал с голым MASM 10 - то же самое, попрбовал на ХР (а не на 7) - то же самое. Что делать? Застрелиться? Выспаться?

Ссылка на комментарий
Поделиться на другие сайты

Самое смешное, что даже хайлайтер этого форума разными цветами подсвечивает "20h" и "d8h". Видимо, я что-то очень не так делаю, но раньше-то не было такого! ._.

Ссылка на комментарий
Поделиться на другие сайты

keng, если Masm нужен для трейнеров, то я рекомендую вместо этого способа создания трейнеров использовать сценарии Lua в CE и AA-скрипты.

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


captionWindow = 'My first Lua-trainer'

function OnClose(sender)
closeCE()
return caFree
end

trainerForm = createForm()
form_onClose(trainerForm, OnClose)
control_setCaption(trainerForm, captionWindow)
form_centerScreen(trainerForm)

Более подробно здесь. Я очень жду официального появления CE Lua Engine 6.2, потому что в ней (в SDK) уже исправлены многие ошибки и появились новые возможности.

Ссылка на комментарий
Поделиться на другие сайты

№3, до этого я уже догадался, но если сделать таким образом - WriteProcessMemory прекрасно этот ноль кушает и пытается записать. Т.е. пишет не "D8 62 24 20" (4 байта), а "0D 86 22 42".

№4, LUA - это круто, но я скриптовые языки не перевариваю, да и раз уже есть готовый движок на масме - тем более.

Буду дальше в документации копаться, не может это вот так внезапно перестать работать. Явно где-то ошибся. Самое смешное, что в fasm всё работает как часы, но masm мне просто привычнее. ):

Ссылка на комментарий
Поделиться на другие сайты

Сработала конструкция вида:

val db 12h
db 12h
db 12h

Но появилась проблема с записью. Продемонстрирую:

Оригинальная инструкция:

c458b66440ect.jpg

Пишем трейнером значение "90909090" (4 байта):

89dc5da7e13at.jpg

Пишем оригинальные 4 байта назад (D8622420) и получаем вот это:

b6397a29b5b9t.jpg

Ясное дело, игра крашится. Внимание, вопрос: У меня настолько кривые руки, что три инструкции под fasm и tasm работают аки часы, а под masm работать отказываются?.. :D

Ссылка на комментарий
Поделиться на другие сайты

Да, я уже тоже заметил (на других-то опкодах работало). Всё, спасибо, топик закрывать можно.

PS: А мне - побольше высыпаться. :)

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.