Wake of Gods Forum | Форум Во Имя Богов

Full Version: Исследование героев
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
а, так надо ж было или 7802h написать, или 0x7802
Каков аналог NOP для команды UN:C?
Опкод нопа - 90h = 144
(08.09.2010 22:48)GhostManSD Wrote: [ -> ]То есть для кнопки с кодом ID=7802 должно быть cmp eax, 7802?
в большинстве случаев проверяемые ID элементов окна в функции-обработчике находятся внутри switch-ей, поэтому ситуация cmp <ID>, 0x7777 встречается редко.
так свич - это и есть последовательность сравнений и прыжки на соотв. позиции.
Bers, спасибо! Т.е. если я хочу забить адрес NOP-ами, то я должен ввести !!UN:C[адрес] / [размер адреса] / 144;? А где размер адреса смотреть? Артмани подойдет?
nop - однобайтовая команда, а смотреть в оле, там слева от команд пишутся байты опкодов: e7 12345678 - 5 байт, 5 nop-ов нужно по одному.
Quote:так свич - это и есть последовательность сравнений и прыжки на соотв. позиции.
не всегда. Скажем, для свитчей на свойства существ используются две таблицы - таблица существ и таблица адресов обработчиков того или иного свитча. А итоговый код выглядит так:
Code:
CPU Disasm
Address   Hex dump          Command                                  Comments
00440906  |.  83C0 C1       ADD EAX,-3F                             ; Switch (cases 3F..87, 6 exits)
00440909  |.  83F8 86       CMP EAX,-7A
0044090C  |.  0F87 99090000 JA 004412AB
00440912  |.  33C9          XOR ECX,ECX
00440914  |.  8A88 4C7A7900 MOV CL,BYTE PTR DS:[EAX+797A4C]
0044091A  |.  FF248D C01244 JMP DWORD PTR DS:[ECX*4+4412C0]
3F - номер первого существа (артефакта, заклинания) в таблице соответствий.
797A4C - адрес таблицы соответствий (хранит номера ветвей-кейсов)
4412C0 - адрес таблицы обработчиков (хранит адреса ветвей-кейсов)
хм, интересно
Таблица NOP'ов с разным числом байт. (Макрос для MS VC)
db size dup(90h)
(09.09.2010 23:24)gamecreator Wrote: [ -> ]db size dup(90h)
Так не интересно. Ab Хотя, конечно, читается лучше.
зато сразу видно где забитые байты
Подскажите, пожалуйста, как найти адрес стандартного триггера WoG. Например, !?HE.

Кажись, вник. В комментариях - ошибки на неправильный синтаксис. Будем копать оттуда.
Нашел место, где сравниваются данные из EBP и номер героя (ввел специально неправильную команду !?HE-1). Вопрос: что теперь делать, чтобы присвоить -1 значение типа "если x=-1, то выполнять для каждого значения от 0 до 156"? Куды иттить, то бишь, где этот гребаный x искать?
Reference URL's