Green Dragon

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

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

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


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

Сперва установил IDA Free. Скачал здесь https://www.hex-rays.com/products/ida/support/download_freeware.shtml

Запустил и в IDA файл Heroes2.exe в который играю в Dosbox

При открытии файла IDA о чем то ругалась

Затем я попробовал сделать переход по адресу 00443861 как говорил AlexSpl IDA перешла, но там почемуто совсем другое. Никаких push 0C8h и push 2Fh а совсем другое.

Что делать?

Сейчас открыл Heroes2.exe в Debuger BosBox-а.И дал команду установивить BP по указанному AlexSpl адресу 0044:3861 чтобы проверить какая команда там будет в Debuger И Debuger сказал что поставил BP по адресу 0044:3861 но почему то в окошке команд видно что BP он установил не на 0044:3861 а на 03CD:2382

Второй заход

Поставил версию от Буки для Windows

Открыл в IDA, система адресов совсем другая

И действительно по адресу 00443861

Распологается push 0C8h и push 2Fh

Открывем исполняемый файл HMM2PL.exe в В HexEditor и переходим по адресу 43EDB. Заменяем машинную команду C7 45 DC 00 00 00 00 на C7 45 DC 27 00 00 00. Потом тут же в редакторе исправляем тескты Хижина крестьян на Загон кабанов в резульатете в игре получаем все как на скриншотах

Пробую сделать тоже самое в DOSBOX. Не могу установить BP чтобы срабатывал на входе в хижину.

Как поставить брейкпоинт на количество существ в DOSBox Debugger.

0. Сделайте сейв, в котором герой стоит в одном шаге от Хижины крестьян. Убедитесь, что у героя есть отряд крестьян в первом слоте.

1. Сделайте дамп памяти: memdumpbin ds:0 1000000

2. Откройте дамп и найдите в нём структуру данных, соответствующую Вашему герою. Искать быстрее всего по имени героя (например, «Maximus»). Прибавьте к адресу, по которому хранится имя героя (т.е. первый байт имени), число 0x60 (60h). Так Вы получите адрес, по которому хранится численность самого первого (левого) отряда в армии героя. Обозначим этот адрес как Addr

3. Установите брейкпоинт по этому адресу: bplm Addr

4. Теперь посетите героем Хижину крестьян.

Осталось только проанализировать код и изменить команду.

Открыл вчерашний сайв с Амброзом опять сделал дамп. Отрыл в Нех и опять слово 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

вербовка-кабанов-в-heroes-2.txt · Последние изменения: 2018/09/16 15:24 — danya