Пишу криптор/пакер .NET Framework сборок, помогите начинающему.

Тема в разделе "WASM.RESEARCH", создана пользователем alex221, 22 сен 2004.

  1. alex221

    alex221 New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2004
    Сообщения:
    3
    Адрес:
    Russia
    Привет народ! Для собственных нужд, пишу криптор экзешников .NET Framework.

    Цель - защита .NET прог от дизассемблирования недалекими кракерами

    Принцип работы такой: имеется stub, стандартное Win32 приложение, в нем создается

    секция в которую пишем зашифрованную EXE сборку. При запуске stub`а, сборка

    расшифровывается, копируется скажем в переменную, вычисляется размер

    полученного экзешника. После этого начинаем стучаться в .NET Runtime Execution Engine

    вызываем функцию _CorExeMain2 из mscoree.dll



    __int32 STDMETHODCALLTYPE _CorExeMain2( // Executable exit code.

    PBYTE pUnmappedPE, // -> memory mapped code

    DWORD cUnmappedPE, // Size of memory mapped code

    LPWSTR pImageNameIn, // -> Executable Name

    LPWSTR pLoadersFileName, // -> Loaders Name

    LPWSTR pCmdLine) // -> Command Line





    Передаем указатель на первый байт распакованного EXE ->pUnmappedPE,

    размер EXE в байтах -> cUnmappedPE,

    название сборки -> pImageNameIn,

    в качестве имени лоадера пишем NULL -> pLoadersFileName,

    Из WinMain stub`а копируем lpszCmdLine параметры -> pCmdLine



    А в ответ тишина... Т.е. функция _CorExeMain2 всегда возвращает -1, не запуская

    распакованный экзешник. Не понимаю почему. Хотя подозреваю, что сначала

    надо как-то инициализировать .NET монстра. Но примеров нет, в поисковиках

    тоже ничего не нашел... :dntknw:(

    Если есть спецы по .NET подскажите, в чем тут может быть дело???



    P.S. Меня смущает, что pUnmappedPE должен быть "memory mapped code", хотя

    чес слово не понимаю, чем отличается расположение полей маппированного в память PE файла,

    от просто загруженного в переменную. Или все же, при "отображении" EXE файла в память

    его структура в памяти меняется??
     
  2. nobody

    nobody New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2004
    Сообщения:
    32
    Адрес:
    Afghanistan
    При маппировании PE - файла создается обьект "секция".

    Без нее ничего запускатся не будет.

    Кроме того секция должна создаватся с флагом SEC_IMAGE.
     
  3. alex221

    alex221 New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2004
    Сообщения:
    3
    Адрес:
    Russia
    Ок, спасибо. Но дело в том, что и при маппировании файл не запускается. Уже все перепробовал кажется..

    :dntknw:(