Полная версия этой страницы:
ЕРМ по сути
Д'якон
13 Sep 2007, 21:57
Что такое ЕРМ? Почему ее обноруживает и читает (может не правильно выразился) ехе файл. При помощи чего изменяются и редактируются ехе файл (например как был создан ТЕ ехезшник?). Как создаются программы под ехешник и.т.п? Может в одном посте не выложишь, но кто что знает - колитесь.
Berserker
13 Sep 2007, 22:10
Слава пишет программу на СИ (maybe ++), компилирует её и объединяет ехешнике так, что в начале идут два call-а Славы, то есть сперва инициализируется ехешник Славы, тут же идёт патчинг различных мест Героев.
Пример, идёт тут код героев перед битвой
...........
...........
..........
Слава находит удобное место и допустим меняет команду или несколько на call (вызов) триггер_ZVS
ЕРМ - это и есть основная функция ехешника ZVS, там идёт цикл анализа и выполнения ЕРМ команд, которые есть по сути текст.
В конце триггер возвращает управление и игра продолжает жить как жила.
Так что для всего этого тебе понадобятся всего две вещи:
- знание какого-небудь языка программирования класса С или Паскаля.
- знание ассемблера
Д'якон
13 Sep 2007, 22:25
Ну я немного знаю Делфи. Ассемблер - темный лес. Открывал ехешник HEX'ом - ничего не понял, нашел только адреса на дефы и звуки, ну и сообщения об ошибках, а в основном куча не понятных цифр и символов. Кроме НЕХ'а и ассемблера ничем не отредактировать? Или может есть что-то типа исходника?
sergroj
14 Sep 2007, 09:26
Основные инструменты - дизассемблер и дебаггер. Я использую Ida Pro, а дебаггер в основном W32Dsm, хотя у него мало возможностей.
Д'якон
14 Sep 2007, 09:37
А нельзя допустим запустить в окне героев, а рядом окно - типа командной строки где отображается цифровой вид (или код) игры?
gamecreator
14 Sep 2007, 11:10
ы? или ты имеешь ввиду оперативную память которую занимает игра?
Д'якон
14 Sep 2007, 12:05
Цитата(gamecreator @ 14 Sep 2007, 11:10)
ы? или ты имеешь ввиду оперативную память которую занимает игра?
Ы - по-моему это не полное слово.
Еще раз вопрос можно.
Д'якон
14 Sep 2007, 15:50
2 sergroj
Если можешь, дай ссылочку на КРЯКНУТЫЙ IDA PRO. Посмотреть хоть что это.
sergroj
14 Sep 2007, 15:54
Цитата(Д'якон @ 14 Sep 2007, 13:37)
А нельзя допустим запустить в окне героев, а рядом окно - типа командной строки где отображается цифровой вид (или код) игры?
Можно. Как и любые 2 окна. Только почуму-то мне кажется, что ты не этого хотел.
IDA Pro залью
Д'якон
14 Sep 2007, 16:08
Цитата(sergroj @ 14 Sep 2007, 15:54)
Цитата(Д'якон @ 14 Sep 2007, 13:37)
Можно. Как и любые 2 окна. Только почуму-то мне кажется, что ты не этого хотел.
Проехали.
Добавлено ([mergetime]1189775292[/mergetime]):
А еще в ЕРМ написано, что для его создания использовался файл zvslibl.dll - че-то я его не нашел в героях
Цитата(Д'якон @ 14 Sep 2007, 15:08)
А еще в ЕРМ написано, что для его создания использовался файл zvslibl.dll - че-то я его не нашел в героях
Не знаю как у тебя без него работали герои, но он находится в корневом каталоге и имеет название "zvslib1.dll".
Д'якон
14 Sep 2007, 17:43
Ну вот ...lib1, а не libl, поэтому и не находил.
Единица видно такая.
А ты поиск юзал? А то проглядеть по-моему невозможно, если только последний символ различается.
Д'якон
14 Sep 2007, 18:06
Да. Поиск.
Berserker
14 Sep 2007, 19:23
//Основные инструменты - дизассемблер и дебаггер. Я использую Ida Pro, а дебаггер в основном W32Dsm, хотя у него мало возможностей.
Дьякон задохнётся в окнах и опциях Иды. Olly Debugger проще, интуитивнее, быстрее и как нельзя кстати подходит для начинающих. Но без знаний асма Дьякону делатьв обоих нечего.
gamecreator
14 Sep 2007, 19:29
Цитата(Д'якон @ 14 Sep 2007, 12:05)
Ы - по-моему это не полное слово.

ы - это лол одной буквой.
обычно фраза "ы?" означает вопрос стоит ли тут смеяться (я использовал для обозначения непонимания)
Д'якон
14 Sep 2007, 21:00
Цитата(gamecreator @ 14 Sep 2007, 19:29)
лол
??
Berserker
14 Sep 2007, 21:09
лол = громкий смех
А за занудство можно схлопотать метку всеобщего недовольства. Бан, кстати, у нас не практикуется, а жаль.
Меня вообще прикалывают антифлудеры, которые флудят своим антифлудерством. А посты можно удалить: кто быстрее - ты сам или модер?
Berserker
14 Sep 2007, 22:50
вообще то вроде laugh out loud = lol
sergroj
16 Sep 2007, 16:41
Цитата(Berserker @ 14 Sep 2007, 23:23)
//Основные инструменты - дизассемблер и дебаггер. Я использую Ida Pro, а дебаггер в основном W32Dsm, хотя у него мало возможностей.
Дьякон задохнётся в окнах и опциях Иды. Olly Debugger проще, интуитивнее, быстрее и как нельзя кстати подходит для начинающих. Но без знаний асма Дьякону делатьв обоих нечего.

Вот где уж точно новичек задохнется во множестве окон, так это в Olly Debugger. Я начинал с Ida Pro и не помню особых проблем с его освоением. Вначале просто почти не использовал возможностей из менюшек, да и щас большинство не использую, но хорошо помню, что чтобы поставить Hardware Breakpoint в OllyDbg пришлось повозиться. Правда, лазить по коду в OllyDbg, наверное, так же просто, как в Ida Pro.
Цитата(Aleee @ 15 Sep 2007, 02:19)
Меня вообще прикалывают антифлудеры, которые флудят своим антифлудерством.
sergroj
16 Sep 2007, 17:07
Ida Pro зарарил, но не знаю, выкладывать ли... Проблема в том, что у меня винда летом начала глючить, антивирусы ничего не находят, да и я тоже, но все равно опасения на счет вируса есть.
А пока вот
описание ассемблера. Учти, что основная его часть ориентирована на дос и 16разрядные процессоры. Чтобы работать с 32 разрядами надо писать e перед названиями регистров, там приведенными: eax, ebx, ... То, что там говорится про адресацию, можешь пропускать - с 32 разрядами этих проблем уже нет. Еще учти, что функции могут не сохранять содержимое регистров eax, ecx, edx, но не ebx, как там написано.
Я программировал на Асме только используя его внутри функций высокоуровневого языка, думаю, так и тебе будет проще начать.
Если всерьез возьмешся, стучи в Асю по возникшим вопросам.
Д'якон
16 Sep 2007, 17:25
Ida Pro можешь не заливать, я уже закачал и крякнул (кря, кря

).
Почитаю манул

, если что обращусь. (Вероятнее всего)
sergroj
18 Sep 2007, 17:22
Кроме Асма, очень полезно знать WinAPI, чтобы что-то серьезное делать.
gamecreator
24 Sep 2007, 20:26
всмысле?
sergroj
26 Sep 2007, 18:57
Нет, вне WoG Team они не распространяются, а в WoG Team - не знаю, я не слышал, чтобы кто-то их когда-либо просил.
gamecreator
26 Sep 2007, 22:06
исходников вроде не существует. Слава вписывает код через дизассемблер.
sergroj
28 Sep 2007, 18:36
Такого монстра вписывать "через дизассемблер" - самоубийство. Слава пишет все на C++, а полученный exe-шник (t1.exe) подсоединяет к SoD'овскому с помощью своей утилиты. Остальные изменения оригинального exe'шника вносит славин код при запуске.
Berserker
28 Sep 2007, 19:26
Скажем не монстра, но всё-же игродел загнул

[Слава вписывает код через дизассемблер.]
Запоминает адреса, стёки и прочее. Второй Нео.
Д'якон
21 Oct 2007, 11:08
Как-то т-щ Берсеркер говорил о такой веще как HANDLE ПРОЦЕССА (если я не путаю).
Кто-нибудь знает что это? К чему относится и где об этом можно почитать?
gamecreator
21 Oct 2007, 11:15
это что-то типа указателя на процесс, некий "эквивалент" процесса в виде переменной.
Добавлено ([mergetime]1192954550[/mergetime]):
можно почитать в мсдн
Д'якон
21 Oct 2007, 11:18
Что есть мсдн?
gamecreator
21 Oct 2007, 11:31
sergroj
23 Oct 2007, 19:30
Handle процесса возвращает OpenProcess. Подавать ему надо ID процесса. Если есть hwnd окна, ID можно узнать с помощью GetWindowThreadProcessId.
А вообще, что ты хочешь сделать?
Д'якон
23 Oct 2007, 22:31
Сделать - громко сказано. Мне просто нужна информация, как можно подсоеденясь к "чужому" процессу, записать что-нибудь в его адресное пространство, либо подключить свою dll.
gamecreator
24 Oct 2007, 13:29
Цитата(Д'якон @ 23 Oct 2007, 22:31)
записать что-нибудь в его адресное пространство
надо присвоить указателю определенный адрес, но как это сделать - хз.
Д'якон
10 Nov 2007, 20:43
Пока г-н Берсеркер посещает форум, попробую еще раз задать свой вопрос:
Код
Мне просто нужна информация, как можно подсоеденясь к "чужому" процессу, записать что-нибудь в его адресное пространство, либо подключить свою dll.
gamecreator
10 Nov 2007, 21:11
WriteProcessMemory, ReadProcessMemory если не ошибаюсь.
а еще права администратора
sergroj
11 Nov 2007, 15:21
Так можно запустить 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;
Для изменения чего-то в памяти этого будет достаточно.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.