Green Dragon

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

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

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


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

Различия

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

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

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
вербовка-кабанов-в-heroes-2 [2015/08/11 06:07]
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 о чем то ругалась
Строка 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
  
-И попал в ту самую последовательность ​ +И попал в ту самую последовательность
  
 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.1439273224.txt.gz · Последние изменения: 2015/08/11 06:07 — danya