vmbe register decoding

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

  1. galenkane

    galenkane Active Member

    Публикаций:
    1
    Регистрация:
    13 янв 2017
    Сообщения:
    453
    Кто нить тестил вообще двиг инде или пофиг?
    лучше меня анализит код клерка канеш же Claude2 поэтому ->>>
    --- Сообщение объединено, 21 ноя 2023 ---
    Собственно по IDP вроде как понятно

    Код перенаправления потока данных (data flow redirection) в Windows.
    Вкратце, что он делает:
    1. Определяет структуры и константы для работы с контекстом потока (PTLS, PCONTEXT) и данными модулей (LDR_DATA_TABLE_ENTRY).
    2. Реализует функции для преобразования контекста во внутреннее состояние ВМ (VmTrapToState) и обратно (VmStateToTrap).
    3. IdpPrepare - подготавливает внутреннее состояние перед выполнением инструкции, декодирует операнды.
    4. IdpGetEntry, IdpAddEntry - работают со списком загруженных модулей процесса.
    5. IdpTrap - обрабатывает исключения (AV, трассировку). При AV анализирует доступ и адрес, перенаправляет управление на код модуля если нужно.
    6. При init перехватывает исключения процесса и ставит свой обработчик.
    Таким образом перехватывает доступ к памяти и перенаправляет его при необходимости.
     
  2. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.228
    Адрес:
    подполье
    и тестил и пофиг.
     
  3. galenkane

    galenkane Active Member

    Публикаций:
    1
    Регистрация:
    13 янв 2017
    Сообщения:
    453
    Может кто допишет биндинг. Оставлю тут.

    Код (Text):
    1. Строка отладки: «[IDP_C_BINDING] IdpInitialize called.»
    2. Строка отладки: «[IDP_C_BINDING] IdpInitialize: Attempting to initialize from embedded binary. g_IdpRawBinary: 0x0014AE50, g_IdpRawBinarySize: 1861»
    3. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary called. pRawEngineCode: 0x0014AE50, engineSize: 1861, pEngine: 0x0015B980»
    4. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: Allocating memory for engine...»
    5. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: VirtualAlloc success. pEngineMemory: 0x000C0000, Size: 1861»
    6. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: memcpy completed.»
    7. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: Setting memory protection to PAGE_EXECUTE_READ...»
    8. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: VirtualProtect (PAGE_EXECUTE_READ) success. OldProtect: 0x00000004»
    9. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: g_actual_engine_entry_point set to 0x000C0000»
    10. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: Setting up function pointers in pEngine structure...»
    11. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: Setting memory protection to PAGE_EXECUTE_READWRITE before engine Initialize call...»
    12. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: VirtualProtect (PAGE_EXECUTE_READWRITE) success. OldProtect (was PAGE_EXECUTE_READ): 0x00000020»
    13. Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: Attempting to call pEngine->Initialize()...»
    14. Строка отладки: «[IDP_C_BINDING] StaticIdpInitializeEngineWrapper called.»
    15. Строка отладки: «[IDP_C_BINDING] StaticIdpInitializeEngineWrapper: Calling engine with EAX=0x00000000 (IDP_INITIALIZE_ENGINE) at address 0x000C0000»
     

    Вложения: