IPB

Здравствуйте, гость ( Вход | Регистрация )

23 страниц V  « < 19 20 21 22 23 >  
Reply to this topicStart new topic
> Обсуждение инженерного анализа
Berserker
сообщение 03 Dec 2017, 19:43
Сообщение #401

Immortal
Сообщений: 1 468
Спасибо сказали: 1151 раз




Но если указанный файл содержит только геройские структуры и функции (возможно, на пару с cpp), то вреда от его публикации ведь не будет? smile2.gif


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Sav
сообщение 03 Dec 2017, 20:50
Сообщение #402

Immortal
Сообщений: 9 403
Спасибо сказали: 3770 раз




Анализ кода игры и сбор реверсерской информации — такой же труд, как и написание нового кода по этой информации. Лично для меня анализ даже более важен. Поэтому отношение к заголовочникам у меня такое же, как к коду, а к базам ещё более бережное.

Многие люди работают над проектами с открытым исходным кодом — и то, что они его открывают, достойно уважения. Но для меня такой режим разработки неприемлем. Практика показала, что в вопросе модификации игры меня серьёзно мотивирует только работа на развитие и продвижение большого проекта. А продвижение в немалой степени обеспечивается за счёт вещей, которые удалось сделать мне и не удалось (или не было попыток) сделать в других проектах. Включая глубокий анализ кода игры и возможность за счёт этого более качественно исправлять её ошибки и реализовывать нововведения. Так что выкладывание каких-то частей исходников не вписывается в мой образ деятельности как моддера — у меня нет желаниия работать в таком режиме.
Если рассматривать взаимодействие с «остальным миром», то, грубо говоря, есть два варианта моей моддерской деятельности: либо я работаю на развитие продвижение только HotA (и код не выкладывается публично), либо я вообще не занимаюсь моддингом (и код не выкладывается, потому что просто не был написан). С учётом того, что аудитория HotA не так уж и мала, думаю, первый вариант всё же более полезен «остальному миру».

Врочем, когда я буду уверен, что больше не стану работать над серьёзным проектом в Героях, я, скорее всего, выложу свои наработки.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
baratorch
сообщение 04 Dec 2017, 01:14
Сообщение #403

Immortal
Сообщений: 2 412
Спасибо сказали: 4617 раз




Тот HOMM3.h все-таки не из хоты, а из ХД.
Я при необходимости брал какие-то вещи из хотовского HOMM3.h в ХДшный.
Исходники ХД же я одно время вообще выкладывал в открытый доступ, позднее изредка передавал кому-нибудь с условием нераспространения.
Так что я причина утечки из хоты.


--------------------
HoMM 3 HD:
http://sites.google.com/site/heroes3hd
последняя версия - 3.61f
Go to the top of the pageAdd Nick
 
+Quote Post
Sav
сообщение 04 Dec 2017, 01:55
Сообщение #404

Immortal
Сообщений: 9 403
Спасибо сказали: 3770 раз




Я сравнивал с выкладывавшимся вариантом из HD 3.15f, там есть отличия. Например, содержимое Base.h соответствует хотовскому, а не HD-шному варианту (есть TFileStream, TArray и т. п.). Поэтому это взялось скорее из какого-то другого источника и от хотовских исходников.
Но по содержательной части добавлений относительно выкладывавшихся исходников HD и BattleFigures там немного, так что всё это не столь важно.
Go to the top of the pageAdd Nick
 
+Quote Post
baratorch
сообщение 04 Dec 2017, 17:02
Сообщение #405

Immortal
Сообщений: 2 412
Спасибо сказали: 4617 раз




Да, TFileStream, TArray, оставшихся в наследство после первичной конвертации исходников Хоты из делфи в с++
в ХД никогда не было, нет и сейчас.



--------------------
HoMM 3 HD:
http://sites.google.com/site/heroes3hd
последняя версия - 3.61f
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 14 Feb 2019, 16:58
Сообщение #406

collector of time
Сообщений: 159
Спасибо сказали: 73 раза




Как то видел функцию передающую управление Маскировкой, кажется by MoP. Если кто знает сориентируйте где найти или запостите пожалуйста.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 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



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 06 Jul 2019, 12:53 (Сообщение отредактировал Richter - 06 Jul 2019, 13:14)
Сообщение #408

collector of time
Сообщений: 159
Спасибо сказали: 73 раза




Здравствуйте форумчане.
После смещения слотов существ в экране героя, полностью перестал отображаться опыт существ (см.скриншот). Также стало невозможным передача знамени полководца слоту существа.
Смещал две маски + само изображение, больше не нашел. Наверно вряд ли кто то сталкивался, однако надеюсь на помощь. Может кто нибудь подскажет в чем я не доглядел.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 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



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 07 Jul 2019, 21:22 (Сообщение отредактировал Richter - 07 Jul 2019, 22:02)
Сообщение #410

collector of time
Сообщений: 159
Спасибо сказали: 73 раза




Подскажите есть возможность(триггер, хук, лом железный)) поймать AI на постройке здания в городе? Например (!?)AI построил здание, далее (!!) ресивер.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 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



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
igrik
сообщение 09 Jul 2019, 13:40
Сообщение #412

Immortal
Сообщений: 589
Спасибо сказали: 890 раз




Цитата(Richter @ 07 Jul 2019, 21:22) *
Подскажите есть возможность(триггер, хук, лом железный)) поймать 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}^;


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 11 Jul 2019, 00:40 (Сообщение отредактировал Richter - 11 Jul 2019, 21:42)
Сообщение #413

collector of time
Сообщений: 159
Спасибо сказали: 73 раза






Igrik, спасибо. Работает как и.... великолепно!!!


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 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; адрес всегда разный, то и необходимо вычислить что на скриншоте. Если непонятно написал , поправьте пожалуйста.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 12 Jul 2019, 00:58
Сообщение #415

пират с чёрной меткой
Сообщений: 23 647
Спасибо сказали: 12923 раза




Цитата(Richter @ 11 Jul 2019, 21:15) *
Очередной вопрос. Как вычислить значение (зеленый прямоугольник на скриншоте) зная откуда безусловный переход и куда.
Необходимо для работы с !!UN:C и !!SN:M.
Из регистров CS:IP взять текущую точку выполнения и отнять нужный адрес, чтобы получить смещение? Всё-таки не совсем понял, что нужно.
Цитата
Пример для использования: Выделяю массив числовой с помощью !!SN:M, необходимо написать на ERM JMP из одного места в этот массив.
Прыжок в сегмент с данными... А в любом ли случае тебе позволит это операционка? А главное - антивирусы...


--------------------
Давший быка на убой не выпросил и печень на жаркое.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 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;





--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 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



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 12 Jul 2019, 14:49
Сообщение #418

😸🧡✊✌️
Сообщений: 16 027
Спасибо сказали: 2672 раза




Цитата(Richter @ 12 Jul 2019, 12:02) *
Пробую описать подробно:

Цитата(hippocamus @ 12 Jul 2019, 00:58) *
Из регистров CS:IP взять текущую точку выполнения и отнять нужный адрес, чтобы получить смещение.

0777A02D - 777A0013 = 8FFDA01A
(байты в команде в обратном порядке, потому что intel)


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
igrik
сообщение 12 Jul 2019, 15:37 (Сообщение отредактировал igrik - 12 Jul 2019, 15:46)
Сообщение #419

Immortal
Сообщений: 589
Спасибо сказали: 890 раз




Цитата(Richter @ 11 Jul 2019, 21:15) *
Очередной вопрос. Как вычислить значение (зеленый прямоугольник на скриншоте) зная откуда безусловный переход и куда.
Необходимо для работы с !!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?!

И еще: не забываем про точки с запятой...


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 12 Jul 2019, 19:58 (Сообщение отредактировал feanor - 12 Jul 2019, 20:02)
Сообщение #420

laughed as one fey
Сообщений: 12 166
Спасибо сказали: 20585 раз




Не джампьте в память, пацаны, вы матерям еще нужны

а если все-таки ннадо, то делайте примерно так


если свободных регистров нет, а их обычно нет, то можно в стек засунуть, а в конце своего кода высунуть



А вообще именно на этом месте надо все-таки осваивать плагины


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post

23 страниц V  « < 19 20 21 22 23 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 26 April 2024 - 00:14
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика