Green Dragon

Знание есть сила, сила есть знание.

Инструменты пользователя

Инструменты сайта


вербовка-кабанов-в-heroes-2

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
вербовка-кабанов-в-heroes-2 [2015/08/08 18:06]
danya
вербовка-кабанов-в-heroes-2 [2018/09/16 15:24] (текущий)
danya
Строка 1: Строка 1:
 Сперва установил IDA Free. Скачал здесь https://​www.hex-rays.com/​products/​ida/​support/​download_freeware.shtml Сперва установил IDA Free. Скачал здесь https://​www.hex-rays.com/​products/​ida/​support/​download_freeware.shtml
  
-Запустил и в IDA файл Heroes2.exe в который играю в Вosbox ​+Запустил и в IDA файл Heroes2.exe в который играю в Dosbox ​
  
 При открытии файла IDA о чем то ругалась При открытии файла IDA о чем то ругалась
Строка 24: Строка 24:
 Что делать?​ Что делать?​
    
-Сейчас открыл ​ Heroes2.exe ​ в   ​Debuger BosBox-а.И ​ дал команду установивить BP по указанному ​вами ​адресу ​  ​0044:​3861 ​ чтобы проверить какая команда там будет в Debuger И Debuger сказал что поставил BP по адресу 0044:3861 но почему то  в окошке команд видно что ​ BP он установил ​ не на 0044:3861 а на 03CD:​2382  ​+Сейчас открыл ​ Heroes2.exe ​ в   ​Debuger BosBox-а.И ​ дал команду установивить BP по указанному ​AlexSpl ​адресу ​  ​0044:​3861 ​ чтобы проверить какая команда там будет в Debuger И Debuger сказал что поставил BP по адресу 0044:3861 но почему то  в окошке команд видно что ​ BP он установил ​ не на 0044:3861 а на 03CD:​2382  ​
  
 {{:​xp_dosbox.png|}} {{:​xp_dosbox.png|}}
Строка 43: Строка 43:
 {{:​t-800:​heroes_buka2.png|}} {{:​t-800:​heroes_buka2.png|}}
  
 +Открывем ​ исполняемый файл HMM2PL.exe в В HexEditor и переходим по адресу 43EDB. Заменяем машинную команду C7 45 DC 00 00 00 00 на C7 45 DC 27 00 00 00.  Потом тут же в редакторе исправляем тескты
 +Хижина крестьян на Загон кабанов в резульатете в игре получаем все как на скриншотах ​
  
 +{{:​t-800:​xp_kaban3.png|}}
  
 +{{:​t-800:​xp_kaban4.png|}}
  
 +{{:​t-800:​xp_kaban5.png|}}
  
 +
 +Пробую сделать тоже самое в DOSBOX. Не могу установить BP чтобы срабатывал ​ на входе в хижину. ​
 +
 +{{:​t-800:​bp_debug.png|}}
 +
 +{{:​t-800:​bp_debug2.png|}}
 +
 +Как поставить брейкпоинт на количество существ в DOSBox Debugger.
 +
 +0. Сделайте сейв, в котором герой стоит в одном шаге от Хижины крестьян. Убедитесь,​ что у героя есть отряд крестьян в первом слоте.
 +
 +1. Сделайте дамп памяти:​ memdumpbin ds:0 1000000
 +
 +2. Откройте дамп и найдите в нём структуру данных,​ соответствующую Вашему герою. Искать быстрее всего по имени героя (например,​ "​Maximus"​). Прибавьте к адресу,​ по которому хранится имя героя (т.е. первый байт имени),​ число 0x60 (60h). Так Вы получите адрес, по которому хранится численность самого первого (левого) отряда в армии героя. Обозначим этот адрес как Addr
 +
 +3. Установите брейкпоинт по этому адресу:​ bplm Addr
 +
 +4. Теперь посетите героем Хижину крестьян.
 +
 +
 +{{:​bp_krestiane.png|}}
 +
 +Осталось только проанализировать код и изменить команду.
 +
 +Открыл вчерашний сайв с Амброзом опять сделал дамп.
 +Отрыл в Нех и опять слово Ambrose нашел в дампе в Блоке 1433A0-1433A6 :smile5:
 +
 +Сделал переход на 96 (dec) к текущему смещению и опять оказался в 143400
 +Addr = 143400, Установил BP на Addr: bplm 143400
 +
 +Зашел в хижинку. Игра остановилась переключился в Debuger на командах
 +
 +Код: ​
 +    0180:22B110 8B45C4 ​    mov eax,​[ebp-003C]
 +    0180:22B113 6683600407 ​    and dword [eax+0004],​0007 ​
 +
 +
 +
 +Сделал дамр: memdumpbin cs:220000 20000
 +
 +Стал икать строчку
 +
 +8B 45 C4 66 83 60 04 07
 +
 +Оказался в строчке
 +
 +Код: Выделить всё
 +    seg000:​0000B110 ​                ​mov ​    eax, [ebp-3Ch]
 +    seg000:​0000B113 ​                ​and ​    word ptr [eax+4], 7
 +
 +
 +
 +Проматал наверх
 +
 +Так у меня вот так
 +
 +Код: ​
 +    seg000:​0000B093 ; ---------------------------------------------------------------------------
 +    seg000:​0000B093
 +    seg000:​0000B093 loc_B093: ; CODE XREF: seg000:​0000B07Cj
 +    seg000:​0000B093 mov ecx, 0Ah
 +    seg000:​0000B098 lea edi, [ebp-30h]
 +    seg000:​0000B09B mov esi, 2CC208h
 +    seg000:​0000B0A0 rep movsd
 +    seg000:​0000B0A2 push 0FFFFFFFFh
 +    seg000:​0000B0A4 push 0
 +    seg000:​0000B0A6 push 0FFFFFFFFh
 +    seg000:​0000B0A8 push 0
 +    seg000:​0000B0AA push 0FFFFFFFFh
 +    seg000:​0000B0AC lea edx, [eax+17h]
 +    seg000:​0000B0AF mov ecx, 2AC629h
 +    seg000:​0000B0B4 mov ebx, 2
 +    seg000:​0000B0B9 mov eax, [ebp-34h]
 +    seg000:​0000B0BC call sub_A72D
 +    seg000:​0000B0C1 mov eax, ds:2DED70h
 +    seg000:​0000B0C6 cmp dword ptr [eax+5Ah], 7805h
 +    seg000:​0000B0CD jnz loc_9F95
 +    seg000:​0000B0D3 mov ebx, [ebp-8]
 +    seg000:​0000B0D6 shl ebx, 2
 +    seg000:​0000B0D9 mov edx, [ebx+ebp-30h]
 +    seg000:​0000B0DD mov esi, [ebp-38h]
 +    seg000:​0000B0E0 add esi, 65h ; '​e'​
 +    seg000:​0000B0E3 mov eax, esi
 +    seg000:​0000B0E5 call sub_1520E
 +    seg000:​0000B0EA test eax, eax
 +    seg000:​0000B0EC jz short loc_B11D
 +    seg000:​0000B0EE mov eax, [ebp-3Ch]
 +    seg000:​0000B0F1 mov ax, [eax+4]
 +    seg000:​0000B0F5 shr ax, 3
 +    seg000:​0000B0F9 and eax, 0FFFFh
 +    seg000:​0000B0FE mov edx, [ebx+ebp-30h]
 +    seg000:​0000B102 mov ecx, 0FFFFFFFFh
 +    seg000:​0000B107 mov ebx, eax
 +    seg000:​0000B109 mov eax, esi
 +    seg000:​0000B10B call sub_1526A
 +    seg000:​0000B110 mov eax, [ebp-3Ch]
 +    seg000:​0000B113 and word ptr [eax+4], 7
 +    seg000:​0000B118 jmp loc_9F95
 +    seg000:​0000B11D ; ---------------------------------------------------------------------------
 +
 +
 +
 +
 +В точности так как у AlexSpl не нашел
 +
 +
 +Код:
 +    mov     ecx, 0Ah          ; кол-во элементов
 +    lea     edi, [ebp+var_30] ; приёмник
 +    mov     esi, 2C9308h ​     ; источник
 +    rep movsd
 +
 +
 +
 +Нашел похожее но с другими буквами
 +
 +Код:
 +    seg000:​0000B093 ​                ​mov ​    ecx, 0Ah
 +    seg000:​0000B098 ​                ​lea ​    edi, [ebp-30h]
 +    seg000:​0000B09B ​                ​mov ​    esi, 2CC208h
 +    seg000:​0000B0A0 ​                rep movsd
 +
 +
 +
 +На всякий случай написал в DosBox Debuger d ds:2CC208
 +
 +И попал в ту самую последовательность
 +
 +01 00 00 00 0B 00 00 00 00 00 00 00 15 00 00 00 15 00 00 00 14 00 00 00 26 00 00 00 0C 00 00 00 1D 00 00 00 2F 00 00 00
 +
 +{{:​bp_debug_tablica.png|}}
  
  
  
вербовка-кабанов-в-heroes-2.1439057217.txt.gz · Последние изменения: 2015/08/08 18:06 (внешнее изменение)