Green Dragon

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

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

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


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

Различия

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

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

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
Последняя версия Both sides next revision
вербовка-кабанов-в-heroes-2 [2015/08/11 06:07]
danya
вербовка-кабанов-в-heroes-2 [2018/09/16 15:23]
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 о чем то ругалась
Строка 62: Строка 62:
  
 0. Сделайте сейв, в котором герой стоит в одном шаге от Хижины крестьян. Убедитесь,​ что у героя есть отряд крестьян в первом слоте. 0. Сделайте сейв, в котором герой стоит в одном шаге от Хижины крестьян. Убедитесь,​ что у героя есть отряд крестьян в первом слоте.
 +
 1. Сделайте дамп памяти:​ memdumpbin ds:0 1000000 1. Сделайте дамп памяти:​ memdumpbin ds:0 1000000
 +
 2. Откройте дамп и найдите в нём структуру данных,​ соответствующую Вашему герою. Искать быстрее всего по имени героя (например,​ "​Maximus"​). Прибавьте к адресу,​ по которому хранится имя героя (т.е. первый байт имени),​ число 0x60 (60h). Так Вы получите адрес, по которому хранится численность самого первого (левого) отряда в армии героя. Обозначим этот адрес как Addr 2. Откройте дамп и найдите в нём структуру данных,​ соответствующую Вашему герою. Искать быстрее всего по имени героя (например,​ "​Maximus"​). Прибавьте к адресу,​ по которому хранится имя героя (т.е. первый байт имени),​ число 0x60 (60h). Так Вы получите адрес, по которому хранится численность самого первого (левого) отряда в армии героя. Обозначим этот адрес как Addr
 +
 3. Установите брейкпоинт по этому адресу:​ bplm Addr 3. Установите брейкпоинт по этому адресу:​ bplm Addr
 +
 4. Теперь посетите героем Хижину крестьян. 4. Теперь посетите героем Хижину крестьян.
 +
  
 {{:​bp_krestiane.png|}} {{:​bp_krestiane.png|}}
Строка 71: Строка 76:
 Осталось только проанализировать код и изменить команду. Осталось только проанализировать код и изменить команду.
  
-Открыл вчерашний сайв ​ с Амброзом ​ опять сделал дамп.  +Открыл вчерашний сайв с Амброзом опять сделал дамп. 
-Отрыл в Нех и опять слово Ambrose нашел в дампе в Блоке 1433A0-1433A6 ​  ​:​smile5: ​ +Отрыл в Нех и опять слово Ambrose нашел в дампе в Блоке 1433A0-1433A6 :smile5:
  
 Сделал переход на 96 (dec) к текущему смещению и опять оказался в 143400 Сделал переход на 96 (dec) к текущему смещению и опять оказался в 143400
-Addr = 143400, Установил BP на Addr: bplm 143400 ​+Addr = 143400, Установил BP на Addr: bplm 143400
  
 Зашел в хижинку. Игра остановилась переключился в Debuger на командах Зашел в хижинку. Игра остановилась переключился в Debuger на командах
  
-//0180:22B110 8B45C4 ​  mov eax,​[ebp-003C] +Код:  
-0180:22B113 6683600407 ​  and dword [eax+0004],​0007 +    ​0180:22B110 8B45C4 ​    ​mov eax,​[ebp-003C] 
-// +    0180:22B113 6683600407 ​    ​and dword [eax+0004],​0007 ​
-Сделал дамр: ​  ​memdumpbin cs:220000 20000+
  
-Стал иcкать строчку ​+ 
 + 
 +Сделал дамр: memdumpbin cs:220000 20000 
 + 
 +Стал икать строчку
  
 8B 45 C4 66 83 60 04 07 8B 45 C4 66 83 60 04 07
Строка 90: Строка 98:
 Оказался в строчке Оказался в строчке
  
-//seg000:​0000B110 ​                ​mov ​    eax, [ebp-3Ch]  +Код: Выделить всё 
-seg000:​0000B113 ​                ​and ​    word ptr [eax+4], 7 +    ​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[b] +
-seg000:​0000B110 ​                ​mov ​    eax, [ebp-3Ch] +
-seg000:​0000B113 ​                ​and ​    word ptr [eax+4], 7[/b] +
-seg000:​0000B118 ​                ​jmp ​    ​loc_9F95 +
-seg000:​0000B11D ; ---------------------------------------------------------------------------+
  
 +Так у меня вот так
  
-В точности так как у AlexSpl не нашел ​+Код:  
 +    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
  
  
-//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:​0000B093 ​                ​mov ​    ecx, 0Ah 
-seg000:​0000B09B ​                ​mov ​    esi, 2CC208h +    seg000:​0000B098 ​                ​lea ​    edi, [ebp-30h] 
-seg000:​0000B0A0 ​                rep movsd +    seg000:​0000B09B ​                ​mov ​    esi, 2CC208h 
-//+    seg000:​0000B0A0 ​                rep movsd 
 + 
  
 На всякий случай написал в DosBox Debuger d ds:2CC208 На всякий случай написал в 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 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|}} {{:​bp_debug_tablica.png|}}
- 
- 
  
  
  
вербовка-кабанов-в-heroes-2.txt · Последние изменения: 2018/09/16 15:24 — danya