проблемы с ExeCryptor-ом

Тема в разделе "WASM.CRYPTO", создана пользователем amisto0x07, 23 июн 2009.

  1. amisto0x07

    amisto0x07 New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2009
    Сообщения:
    24
    Суть проблемы:
    есть упакованный ExeCryptor-ом dll-модуль.
    Пытаюсь вручную инициализировать его в контексте процесса
    (то есть без применения Windows API), для чего настраиваю релоки, импорт, экспорт,
    и вызываю TLS callback, созданный ExeCryptor-ом, после чего вызываю DllEntryPoint.
    Порблема в том, что во время выполнения TLS callback-a, созданного ExeCryptor-ом, процесс падает.
    Вызываю с параметрами (PIMAGE_TLS_CALLBACK)(HMODULE pvModuleBase, DLL_PROCESS_ATTACH, 0).
    Может кто-то вкурсе, как правильно вызвать TLS callback ExeCryptor-a???
     
  2. amisto0x07

    amisto0x07 New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2009
    Сообщения:
    24
    Всем спасибо за внимание. Проблема частично решена. Оказалось, что ExeCryptor при упаковке исполняемого файла почему то привязывается к ImageBase, прописанном в модуле. При загрузке в процесс по отличному от ImageBase адресу код, созданный ExeCryptor-ом, выпадает в 0xC0000005.

    Псевдокод ручной загрузки:
    Код (Text):
    1. DWORD RequiredImageBase = OPTIONAL_HEADER.ImageBase;
    2. PVOID pvBaseModule =
    3. VirtualAlloc( (LPVOID)RequiredImageBase, required_size_of_module, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    4.  
    5. if ((ULONG)pvBaseModule != (ULONG)RequiredImageBase)
    6.    return;
    7. InstallRelocs(pvBaseModule);        // метод настройки релоков,
    8. InstallImport(pvBaseModule);        // импорта,
    9. InstallExport(pvBaseModule);        // экспорта,
    10. CallTlsCallbacks(pvBaseModule);    // вызова TLS каллбэков (у ExeCryptor-а один каллбэк)
    11. CallDllEntry(pvBaseModule);          // вызов EP модуля
    С удовольствием выслушаю ваши предложения по обходу ограничения по ImageBase