Цитата(MasterOfPuppets @ 12 Jul 2019, 14:30)

Занести адрес массива в какую-нибудь глобальную переменную, а прыжок исправить на jmp [переменная].
Или не?
Вообще, вроде в ЭРЕ давно есть способы вставки хука, а тебе он и нужен, как я понял.
Неплохая идея. Правда не до конца представляю как это сделать, что бы работало. Спасибо.
Цитата(tolich @ 12 Jul 2019, 16:49)

0777A02D - 777A0013 = 8FFDA01A
(байты в команде в обратном порядке, потому что intel)
Точно! Блин как я забыл это в расчет взять. А то какие то триллионные значения получались. Спасибо.
Цитата(igrik @ 12 Jul 2019, 17:37)

Это не самая большая проблема.
Насущный вопрос: как вернуться таким способом назад, в исходное место?
Эровский числовой массив состоит из интов, а чтобы записать команду JMP нужен байт. Можно конечно запилить сначала 3 нопа, а потом JMP и адрес прыжка назад (который тоже еще нужно высчитать!), но как по мне всё это еще тот гемор. Это нужно вычислить адрес переменной массива, которая будет указывать на обратный адрес, потом через UN:C по этому адресу записать нопы и опткод джампа, в следующей перменной массива нужно указать высчитанное смещение назад и правильно его записать обратно в массив, смещение к тому же будет зависеть от длинны массива. В во всём этом винигрете нужно еще не запороть регистры. Ахтунг, одним словом...
И что это за такая интересная команда?!
Код
!!UN:Cy1/5/?"G"
Во первых: UN:C поддерживает только 1, 2 или 4 байта для патчинга.
Во вторых: ?"G" - WTF?!
И еще: не забываем про точки с запятой...
Хорошо и правильно объяснили. Пытался пробовать. Это просто капец. Вообщем пришёл к выводу, что сделать даже часть задуманного через !!SN:M, нужны железобетонные нервы.
Команды !!UN:Cy1/5/?"G" не существует, это эмоциональная составляющая). А точки с запятой, это, да. Спасибо.
Цитата(feanor @ 12 Jul 2019, 21:58)

Не джампьте в память, пацаны, вы матерям еще нужны
а если все-таки ннадо, то делайте примерно так...
если свободных регистров нет, а их обычно нет, то можно в стек засунуть, а в конце своего кода высунуть
А вообще именно на этом месте надо все-таки осваивать плагины
Про регистры не понял, знаний нет. А плагины потихоньку стараюсь. Спасибо.
Цитата(Berserker @ 13 Jul 2019, 00:04)

А почему на этом месте не освоить Erm Hooker 2.0?
Это дело. Erm Hooker это просто класс, отдельная бладарность тому кто это сделал, уже использую его правда методом тыка, однако получается. Спасибо.
И отдельное Спасибо Вам за создание платформы ERA!Цитата(XEPOMAHT @ 13 Jul 2019, 02:26)

Пихать куда-то байткод через ERM - очень неудачное решение для применения ERM. Намного более разумным шагом будет создание собственной dll средствами бесплатного FASM например.
Либо использовать статичное адресное пространство (если нужны дозы БДСМ-байткодинга, пусть и на ERM), которое всегда можно найти, было бы желание:
1. Можно патчить код, выделяющий и очищающий память под основные игровые массивы данных. Через ERM всегда можно прочитать базовый адрес и что-то записать и прочитать за игровыми данными, под которые будет выделена память "сверх нормы". Патчить, естественно, в exe, через dll или bin. Ну а читать и записывать можно через ERM.
2. Можно записывать код в огромное количество NOPS, располагающихся между функциями (если мало, то можно оптимизировать окончания функций - многие имеют повторяющиеся элементы - для кода ставятся прыжки с повторов на один единый участок, для данных кейсов - изменяются их адреса в самих функциях) (если и этого мало, то можно двигать сами функции, расширяя таким образом NOPS, но это уже совсем для каких-то маняков).
3. Можно оптимизировать сами геройские функции, освобождая пространство - вынос повторяющихся линейных участков функций в отдельные функции с установкой их вызовов (будет работать немного медленнее, но зато освободится куча пространства), снижение размера самого кода - использование более коротких, но более затратных для ЦП, команд, например, хорошие результаты даёт добавление прямой команды умножения вместо оптимизационной колбасы из имитации умножения (так же будет работать немного медленнее, но зато освободится куча пространства), а воговский код в exe достаточно топорно собран и без особых проблем ужимается раза вчетверть где-то.
Но.... есть одно но: все эти "процессы" отнимут огромное количество времени - Richter, твой мод выйдет намного намного намного намного быстрее, если всё делать по-человечески через DLL, а не через ж.пу.
А вот так на данный момент и действую, вроде получается, времени требует много, чтобы не порушить код.
Динамические библиотеки вообще не знаю с чего начать. Искал видео на ютубе, непонятно нифига. Вообщем как не умел, так и не умею. Как бы то нибыло мод будет закончен. Было бы здоровье как говорится.
Спасибо.
Может кто нибудь сможет написать пустую DLL со статическими адресами для использования?