Обсуждение инженерного анализа |
Здравствуйте, гость ( Вход | Регистрация )
Обсуждение инженерного анализа |
03 Dec 2017, 19:43
Сообщение
#401
|
|
Immortal Сообщений: 1 468 Спасибо сказали: 1151 раз |
Но если указанный файл содержит только геройские структуры и функции (возможно, на пару с cpp), то вреда от его публикации ведь не будет?
-------------------- |
|
|
03 Dec 2017, 20:50
Сообщение
#402
|
|
Immortal Сообщений: 9 403 Спасибо сказали: 3770 раз |
Анализ кода игры и сбор реверсерской информации — такой же труд, как и написание нового кода по этой информации. Лично для меня анализ даже более важен. Поэтому отношение к заголовочникам у меня такое же, как к коду, а к базам ещё более бережное.
Многие люди работают над проектами с открытым исходным кодом — и то, что они его открывают, достойно уважения. Но для меня такой режим разработки неприемлем. Практика показала, что в вопросе модификации игры меня серьёзно мотивирует только работа на развитие и продвижение большого проекта. А продвижение в немалой степени обеспечивается за счёт вещей, которые удалось сделать мне и не удалось (или не было попыток) сделать в других проектах. Включая глубокий анализ кода игры и возможность за счёт этого более качественно исправлять её ошибки и реализовывать нововведения. Так что выкладывание каких-то частей исходников не вписывается в мой образ деятельности как моддера — у меня нет желаниия работать в таком режиме. Если рассматривать взаимодействие с «остальным миром», то, грубо говоря, есть два варианта моей моддерской деятельности: либо я работаю на развитие продвижение только HotA (и код не выкладывается публично), либо я вообще не занимаюсь моддингом (и код не выкладывается, потому что просто не был написан). С учётом того, что аудитория HotA не так уж и мала, думаю, первый вариант всё же более полезен «остальному миру». Врочем, когда я буду уверен, что больше не стану работать над серьёзным проектом в Героях, я, скорее всего, выложу свои наработки. |
|
|
04 Dec 2017, 01:14
Сообщение
#403
|
|
Immortal Сообщений: 2 412 Спасибо сказали: 4617 раз |
Тот HOMM3.h все-таки не из хоты, а из ХД.
Я при необходимости брал какие-то вещи из хотовского HOMM3.h в ХДшный. Исходники ХД же я одно время вообще выкладывал в открытый доступ, позднее изредка передавал кому-нибудь с условием нераспространения. Так что я причина утечки из хоты. -------------------- |
|
|
04 Dec 2017, 01:55
Сообщение
#404
|
|
Immortal Сообщений: 9 403 Спасибо сказали: 3770 раз |
Я сравнивал с выкладывавшимся вариантом из HD 3.15f, там есть отличия. Например, содержимое Base.h соответствует хотовскому, а не HD-шному варианту (есть TFileStream, TArray и т. п.). Поэтому это взялось скорее из какого-то другого источника и от хотовских исходников.
Но по содержательной части добавлений относительно выкладывавшихся исходников HD и BattleFigures там немного, так что всё это не столь важно. |
|
|
04 Dec 2017, 17:02
Сообщение
#405
|
|
Immortal Сообщений: 2 412 Спасибо сказали: 4617 раз |
Да, TFileStream, TArray, оставшихся в наследство после первичной конвертации исходников Хоты из делфи в с++
в ХД никогда не было, нет и сейчас. -------------------- |
|
|
14 Feb 2019, 16:58
Сообщение
#406
|
|
collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Как то видел функцию передающую управление Маскировкой, кажется by MoP. Если кто знает сориентируйте где найти или запостите пожалуйста.
-------------------- |
|
|
15 Feb 2019, 15:16
Сообщение
#407
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
Исходники MoP (Disguise.txt):
Код ; case 04 - Подкрепления и новые заклинания
1C778 FF7508; PUSH DWORD PTR SS:[EBP+8] - Номер заклинания 1C77B 51; PUSH ECX - ИИ-чность игрока-хозяина 1C77C 57; PUSH EDI - уровень заклинания 1C77D E8874DFEFF; CALL MoP.00401509 <- хук Werd.dll 1C782 E9F4FEFFFF; JMP MoP.0041C67B -------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
06 Jul 2019, 12:53
(Сообщение отредактировал Richter - 06 Jul 2019, 13:14)
Сообщение
#408
|
|
collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Здравствуйте форумчане.
После смещения слотов существ в экране героя, полностью перестал отображаться опыт существ (см.скриншот). Также стало невозможным передача знамени полководца слоту существа. Смещал две маски + само изображение, больше не нашел. Наверно вряд ли кто то сталкивался, однако надеюсь на помощь. Может кто нибудь подскажет в чем я не доглядел. -------------------- |
|
|
06 Jul 2019, 16:00
Сообщение
#409
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
Посмотрел, как сам смещал. Наверное, дело в этом:
DF234 23020000; - смещение текста кол-ва существ DF285 23020000; DF2D6 23020000; DF32A 23020000; DF37E 23020000; DF3D2 23020000; DF426 23020000; 3000D7 1402; смещение при включенном опыте -------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
07 Jul 2019, 21:22
(Сообщение отредактировал Richter - 07 Jul 2019, 22:02)
Сообщение
#410
|
|
collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Подскажите есть возможность(триггер, хук, лом железный)) поймать AI на постройке здания в городе? Например (!?)AI построил здание, далее (!!) ресивер.
-------------------- |
|
|
08 Jul 2019, 13:15
Сообщение
#411
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
Может, пригодится.
Реализация городской реликвии, позволяющей строить дважды в день в MoP v.4. Работает как для человека, так и для ИИ. Код ;*******************************************************************
; Реликвия №35 - Плеть Погонщика Рабов 1BF265 807D0C00; CMP BYTE PTR SS:[EBP+C],0 1BF269 7439; JE SHORT MoP.005BF2A4 1BF26B 83FF14; CMP EDI,14 1BF26E 7434; JE SHORT MoP.005BF2A4 1BF270 8B0D38956900; MOV ECX,DWORD PTR DS:[699538] 1BF276 80B9D8F6010002; CMP BYTE PTR DS:[ECX+1F6D8],2 1BF27D 7D20; JGE SHORT MoP.005BF29F 1BF27F 0FBE4601; MOVSX EAX,BYTE PTR DS:[ESI+1] 1BF283 85C0; TEST EAX,EAX 1BF285 7C08; JL SHORT MoP.005BF28F 1BF287 0FBE840879F80100; MOVSX EAX,BYTE PTR DS:[EAX+ECX+1F879] 1BF28F 50; PUSH EAX 1BF290 E84BC7E6FF; CALL MoP.0042B9E0 1BF295 84C0; TEST AL,AL 1BF297 7506; JNZ SHORT MoP.005BF29F 1BF299 C6460202; MOV BYTE PTR DS:[ESI+2],2 1BF29D EB05; JMP SHORT MoP.005BF2A4 1BF29F E8F0CAF4FF; CALL MoP.0050BD94 10BD94 0FBE1E; MOVSX EBX,BYTE PTR DS:[ESI] - номер города 10BD97 6BC370; IMUL EAX,EBX,70 - размер структуры городских реликвий 10BD9A 80B8B20C7D0000; CMP BYTE PTR DS:[EAX+7D0CB2],0 - есть ли Плеть? 10BDA1 7417; JE SHORT MoP.0050BDBA - нет 10BDA3 69C3A00F0000; IMUL EAX,EBX,0FA0 - размер структуры городских переменных 10BDA9 80B83BF8A30200; CMP BYTE PTR DS:[EAX+2A3F83B],0 - использовалась ли Плеть на этом ходу? 10BDB0 7508; JNZ SHORT MoP.0050BDBA - да 10BDB2 C6803BF8A30201; MOV BYTE PTR DS:[EAX+2A3F83B],1 - использовать, не запрещать строить второй раз на этом ходу 10BDB9 C3; RETN 10BDBA C6460201; MOV BYTE PTR DS:[ESI+2],1 если использовалась - запретить строить второй раз на этом ходу 10BDBE C3; RETN ;******************************************************************* -------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
09 Jul 2019, 13:40
Сообщение
#412
|
|
Immortal Сообщений: 589 Спасибо сказали: 890 раз |
Подскажите есть возможность(триггер, хук, лом железный)) поймать AI на постройке здания в городе? Например (!?)AI построил здание, далее (!!) ресивер. Код !!SN:Ex1/1/6025702/(AI_Building);
!?FU(AI_Building)&-1000; !!SN:X?y1; ; получаем номер города !!VRy2:Sy1 +24; !!UN:Cy2/4/?y3; !!UN:Cy3/1/?y5; y5 - номер города ; получаем номер строения !!VRy2:Sy1 +8; !!UN:Cy2/4/?y3; !!VRy4:Sy3 +8; !!UN:Cy4/4/?y6; y6 - номер здания !!IF:M^AI строит здание: {%Y6} В городе: {%Y5}^; -------------------- |
|
|
11 Jul 2019, 00:40
(Сообщение отредактировал Richter - 11 Jul 2019, 21:42)
Сообщение
#413
|
|
collector of time Сообщений: 159 Спасибо сказали: 73 раза |
-------------------- |
|
|
11 Jul 2019, 21:15
(Сообщение отредактировал Richter - 11 Jul 2019, 21:20)
Сообщение
#414
|
|
collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Очередной вопрос. Как вычислить значение (зеленый прямоугольник на скриншоте) зная откуда безусловный переход и куда.
Необходимо для работы с !!UN:C и !!SN:M. Пример для использования: Выделяю массив числовой с помощью !!SN:M, необходимо написать на ERM JMP из одного места в этот массив. Поскольку в !!SN:M0/?y2/0; адрес всегда разный, то и необходимо вычислить что на скриншоте. Если непонятно написал , поправьте пожалуйста. -------------------- |
|
|
12 Jul 2019, 00:58
Сообщение
#415
|
|
пират с чёрной меткой Сообщений: 23 647 Спасибо сказали: 12923 раза |
Очередной вопрос. Как вычислить значение (зеленый прямоугольник на скриншоте) зная откуда безусловный переход и куда. Из регистров CS:IP взять текущую точку выполнения и отнять нужный адрес, чтобы получить смещение? Всё-таки не совсем понял, что нужно.Необходимо для работы с !!UN:C и !!SN:M. Цитата Пример для использования: Выделяю массив числовой с помощью !!SN:M, необходимо написать на ERM JMP из одного места в этот массив. Прыжок в сегмент с данными... А в любом ли случае тебе позволит это операционка? А главное - антивирусы...-------------------- Давший быка на убой не выпросил и печень на жаркое.
|
|
|
12 Jul 2019, 12:02
(Сообщение отредактировал Richter - 12 Jul 2019, 12:20)
Сообщение
#416
|
|
collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Пробую описать подробно:
Код !?FU(binary) !!SN:M3/800/0/1; Создание нового числового массива. !!SN:M3/?y1/0; Узнать адрес первого элемента слота. !!VRy2:Sy1 -1; !!UN:Cy2/1/233; !!UN:Cy1/5/?"G" - Попытка воткнуть команду JMP 4787854 (адрес для примера) в начало (в данном случае) массива, для этого и нужно правильно вычислить число (скрин ниже) !?PI; !!FU(binary):P; -------------------- |
|
|
12 Jul 2019, 12:30
(Сообщение отредактировал MasterOfPuppets - 12 Jul 2019, 12:36)
Сообщение
#417
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
Занести адрес массива в какую-нибудь глобальную переменную, а прыжок исправить на jmp [переменная].
Или не? Вообще, вроде в ЭРЕ давно есть способы вставки хука, а тебе он и нужен, как я понял. -------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
12 Jul 2019, 14:49
Сообщение
#418
|
|
😸🧡✊✌️ Сообщений: 16 027 Спасибо сказали: 2672 раза |
Пробую описать подробно: Из регистров CS:IP взять текущую точку выполнения и отнять нужный адрес, чтобы получить смещение. 0777A02D - 777A0013 = 8FFDA01A (байты в команде в обратном порядке, потому что intel) -------------------- |
|
|
12 Jul 2019, 15:37
(Сообщение отредактировал igrik - 12 Jul 2019, 15:46)
Сообщение
#419
|
|
Immortal Сообщений: 589 Спасибо сказали: 890 раз |
Очередной вопрос. Как вычислить значение (зеленый прямоугольник на скриншоте) зная откуда безусловный переход и куда. Это не самая большая проблема.Необходимо для работы с !!UN:C и !!SN:M. Пример для использования: Выделяю массив числовой с помощью !!SN:M, необходимо написать на ERM JMP из одного места в этот массив. Поскольку в !!SN:M0/?y2/0; адрес всегда разный, то и необходимо вычислить что на скриншоте. Если непонятно написал , поправьте пожалуйста. Насущный вопрос: как вернуться таким способом назад, в исходное место? Эровский числовой массив состоит из интов, а чтобы записать команду JMP нужен байт. Можно конечно запилить сначала 3 нопа, а потом JMP и адрес прыжка назад (который тоже еще нужно высчитать!), но как по мне всё это еще тот гемор. Это нужно вычислить адрес переменной массива, которая будет указывать на обратный адрес, потом через UN:C по этому адресу записать нопы и опткод джампа, в следующей перменной массива нужно указать высчитанное смещение назад и правильно его записать обратно в массив, смещение к тому же будет зависеть от длинны массива. В во всём этом винигрете нужно еще не запороть регистры. Ахтунг, одним словом... И что это за такая интересная команда?! Код !!UN:Cy1/5/?"G" Во первых: UN:C поддерживает только 1, 2 или 4 байта для патчинга. Во вторых: ?"G" - WTF?! И еще: не забываем про точки с запятой... -------------------- |
|
|
12 Jul 2019, 19:58
(Сообщение отредактировал feanor - 12 Jul 2019, 20:02)
Сообщение
#420
|
|
laughed as one fey Сообщений: 12 166 Спасибо сказали: 20585 раз |
Не джампьте в память, пацаны, вы матерям еще нужны
а если все-таки ннадо, то делайте примерно так если свободных регистров нет, а их обычно нет, то можно в стек засунуть, а в конце своего кода высунуть А вообще именно на этом месте надо все-таки осваивать плагины |
|
|
Текстовая версия | Сейчас: 26 April 2024 - 00:14 |
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |