Как из Dll расшифровать код процесса?

Тема в разделе "LANGS.C", создана пользователем PILOT, 1 май 2009.

  1. PILOT

    PILOT New Member

    Публикаций:
    0
    Регистрация:
    1 май 2009
    Сообщения:
    5
    Всем привет и с праздником.
    Ситуация в общем такая. Мною написана прога, которая добавляет в таблицу импорта выбранного exeшника свою Dll и шифрует секцию кода exeшника. Ну это все делалось сами знаете как: CreateFile, CreateFileMapping, MapViewOfFile.
    Теперь вот надо написать Dll, которая при запуске расшифрует секцию кода того самого exeшника. Вот только как теперь расшифровать секцию уже запущенного процесса (функция расшифровки то есть, а как получить доступ к секции кода - не знаю)? Спс заранее всем откликнувшимся.
     
  2. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    NtProtectVirtualMemory(PAGE_READWRITE_EXECUTE)?

    хотя вопрос не совсем ясен
     
  3. PILOT

    PILOT New Member

    Публикаций:
    0
    Регистрация:
    1 май 2009
    Сообщения:
    5
    Когда я зашифровывал секцию кода "жертвы", то открывал его (СreateFile, CreateFileMapping, MapViewOfFile), получал отображение, шифровал, добавлял длл. При запуске "жертвы" (хотя это скорее защищаемое приложение, но в моем случае..:)) управление получает естессна длл, которая при Process_attach должна расшифровать секцию кода, а при Process_detach зашифровать снова. Но вот только процесс то уже запущен и СreateFile, CreateFileMapping, MapViewOfFile не прокатят, а как получить начальный и конечный адрес секции кода exe, который уже загружен в память я не знаю:dntknw:.
     
  4. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    GetModuleHandle,0 - получаешь базу образа ехе файла
    потом читай мануалы по формату РЕ - там узнаешь, как получить VA и размер секции кода
     
  5. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    Код (Text):
    1. 1. Посчитать адрес первого описателя секции (IMAGE_SECTION_HEADER) - макрос для получения адреса есть в  Winnt.h вроде
    2. 2. Найти нужный описатель
    3. 3.
    4. IMAGE_SECTION_HEADER::Misc.VirtualSize - размер
    5. IMAGE_SECTION_HEADER::VirtualAddress - RVA секции
     
  6. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    либо заюзать
    IMAGE_NT_HEADERS::IMAGE_OPTIONAL_HEADER::BaseOfCode
    IMAGE_NT_HEADERS::IMAGE_OPTIONAL_HEADER::SizeOfCode
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Толку от шифрования, если в памяти модули распакованный. Наверно очередное гуано - криптор да ?
    Сохранение дампа рулит.
     
  8. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    ну дык антидапм сделает, что нибудь вроде копимем2 только не по страницам расшифровывать а по инструкциям
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    ohne
    Судя по вопросу:
    Будет и перемещение памяти и антидамп и эмулятор бгг.)
     
  10. PILOT

    PILOT New Member

    Публикаций:
    0
    Регистрация:
    1 май 2009
    Сообщения:
    5
    вот базу процесса мне и надо было:). Спасибо всем ответившим.
    2 Clerk: Ну да, если есть правильный ключ, то после дамп рулит. Да, наверное очередной гуано-криптер, а мне большего и не надо), мне бы диплом защитить:).
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Понятно. Базу процесса - что это значит, вам адрес обьекта процесс найти нужно, или начало виртуального адресного пространства в физической памяти или как это понять ?
    Липовый диплом будет.
     
  12. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    подозреваю, что нужна именно база образа ехе - что же еще :)
    как и большинство дипломов в пост-ссср :)
     
  13. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    тогда все ясно
    ключ и не нужен - ты сам все расшифруешь
    дамп снимается после передачи управления расшифрованному коду и все - минуту может займет
    лучше смени тему пока не поздно
    для диплома это уж слишком... по-детски

    зы:
    Clerk криптор уже чует за версту)
     
  14. PILOT

    PILOT New Member

    Публикаций:
    0
    Регистрация:
    1 май 2009
    Сообщения:
    5
    Вот ключ то как раз-таки нужен. Дешифровщик его спросит обязательно. При неправильно введенном ключе программа работать не будет (просто расшифрует все не правильно).
     
  15. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    Эээмм... а в чем прикол этой темы то?
    какой-то бред выходит. или я не прав?
     
  16. PILOT

    PILOT New Member

    Публикаций:
    0
    Регистрация:
    1 май 2009
    Сообщения:
    5
    Ну мб стоило назвать "Как получить базу ехе образа из dll". Впрочем базу образа мне нужно получить как раз для того, чтобы расшифровать секцию кода).
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Код (Text):
    1.     mov eax,fs:[TEB.Peb]
    2.     mov eax,PEB.ImageBaseAddress[eax]