Есть загрузчик который содержит x86/x64 бинарники, он должен подгрузить один из бинарников в какой нибудь процесс, потом загрузчик закрывается и бинарник из процесса в который инжектировались должен опять инжектироваться в другой процесс и подгружать он должен уже подходящий бинарник и так до бесконечности. То есть это не простой инжект x86 или x64 бинарника. Если бинарник згрузили в x86 процесс, он должен уметь инжектировать в x64 или инжектировать сам себя в x86,. Хотел бы услышать алгоритм как такое реализовать без костылей, как вот реализовать такую передачу бинарников между процессами
Создание такого "бесконечного" инжектора с возможностью переключения между x86 и x64 бинарниками требует заметной осторожности и понимания, как работают различные механизмы и архитектуры. Это сложная задача, которую можно разделить на несколько шагов. 1. Определите архитектуру целевого процесса: Прежде чем инжектировать код, вам необходимо определить, является ли целевой процесс x86 или x64. Это можно сделать, например, с помощью функции `IsWow64Process` из WinAPI. 2. Создание подходящего процесса: В зависимости от архитектуры целевого процесса, выберите соответствующий бинарный файл для инжектирования (x86 или x64). 3. Инжектирование кода: Выполните инжектирование бинарного кода в целевой процесс. Для этого можно воспользоваться методами, такими как `CreateRemoteThread`, `QueueUserAPC` или любым другим методом инжектирования. 4. Управление переключением архитектур: Инжектируемый код должен содержать оба бинарных файла (x86 и x64) и определить архитектуру процесса после инжектирования. Необходимо чтобы инжектированный код мог выполнять следующие действия: - Определить архитектуру текущего процесса. - Определить архитектуру следующего процесса, в который запланирована инжекция. - В зависимости от архитектур, выбрать подходящий бинарник. - Инжектировать выбранный бинарник в следующий процесс, используя соответствующие методы. 5. Гарантия безопасности и стабильности: Подобная "бесконечная" инжекция может вызывать проблемы стабильности и потенциальные проблемы с безопасностью. Таким образом, убедитесь, что код написан надежно и протестирован во всех возможных сценариях. Рассмотрите возможность использования таймаутов и других безопасностных механизмов для предотвращения возможных проблем.
Ну это понятно. Например мы выбрали процесс и определили что он x64 и заинжектили туда x64 бинарник, далее например выбронному процессу нужно инжектироваться в x64 процесс, это без проблем у нас есть текущий образ, просто сами себя копируем, но если нужно инжетировать с выбранного процесса в x86 процесс? В выбранные процесс то мы заинжектировали только x64 бинарник
Инжектируй каждый раз оба шелла, склеянные в один буффер, в зависимости от архитектуры выбирай, какой из них запускать. Логично же, не?
Felther, как и с любыми другими rop-гаджетами. почитай практичекий анализ двоичных файлов, там есть. Вкратце - начала ищешь знакомое, потом от этого пляшешь.
Что значит нету, у тебя два шелла в одном большом буффере, смешение точек входа обоих ты знаешь, что тебе еще надо?
Felther, а в чём соль? такие инжекты быстро вылетят с ошибкой "нет памяти" и/ль "куда ты лезешь, редиска?".
Mikl___ , TermoSINteZ предлагаю добавить в правила варн или бан за ответы от ChatGPT, иначе форум превратится в помойку. Я про пост номер 2 от galenkane
Не, мне грубо говоря нужно так не в каждый инжектиться. Я так понимаю мне нужно выделять один буфер в процессе чтобы туда вместились два образа, потом их туда записывать. Чтобы потом заинжектить второй образ, выполняясь в первом, достаточно получить размер текущего образа в ntheaders и прибавить imagebase. А как тогда получить потом imagebase, если передавать управление на ep? Или просто управление тогда передавать не на ep, а на специально созданную функцию с 1 аргументом imagebase(как раз на нее можно будет создавать удаленный поток), но тогда на нее нужно получать смещение и как это сделать не экспортируя эту функцию?
вообще, можешь соорудить (полу)автомат - параметры инжекта подыскиваются прогой, а ты задаёшь начальные данные: размер буфера и смещения брутфорсить, и переключалка функций инжекта. + один более-менее крупный буфер выделить не всегда возможно, нужно дробить на мелкие части. все данные можно в файлик на диске складывать и чрез него передавать любые параметры + подгружать доп код. фиии.. да, пущай играются - скоро эту всю хрень отключат (как минимум для доступа простому люду)