Green Dragon

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

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

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


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

Это старая версия документа.


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

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

При открытии файла 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

И попал в ту самую последовательность :smile21:

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.1439273706.txt.gz · Последние изменения: 2015/08/11 06:15 — danya