Кто нить тестил вообще двиг инде или пофиг? лучше меня анализит код клерка канеш же 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 перехватывает исключения процесса и ставит свой обработчик. Таким образом перехватывает доступ к памяти и перенаправляет его при необходимости.
Может кто допишет биндинг. Оставлю тут. Код (Text): Строка отладки: «[IDP_C_BINDING] IdpInitialize called.» Строка отладки: «[IDP_C_BINDING] IdpInitialize: Attempting to initialize from embedded binary. g_IdpRawBinary: 0x0014AE50, g_IdpRawBinarySize: 1861» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary called. pRawEngineCode: 0x0014AE50, engineSize: 1861, pEngine: 0x0015B980» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: Allocating memory for engine...» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: VirtualAlloc success. pEngineMemory: 0x000C0000, Size: 1861» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: memcpy completed.» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: Setting memory protection to PAGE_EXECUTE_READ...» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: VirtualProtect (PAGE_EXECUTE_READ) success. OldProtect: 0x00000004» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: g_actual_engine_entry_point set to 0x000C0000» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: Setting up function pointers in pEngine structure...» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: Setting memory protection to PAGE_EXECUTE_READWRITE before engine Initialize call...» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: VirtualProtect (PAGE_EXECUTE_READWRITE) success. OldProtect (was PAGE_EXECUTE_READ): 0x00000020» Строка отладки: «[IDP_C_BINDING] IdpInitializeFromBinary: Attempting to call pEngine->Initialize()...» Строка отладки: «[IDP_C_BINDING] StaticIdpInitializeEngineWrapper called.» Строка отладки: «[IDP_C_BINDING] StaticIdpInitializeEngineWrapper: Calling engine with EAX=0x00000000 (IDP_INITIALIZE_ENGINE) at address 0x000C0000»