Green Dragon

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

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

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


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

Различия

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

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

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
вербовка-кабанов-в-heroes-2 [2015/08/09 04:15]
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|}}
Строка 46: Строка 46:
 Хижина крестьян на Загон кабанов в резульатете в игре получаем все как на скриншотах ​ Хижина крестьян на Загон кабанов в резульатете в игре получаем все как на скриншотах ​
  
 +{{:​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.1439093728.txt.gz · Последние изменения: 2015/08/09 04:15 — danya