Перейти к содержанию
  • записи
    104
  • комментариев
    125
  • просмотров
    15 608

Анализ Dissect Data Structure 2


MasterGH

1 770 просмотров

Охота на структуры и удивительное путешествие в мир структур в L4D2

 

1. Игру L4D2 в оконный режим

2. Установка плагина (позже)

3. Установка VEH отладчика, иначе вылеты

4. Первая миссия. Ищем адрес патронов. Бряк на адрес. Нашли инструкцию

Screenshot_19.png

Красным показано, что я не всю структуру проанализирую позже. Долго было ждать. Структура больше 5К байт...

 

5. Делаем сигнатуру любой инструкции при работе  с патронами на всякий случай, если игра вылетит.

server.dll,83 BE 14 14 00 00 00 7F 4D

6. Переходим в код и ищем проскакивающие адреса на инструкции. Там один адрес нашего  пистолета. Клик на него и переносим адрес начала будущей структуры в окно Dissect Window.  Можно не создавать структуру (отказываемся). Кликаем "Scanner" (он будет на всех окнах dissrct data)

 

Screenshot_20.png

 

7. Далее побежало сканирование.

Screenshot_9.png

 

В игре можно что-то делать, можно ничего не делать. Долго ждать..

 

Меняю опции. Чувствительность как была так и осталась минимальная (это время ожидания прерывания на адресе умноженное на коэфициент чувсвительности и на 100 мс).  Размер структуры меняю, до 1100

Screenshot_11.pngScreenshot_12.png

 

Наконец ~30 секунд дождался без вылетов (иногда бывают,  возможно из-за VEH). Появился результат

Screenshot_16.png

 

Самые интересны это байтовые и float значения. и инструкции чтения. Их определит можно пока только по логам...

 

Меняю первый байт на 1 и пистолет стал очень быстро стрелять.

Screenshot_18.png

 

Ради чего это все и делалось, чтобы похожие адреса искать...

 

Если сравнить дефолтную расструктуризацию, она слева

Screenshot_17.png

 

 

Логи (для меня и для желающих) по определению типа по опкодам

Спойлер

+0 (2F3B49B0): vtDword 64FC73CB  -  mov edx,[ecx]
+28 (2F3B49D8): vtDword 6530433E  -  mov eax,[esi+28]
+4C (2F3B49FC): vtDword 651169A3  -  cmp dword ptr [esi+30],00
+4F (2F3B49FF): vtDword 651169B6  -  mov eax,[esi+30]
+53 (2F3B4A03): vtDword 65116C60  -  mov eax,[ecx+34]
+64 (2F3B4A14): vtByte 64F8627D  -  cmp byte ptr [esi+64],00
+84 (2F3B4A34): vtDword 64F861F0  -  movss xmm0,[esi+00000084]
+88 (2F3B4A38): vtDword 64F86215  -  movss xmm2,[esi+00000088]
+8C (2F3B4A3C): vtDword 64F9F9A6  -  movss xmm0,[eax+0000008C]
+90 (2F3B4A40): vtDword 64FF2CC6  -  fld dword ptr [eax]
+C8 (2F3B4A78): vtDword 64FF2DA6  -  mov ecx,[eax]
+CC (2F3B4A7C): vtDword 64FF2DE6  -  mov ecx,[eax]
+E0 (2F3B4A90): vtDword 64FF2DA6  -  mov ecx,[eax]
+104 (2F3B4AB4): vtDword 651141FA  -  mov eax,[eax]
+10C (2F3B4ABC): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+10D (2F3B4ABD): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+10E (2F3B4ABE): vtWord 64FF2D96  -  movsx ecx,word ptr [eax]
+110 (2F3B4AC0): vtDword 64FF2DB6  -  mov ecx,[eax]
+138 (2F3B4AE8): vtDword 64FBB772  -  or [esi+00000138],edi
+171 (2F3B4B21): vtByte 64FBB7D4  -  cmp byte ptr [esi+00000171],00
+172 (2F3B4B22): vtByte 64FA6572  -  cmp byte ptr [esi+00000172],03
+173 (2F3B4B23): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+174 (2F3B4B24): vtDword 651141FA  -  mov eax,[eax]
+178 (2F3B4B28): vtDword 64FBB79D  -  mov eax,[esi+00000178]
+17C (2F3B4B2C): vtDword 64FBB7E8  -  mov eax,[esi+0000017C]
+180 (2F3B4B30): vtDword 64FDD9A6  -  mov eax,[ecx]
+188 (2F3B4B38): vtDword 64FF2D66  -  fld dword ptr [eax]
+18C (2F3B4B3C): vtDword 64FF2D6D  -  fld dword ptr [eax+04]
+190 (2F3B4B40): vtDword 64FF2D73  -  fld dword ptr [eax+08]
+194 (2F3B4B44): vtDword 64FF2D66  -  fld dword ptr [eax]
+198 (2F3B4B48): vtDword 64FF2D6D  -  fld dword ptr [eax+04]
+19C (2F3B4B4C): vtDword 64FF2D73  -  fld dword ptr [eax+08]
+1A0 (2F3B4B50): vtByte 64F9FD30  -  movzx eax,word ptr [ecx+20]
+1A1 (2F3B4B51): vtByte 64F9FD30  -  movzx eax,word ptr [ecx+20]
+1A2 (2F3B4B52): vtByte 64FDDBB0  -  movzx eax,byte ptr [ecx+22]
+1A3 (2F3B4B53): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+1AA (2F3B4B5A): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+1AC (2F3B4B5C): vtDword 64FF2D66  -  fld dword ptr [eax]
+1B0 (2F3B4B60): vtDword 64FF2D6D  -  fld dword ptr [eax+04]
+1B4 (2F3B4B64): vtDword 64FF2D73  -  fld dword ptr [eax+08]
+1B8 (2F3B4B68): vtDword 64FF2D66  -  fld dword ptr [eax]
+1BC (2F3B4B6C): vtDword 64FF2D6D  -  fld dword ptr [eax+04]
+1C0 (2F3B4B70): vtDword 64FF2D73  -  fld dword ptr [eax+08]
+1E0 (2F3B4B90): vtDword 64FF2DA6  -  mov ecx,[eax]
+1E4 (2F3B4B94): vtDword 64FF2DA6  -  mov ecx,[eax]
+1E8 (2F3B4B98): vtDword 64FF2DA6  -  mov ecx,[eax]
+1EC (2F3B4B9C): vtDword 64FF2DB6  -  mov ecx,[eax]
+1F0 (2F3B4BA0): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+20C (2F3B4BBC): vtDword 651141FA  -  mov eax,[eax]
+210 (2F3B4BC0): vtDword 651141FA  -  mov eax,[eax]
+214 (2F3B4BC4): vtDword 64FF2CC6  -  fld dword ptr [eax]
+218 (2F3B4BC8): vtDword 64FF2CC6  -  fld dword ptr [eax]
+21C (2F3B4BCC): vtDword 64FF2CC6  -  fld dword ptr [eax]
+220 (2F3B4BD0): vtDword 64FF2DE6  -  mov ecx,[eax]
+22C (2F3B4BDC): vtDword 64FF2CC6  -  fld dword ptr [eax]
+238 (2F3B4BE8): vtDword 64FF2DA6  -  mov ecx,[eax]
+2B4 (2F3B4C64): vtDword 64FF2CC6  -  fld dword ptr [eax]
+2E4 (2F3B4C94): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+2E5 (2F3B4C95): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+2E6 (2F3B4C96): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+2E7 (2F3B4C97): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+2E8 (2F3B4C98): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+2E9 (2F3B4C99): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+2EA (2F3B4C9A): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+2EB (2F3B4C9B): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+2EC (2F3B4C9C): vtByte 64FF2DC6  -  movzx ecx,byte ptr [eax]
+374 (2F3B4D24): vtDword 64FA65AC  -  mov edi,[esi+00000374]
+378 (2F3B4D28): vtDword 64FF2DE6  -  mov ecx,[eax]
+37C (2F3B4D2C): vtDword 64FF2DE6  -  mov ecx,[eax]
+380 (2F3B4D30): vtDword 64FF2DE6  -  mov ecx,[eax]
+384 (2F3B4D34): vtDword 64FF2DE6  -  mov ecx,[eax]
+388 (2F3B4D38): vtDword 64FA65B8  -  movss xmm1,[ecx]
+38C (2F3B4D3C): vtDword 64FA660B  -  movss xmm1,[ecx+04]
+390 (2F3B4D40): vtDword 64FA6653  -  movss xmm1,[ecx+08]
+394 (2F3B4D44): vtDword 64FA68AD  -  movss xmm1,[eax]
+398 (2F3B4D48): vtDword 64FA68E1  -  movss xmm2,[eax+04]
+39C (2F3B4D4C): vtDword 64FA6904  -  movss xmm2,[eax+08]
+3A0 (2F3B4D50): vtDword 64FDEC3A  -  mov ecx,[edi]
+3B8 (2F3B4D68): vtDword 6508F54F  -  test [eax+000003B8],edx
+42C (2F3B4DDC): vtDword 64F84E81  -  fstp dword ptr [esi+0000042C]
+434 (2F3B4DE4): vtDword 64FF2DA6  -  mov ecx,[eax]
+438 (2F3B4DE8): vtDword 64FF2D66  -  fld dword ptr [eax]
+43C (2F3B4DEC): vtDword 64FF2D6D  -  fld dword ptr [eax+04]
+440 (2F3B4DF0): vtDword 64FF2D73  -  fld dword ptr [eax+08]
+444 (2F3B4DF4): vtDword 64FF2DA6  -  mov ecx,[eax]
+448 (2F3B4DF8): vtDword 64FF2DA6  -  mov ecx,[eax]
+44C (2F3B4DFC): vtDword 64FF2DE6  -  mov ecx,[eax]

 

 

Плагин выложу позже. Надо еще доработать и потестить.

 

Вот к примеру float распознал как Pointer и там где fst тоже по +42C тоже фигня. Это ошибки. Это быстро поправить, но могут быть еще ошибки.

Screenshot_21.png

 

Не менее интересны еще вложенные структурки, которые удается раскрыть (не все). Вот одна из них и усеяна параметрами, которые можно покрутить

Screenshot_22.png

 

Вложенные структуры пока отдельно можно создавать в окнах, чистить сканером, потом подставлять их в основную структуру по имени. В общем пока рано об этом писать.

 

Больше всего меня волнует польза, т.е. что можно с этим сделать. Пока только сразу вышел на скорострельность. Еще шесть параметров покрутил байтовых, ничего не дало. Надо еще попробовать выводить только смещения, которые работают на инструкцияъ чтения, а не "чтении и записи". Запись скорее всего не нужна. Значения просто активно перезаписываются  в структуре. А вот оставлять смещения,  с которыми работает только "чтение" скорее всего даст куда больше вероятности найти параметр настройки.

  • Понравилось 1
  • Плюс 3

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.