Вопрос по коду из игр висты

Тема в разделе "WASM.RESEARCH", создана пользователем madmat, 3 авг 2008.

  1. madmat

    madmat New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2008
    Сообщения:
    2
    в Висте в игрушках есть какойто не понятный обработчик int 3
    Если взять какую нибудь игрушку, напр. \Program Files\Microsoft Games\Chess\Chess.exe
    то там есть такой код:
    .01040741: int 3
    .01040742: push ebp
    .01040743: int 3
    .01040744: mov eax,[0112B144]
    .01040749: xor eax,ebp
    .0104074B: mov [ebp][-04],eax
    .0104074E: mov eax,[ebp][08]
    .01040751: push ebx
    .01040752: mov ebx,[ebp][0C]
    .01040755: push esi
    .01040756: mov esi,[ebp][10]
    .01040759: mov [ebp][-00000218],eax
    .0104075F: mov eax,[ebp][14]
    .01040762: push eax
    .01040763: mov [ebp][-00000214],ebx
    .01040769: mov [ebp][-0000021C],eax
    .0104076F: push ebp
    .01040770: int 3
    .01040771: push ebp
    .01040772: int 3
    .01040773: push ebp
    .01040774: int 3
    .......................
    Который вызывается так:
    .01037A90: push d,[0112B0FC]
    .01037A96: push d,[0112B0F8]
    .01037A9C: push d,[0112B104]
    .01037AA2: push d,[0112B100]
    .01037AA8: push d,[ebp][-00000458]
    .01037AAE: push ebx
    .01037AAF: push ebx
    .01037AB0: push d,[0113AE98]
    .01037AB6: call .001040741 -------------------- Вызов мистической функции
    .01037ABB: xor eax,eax

    Так вот если (под любым дебагером) поставить бряк по адресу напр. 1037AAE
    то он сработает нормально, если же войти в функцию 001040741 то там уже начинается чертовщина какаято. Дебагер не останавливается на int 3 внутри функции а вместо этого каждый int 3 выполняет какуюто часть кода. Первый похоже на
    push ebp
    mov ebp, esp
    sub esp, 200h
    последующие int3 тоже делают чтото своё.
    Это всё очень похоже на обработчик исключений, и там действительно установлен SEH.
    Но вопервых у дебагера приоритет выше, а во вторых я даже проверил - он не вызывается.

    Как они это всё делают !!! ??? !!!
    Для чего ??? защита от чегото ???

    И еще, я заметил что в файлах где встречается такая бесовщина присутствует секция с названием
    .pexe (первая секция). Конечно может это просто совпадение а может и нет.

    Кто знает чтонить об этом ?
    Как сделать самому такое ?

    МИСТИКА ! :-O
     
  2. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Видимо мелкомягкие придумали новый "безпалевный" способ раздутия файла и снижения быстродействия
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Это кажеца называется наномиты, впервые встречалось у армадиллы. Хотя я могу и ошибаться.
     
  4. madmat

    madmat New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2008
    Сообщения:
    2
    Это не наномиты (не совсем). я тут поковырял ntoskrnl.exe и скажу точно что это новая фишка Висты.
    ntoskrnl.exe при загрузке имеджа ищет секцию которая называется .pexe и если находит то раскриртовывает её. затем Устанавливает для адресов записсанных в секции свои обработчики прерываний. Сделано это скорее всего для скрытия кода, потому как это явно скорости не прибавит :derisive:. На днях попробую подебагить.
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    если всю висту защитят фемидой и армадилой, это будет прорыв в производительности и оптимизации :)
     
  6. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    madmat
    хм.... можно самому попробовать заюзать эту фичу... хотя совместимости я думаю она не добавит. Нароешь что напиши не скрывай, можешь даже статейку.