Вывод информации без проверки значения в скомпилированном приложении С++

Тема в разделе "WASM.BEGINNERS", создана пользователем galenkane, 3 мар 2021.

  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.314
    hitriy-getsbi_66833465_orig_.jpg
     
    Aiks нравится это.
  2. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    это не твой код? :) и чем же он отличается от тех тестов?:)
    конечно, так и сделай == когда сказать нечего, лучше промолчать :grin:
    я тебе рассказал корневые моменты по аким схемам можно расширять озу и акие минусы этих расширений == ты же уцепился за эти 3тб :)
    я тебе рассказал методику тестов, но времени у тебя оказывается нет :grin:
     
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Aiks,

    > может быть у тебя оставалось бы больше времени на внимательное чтение темы.

    А зачем читать внимательно тему, если автор её не внимателен.. это не ясные рассуждения тс и всегда затягивается на долго, тк нужно понять его ход мыслей. Про отладчик это ты что то говорил затем сказал что нужно детектить всё и сразу, разве что про авер вирту не сказал. Но там не таймингом детектят, это не вирта а эмулятор.

    https://wasm.in/threads/avanguard-the-win32-anti-intrusion-library.33212/page-11#post-416300

    - дельта cupid ~1.5 раза. Обычные инструкции могут транслироваться/эмулироваться виртой без потери профайла, системные не могут, тк на каждую её большая обработка уходит.

    Подходящая инструкция, тк время работы вирты для неё является функцией аргументов, можно такое потестить.

    Задаётся предел по таймингу(в данном случае по отношению с эталоном). Даже разрабы нт использовали константу для задания предела, после которого результатом является детект https://archivevx.net/exelab/f/pages/action=vthread&forum=5&topic=24207&page=2.html#8

    Они у меня не закрываются в иде, так что просто скопирую что бы ты с дизом не парился:

    Код (Text):
    1. .text:00405B4A ; __stdcall ExpDetectHypervisorCr3Heuristic()
    2. .text:00405B4A _ExpDetectHypervisorCr3Heuristic@0 proc near
    3. .text:00405B4A                                         ; CODE XREF: ExpIsVirtualMachinePrivate(x):loc_86E7F5↓p
    4. .text:00405B4A
    5. .text:00405B4A var_10          = dword ptr -10h
    6. .text:00405B4A var_C           = dword ptr -0Ch
    7. .text:00405B4A var_8           = dword ptr -8
    8. .text:00405B4A var_1           = byte ptr -1
    9. .text:00405B4A
    10. .text:00405B4A                 mov     edi, edi
    11. .text:00405B4C                 push    ebp
    12. .text:00405B4D                 mov     ebp, esp
    13. .text:00405B4F                 sub     esp, 14h
    14. .text:00405B52                 push    ebx
    15. .text:00405B53                 xor     ebx, ebx
    16. .text:00405B55                 push    esi
    17. .text:00405B56                 push    edi
    18. .text:00405B57                 mov     cl, 1Bh
    19. .text:00405B59                 mov     edi, ebx
    20. .text:00405B5B                 mov     [ebp+var_C], ebx
    21. .text:00405B5E                 mov     [ebp+var_8], ebx
    22. .text:00405B61                 call    ds:__imp_@KfRaiseIrql@4 ; KfRaiseIrql(x)
    23. .text:00405B67                 mov     [ebp+var_1], al
    24. .text:00405B6A                 cli
    25. .text:00405B6B                 mov     [ebp+var_10], 0Ah
    26. .text:00405B72
    27. .text:00405B72 loc_405B72:                             ; CODE XREF: ExpDetectHypervisorCr3Heuristic()+57↓j
    28. .text:00405B72                 rdtsc
    29. .text:00405B74                 mov     ecx, eax
    30. .text:00405B76                 mov     esi, edx
    31. .text:00405B78                 mov     eax, cr3
    32. .text:00405B7B                 rdtsc
    33. .text:00405B7D                 sub     eax, ecx
    34. .text:00405B7F                 sbb     edx, esi
    35. .text:00405B81                 add     edi, eax
    36. .text:00405B83                 adc     ebx, edx
    37. .text:00405B85                 rdtsc
    38. .text:00405B87                 mov     ecx, eax
    39. .text:00405B89                 mov     esi, edx
    40. .text:00405B8B                 mov     eax, ebx
    41. .text:00405B8D                 rdtsc
    42. .text:00405B8F                 sub     eax, ecx
    43. .text:00405B91                 sbb     edx, esi
    44. .text:00405B93                 mov     esi, [ebp+var_C]
    45. .text:00405B96                 add     esi, eax
    46. .text:00405B98                 adc     [ebp+var_8], edx
    47. .text:00405B9B                 dec     [ebp+var_10]
    48. .text:00405B9E                 mov     [ebp+var_C], esi
    49. .text:00405BA1                 jnz     short loc_405B72
    50. .text:00405BA3                 sti
    51. .text:00405BA4                 mov     cl, [ebp+var_1]
    52. .text:00405BA7                 call    ds:__imp_@KfLowerIrql@4 ; KfLowerIrql(x)
    53. .text:00405BAD                 mov     eax, [ebp+var_8]
    54. .text:00405BB0                 push    eax
    55. .text:00405BB1                 push    esi
    56. .text:00405BB2                 push    ebx
    57. .text:00405BB3                 push    edi
    58. .text:00405BB4                 call    __alldiv
    59. .text:00405BB9                 xor     ebx, ebx
    60. .text:00405BBB                 cmp     edx, ebx
    61. .text:00405BBD                 jl      short loc_405BC8
    62. .text:00405BBF                 jg      short loc_405BC6
    63. .text:00405BC1                 cmp     eax, 0Ah
    64. .text:00405BC4                 jbe     short loc_405BC8
    65. .text:00405BC6
    66. .text:00405BC6 loc_405BC6:                             ; CODE XREF: ExpDetectHypervisorCr3Heuristic()+75↑j
    67. .text:00405BC6                 mov     bl, 1
    68. .text:00405BC8
    69. .text:00405BC8 loc_405BC8:                             ; CODE XREF: ExpDetectHypervisorCr3Heuristic()+73↑j
    70. .text:00405BC8                                         ; ExpDetectHypervisorCr3Heuristic()+7A↑j
    71. .text:00405BC8                 pop     edi
    72. .text:00405BC9                 pop     esi
    73. .text:00405BCA                 mov     al, bl
    74. .text:00405BCC                 pop     ebx
    75. .text:00405BCD                 leave
    76. .text:00405BCE                 retn
    77. .text:00405BCE _ExpDetectHypervisorCr3Heuristic@0 endp
    - тоже замер тайминга и задание предела константой.

    Если бы я решал эту задачу, то я бы во первых выполнил тесты по cupid как выше в виде функции аргументов, а во вторых исследовал бы смену мода(sysenter/syscall/int). Эти инструкции в вирте должны приводить к большему количеству итераций(те большой просадки тайминга).
     
    Aiks нравится это.
  4. Aiks

    Aiks Member

    Публикаций:
    0
    Регистрация:
    16 апр 2017
    Сообщения:
    109
    Адрес:
    Украина
    Indy_, не знал про "NtQueryLicenseValue" и "Kernel-VMDetection-Private". Спасибо!
     
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Aiks,

    Ну ты не вкурсе что сейчас любое действие в ядре обёрнуто спин блокировкой и вызовом гипервизора. Что бы получить результат ты должен провести исследования, тестить то что тебе дали, а не тупо ниочём сраца тут на форуме. Это примитивные тесты на профайл, собирается за минуты и далее сотни раз за час тестится примитив в общем как сборка. Но ты это не сделал(почему ?) уже какая страница, зачем было устраивать срач с UbIvItS, он понимает как всё это устроено, а ты нет.