Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ЕРМ по сути
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Д'якон
Что такое ЕРМ? Почему ее обноруживает и читает (может не правильно выразился) ехе файл. При помощи чего изменяются и редактируются ехе файл (например как был создан ТЕ ехезшник?). Как создаются программы под ехешник и.т.п? Может в одном посте не выложишь, но кто что знает - колитесь.
Berserker
Слава пишет программу на СИ (maybe ++), компилирует её и объединяет ехешнике так, что в начале идут два call-а Славы, то есть сперва инициализируется ехешник Славы, тут же идёт патчинг различных мест Героев.

Пример, идёт тут код героев перед битвой

...........
...........
..........

Слава находит удобное место и допустим меняет команду или несколько на call (вызов) триггер_ZVS

ЕРМ - это и есть основная функция ехешника ZVS, там идёт цикл анализа и выполнения ЕРМ команд, которые есть по сути текст.

В конце триггер возвращает управление и игра продолжает жить как жила.

Так что для всего этого тебе понадобятся всего две вещи:

- знание какого-небудь языка программирования класса С или Паскаля.

- знание ассемблера
Д'якон
Ну я немного знаю Делфи. Ассемблер - темный лес. Открывал ехешник HEX'ом - ничего не понял, нашел только адреса на дефы и звуки, ну и сообщения об ошибках, а в основном куча не понятных цифр и символов. Кроме НЕХ'а и ассемблера ничем не отредактировать? Или может есть что-то типа исходника?
sergroj
Основные инструменты - дизассемблер и дебаггер. Я использую Ida Pro, а дебаггер в основном W32Dsm, хотя у него мало возможностей.
Д'якон
А нельзя допустим запустить в окне героев, а рядом окно - типа командной строки где отображается цифровой вид (или код) игры?
gamecreator
ы? или ты имеешь ввиду оперативную память которую занимает игра?
Д'якон
Цитата(gamecreator @ 14 Sep 2007, 11:10)
ы? или ты имеешь ввиду оперативную память которую занимает игра?

Ы - по-моему это не полное слово. rolleyes.gif
Еще раз вопрос можно.
Д'якон
2 sergroj
Если можешь, дай ссылочку на КРЯКНУТЫЙ IDA PRO. Посмотреть хоть что это.
sergroj
Цитата(Д'якон @ 14 Sep 2007, 13:37)
А нельзя допустим запустить в окне героев, а рядом окно - типа командной строки где отображается цифровой вид (или код) игры?

Можно. Как и любые 2 окна. Только почуму-то мне кажется, что ты не этого хотел. idontno.gif

IDA Pro залью
Д'якон
Цитата(sergroj @ 14 Sep 2007, 15:54)
Цитата(Д'якон @ 14 Sep 2007, 13:37)

Можно. Как и любые 2 окна. Только почуму-то мне кажется, что ты не этого хотел. idontno.gif


Проехали.

Добавлено ([mergetime]1189775292[/mergetime]):
А еще в ЕРМ написано, что для его создания использовался файл zvslibl.dll - че-то я его не нашел в героях
Aleee
Цитата(Д'якон @ 14 Sep 2007, 15:08)
А еще в ЕРМ написано, что для его создания использовался файл zvslibl.dll - че-то я его не нашел в героях

Не знаю как у тебя без него работали герои, но он находится в корневом каталоге и имеет название "zvslib1.dll".
Д'якон
Ну вот ...lib1, а не libl, поэтому и не находил.
Aleee
Единица видно такая.
А ты поиск юзал? А то проглядеть по-моему невозможно, если только последний символ различается.
Д'якон
Да. Поиск.
Berserker
//Основные инструменты - дизассемблер и дебаггер. Я использую Ida Pro, а дебаггер в основном W32Dsm, хотя у него мало возможностей.

Дьякон задохнётся в окнах и опциях Иды. Olly Debugger проще, интуитивнее, быстрее и как нельзя кстати подходит для начинающих. Но без знаний асма Дьякону делатьв обоих нечего.
gamecreator
Цитата(Д'якон @ 14 Sep 2007, 12:05)
Ы - по-моему это не полное слово.  rolleyes.gif

ы - это лол одной буквой.
обычно фраза "ы?" означает вопрос стоит ли тут смеяться (я использовал для обозначения непонимания)
Д'якон
Цитата(gamecreator @ 14 Sep 2007, 19:29)
лол


??
Berserker
лол = громкий смех
Aleee
А за занудство можно схлопотать метку всеобщего недовольства. Бан, кстати, у нас не практикуется, а жаль.

Меня вообще прикалывают антифлудеры, которые флудят своим антифлудерством. А посты можно удалить: кто быстрее - ты сам или модер?
Berserker
вообще то вроде laugh out loud = lol
sergroj
Цитата(Berserker @ 14 Sep 2007, 23:23)
//Основные инструменты - дизассемблер и дебаггер. Я использую Ida Pro, а дебаггер в основном W32Dsm, хотя у него мало возможностей.

Дьякон задохнётся в окнах и опциях Иды. Olly Debugger проще, интуитивнее, быстрее  и как нельзя кстати подходит для начинающих. Но без знаний асма Дьякону делатьв  обоих нечего.

fie.gif Вот где уж точно новичек задохнется во множестве окон, так это в Olly Debugger. Я начинал с Ida Pro и не помню особых проблем с его освоением. Вначале просто почти не использовал возможностей из менюшек, да и щас большинство не использую, но хорошо помню, что чтобы поставить Hardware Breakpoint в OllyDbg пришлось повозиться. Правда, лазить по коду в OllyDbg, наверное, так же просто, как в Ida Pro.

Цитата(Aleee @ 15 Sep 2007, 02:19)
Меня вообще прикалывают антифлудеры, которые флудят своим антифлудерством.

laugh.gif
sergroj
Ida Pro зарарил, но не знаю, выкладывать ли... Проблема в том, что у меня винда летом начала глючить, антивирусы ничего не находят, да и я тоже, но все равно опасения на счет вируса есть.
А пока вот описание ассемблера. Учти, что основная его часть ориентирована на дос и 16разрядные процессоры. Чтобы работать с 32 разрядами надо писать e перед названиями регистров, там приведенными: eax, ebx, ... То, что там говорится про адресацию, можешь пропускать - с 32 разрядами этих проблем уже нет. Еще учти, что функции могут не сохранять содержимое регистров eax, ecx, edx, но не ebx, как там написано.
Я программировал на Асме только используя его внутри функций высокоуровневого языка, думаю, так и тебе будет проще начать.
Если всерьез возьмешся, стучи в Асю по возникшим вопросам.
Д'якон
Ida Pro можешь не заливать, я уже закачал и крякнул (кря, кря biggrin.gif ).
Почитаю манул lupa.gif , если что обращусь. (Вероятнее всего)
sergroj
Кроме Асма, очень полезно знать WinAPI, чтобы что-то серьезное делать.
gamecreator
всмысле?
sergroj
Нет, вне WoG Team они не распространяются, а в WoG Team - не знаю, я не слышал, чтобы кто-то их когда-либо просил.
gamecreator
исходников вроде не существует. Слава вписывает код через дизассемблер.
sergroj
Такого монстра вписывать "через дизассемблер" - самоубийство. Слава пишет все на C++, а полученный exe-шник (t1.exe) подсоединяет к SoD'овскому с помощью своей утилиты. Остальные изменения оригинального exe'шника вносит славин код при запуске.
Berserker
Скажем не монстра, но всё-же игродел загнул smile.gif
[Слава вписывает код через дизассемблер.]
Запоминает адреса, стёки и прочее. Второй Нео.
Д'якон
Как-то т-щ Берсеркер говорил о такой веще как HANDLE ПРОЦЕССА (если я не путаю).
Кто-нибудь знает что это? К чему относится и где об этом можно почитать?
gamecreator
это что-то типа указателя на процесс, некий "эквивалент" процесса в виде переменной.

Добавлено ([mergetime]1192954550[/mergetime]):
можно почитать в мсдн
Д'якон
Что есть мсдн?
gamecreator
http://msdn2.microsoft.com/ru-ru/default.aspx
sergroj
Handle процесса возвращает OpenProcess. Подавать ему надо ID процесса. Если есть hwnd окна, ID можно узнать с помощью GetWindowThreadProcessId.
А вообще, что ты хочешь сделать?
Д'якон
Сделать - громко сказано. Мне просто нужна информация, как можно подсоеденясь к "чужому" процессу, записать что-нибудь в его адресное пространство, либо подключить свою dll.
gamecreator
Цитата(Д'якон @ 23 Oct 2007, 22:31)
записать что-нибудь в его адресное пространство

надо присвоить указателю определенный адрес, но как это сделать - хз.
Д'якон
Пока г-н Берсеркер посещает форум, попробую еще раз задать свой вопрос:
Код
Мне просто нужна информация, как можно подсоеденясь к "чужому" процессу, записать что-нибудь в его адресное пространство, либо подключить свою dll.
gamecreator
WriteProcessMemory, ReadProcessMemory если не ошибаюсь.
а еще права администратора
sergroj
Так можно запустить WoG и получить хэндл процесса в переменную h:
Код
var
 si: TStartupInfo; pi: TProcessInformation;
 h: THandle;


    // Start WOG
   FillChar(SI, SizeOf(SI), $00);
   FillChar(PI, SizeOf(PI), $00);
   SI.cb := SizeOf(SI);
  Win32Check(CreateProcess(PChar(ExtractFilePath(ParamStr(0))+'h3wog.exe'), '', nil, nil, False, 0, nil, nil, SI, PI));
   CloseHandle(PI.hThread);
   h:=pi.hProcess;

Для изменения чего-то в памяти этого будет достаточно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.