Помогите plz с CPUID hook

Тема в разделе "WASM.RESEARCH", создана пользователем SergX, 5 июл 2007.

  1. SergX

    SergX New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    19
    Есть прога которая привязывается к железу, в том числе и к CPUID.
    Патчить не приемлемо, потому что прога регулярно обновляется и запакована аспром.

    Как можно перехватить вызов инструкции CPUID ?

    MS-REM когда то сказал на CrackLab:
    Можно сделать cpuid привилегированной инструкцией, ловить исключения и эмулировать.
    Как это можно сделать, может кто примерами поделиться ?

    Известно, что перед CPUID вызывается GetComputerNameA который мне тоже нужно менять. Я сделал лоадер на базе либ MS-REMа который перехватывает GetComputerNameA. Когда происходит перехват прога уже полностью загружена и распакована в память. Может найти в памяти процедуру которая вызывает CPUID и пропатчить ? Подскажите как это сделать.

    Заранее благодарен.
     
  2. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Знаю как сделать rdtsc привилегированной - http://twister.orgfree.com/notes.php#n_privrdtsc, а тебе нужно рыть в ту же сторону.
    Что сделать? Найти процедуру? Конкретизируй...
     
  3. SergX

    SergX New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    19
    Я имел ввиду:
    Найти последовательность байт в памяти процесса и изменить.

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

    Если я делаю InjectThisExe в приложение, то после этого приложение считается своим или чужим ?
     
  4. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Проще будет распаковать ASP и все же пропатчить ....
     
  5. UyTvGauG

    UyTvGauG New Member

    Публикаций:
    0
    Регистрация:
    17 май 2007
    Сообщения:
    49
    С помощью виртуализационных расширений amd pacifica и intel vt.
     
  6. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Ага голубая пилюля Рутковской :
     
  7. SergX

    SergX New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    19
    asmlamo
    Проще будет распаковать ASP и все же пропатчить ....

    Это можно, но как я уже говорил выше прога постоянно обновляется, а каждый раз ковырять её неохото...

    Ясно нормально хукнуть CPUID сложно...

    Подскажите тогда как пропатчить прогу в памяти.
     
  8. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    Взял адрес возврата из GetComputerNameA, прошелся поиском по байтам, нашел CPUID и уже патчиш как хош.
     
  9. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Вообще термин хукнуть более правильно относить к API функциям ОС.

    CPUID это не API функция а команда процессора.

    Единственный способ это неких образом сделать ее привелигированной инструкцией и ловит эксепшин.

    Но это непростой путь ...
     
  10. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    С чего бы? Относи к чему хочешь, лишь бы люди тебя понимали.

    Разве CPUID является привелегированной инструкцией хоть на каком-нибудь уровне привелегий?
     
  11. SergX

    SergX New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    19
    PaCHER
    Можно подробней...
    имея адрес я смогу читать/писать в память процесса без каких либо разрешений и т.д. ?
    как получить адрес возврата ? (Сама прога написана на делфи и лоадер тоже)

    пробовал так, но не получаеться...
    Код (Text):
    1. asm
    2. push EAX
    3. mov EAX,[esp+4]
    4. mov adress,EAX
    5. pop EAX
    6. end;
    W4FhLF
    Насколько я знаю то не являеться не на каком... Но вроде както можно сделать её привелегированной.
     
  12. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Вроде нет ...
     
  13. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Плавила лусскога язика оз не нузни главное что бы люди понимали .... :)
     
  14. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    SergX
    Никак. IA-32: Exceptions (All Operating Modes) - None. Если только на древних 386\486 запускать ;)

    Нет, нужно разрешить запись через VirtualProtect\VirtualProtectEx

    mov можно использовать только в самом процессе (после инжекта своего кода), а для записи в посторонний процесс - WriteProcessMemory
     
  15. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    http://ru.wikipedia.org/wiki/Сленг
     
  16. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    SergX
    Сделать это просто. Я делал это из драйвера. Оттуда перехватывал некоторые native функции, это значило что прога распакована, затем в проистановленной проге вёлся сигнатурный скан нужных мне участков кода. Всё это патчилось так, что возникало исключение при проезде проца по данному коду. Исключение я ловил и скармливал cpuid какие нужно данные. вот и всё.
     
  17. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    <MS-REM когда то сказал на CrackLab:
    Можно сделать cpuid привилегированной инструкцией, ловить исключения и эмулировать.
    >
    Нельзя. Можно её ограничить эту команду. Точнее в передаваемых ей параметрах. В случае если передавался ограниченный параметр, может быть и возникает какоето исключение. Скорее всего он имел ввиду следующее: команда CPUID патчтится так, что далее представляет из себя привелегированную инструкцию, при наезде на неё процем и возникнет исключение. По другому я хз как.
     
  18. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Зачем так сложно ? Не проще ли сразу патчить условный переход проверки ?
     
  19. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    asmlamo
    Для цитирования есть тег quote.
     
  20. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    А ты уверен что он там будет ? А если там к примеру на основе данных от этой команды происходит генерация ключа ?