![]() |
eXeL@B —› Вопросы новичков —› Возможно ли подменить модуль в памяти(через приложение) |
Посл.ответ | Сообщение |
|
Создано: 28 марта 2016 02:54 · Личное сообщение · #1 Можно ли через приложение, с встроенным внутрь модулем(.DLL), подменить - другой модуль .dll, который грузиться в память для совсем другого приложения, своего рода перехват/inject ! Объясню немного как я это вижу My.exe -> Run -> Check if(Target.dll) is loaded? -> Handle Target = GetModuleHandle(Target.dll); Target = MyHandle; с начало запускается мое приложение(С GUI), которое инициализирует проверку(загружен ли модуль в память, по указанному через GUI Пути), если загружен меняем оригинальный Target.dll на мой MyHandle.dll, ? Отсюда вопрос - сработает ли такой способ, если нет то как следует сделать ? Само перехватываемое приложение, запускает - модуль давольно просто Target.exe -> Run -> Target.dll Но есть 1 момент, с начало загружаются некоторые модули(примерно 3), и только после этого грузиться тот что мне нужен. внедряться в сам Target.exe Не вариант. Возможно ли реализовать такое ? ![]() |
|
Создано: 28 марта 2016 05:07 · Поправил: dosprog · Личное сообщение · #2 |
|
Создано: 28 марта 2016 07:56 · Поправил: VodoleY · Личное сообщение · #3 |
|
Создано: 28 марта 2016 09:51 · Поправил: soft · Личное сообщение · #4 |
|
Создано: 28 марта 2016 12:37 · Личное сообщение · #5 VodoleY пишет: ЗЫ было дело я писал врапер.. фиктивная длл создавалась автоматом. так что нет ничего не возможного soft пишет: пусть приложение сразу грузит ее или делайте wrapper для Target.dll с вашим кодом MyHandle.dll имеет те же функции что и Target.dll, но естественно там добавлен еще функционал, тут вся загвоздка в том - можно ли подменять сам Handle от Target.dll, моим в памяти процесса, без того чтобы копировать на диск MyHandle.dll - вместо Target.dll(естественно с тем же именем). Если это не совсем возможно без внедрения в Target.exe, то как будет проще в коде, реализовать вставку .dll в My.exe, и последующее копирование с заменой Target.dll, но при этом с предварительным копированием Target.dll в TEMP, и возвращением обратно - после завершения процесса, конечно еслиб можно было внедрить через .exe мой модуль поверх Target.dll - без физического его изменения, было бы куда более лучше - возможно ли увидеть код подобных процедур ? ![]() |
|
Создано: 28 марта 2016 14:48 · Поправил: ajax · Личное сообщение · #6 bolvai пишет: еслиб можно было внедрить через .exe мой модуль поверх Target.dll - без физического его изменения, было бы куда более лучше ![]() возможно. примерный алго: компиляция своей длл с адресами секций, как у оригинала. хз, как система поведет себя на проецирование непосекционное, не игрался. копирование своей dll поверх загруженной, настройка релоков и импорта (своего и в таргет exe, если адреса функции им уже получены). вызов DllMain. остальное - детали типа DLL_THREAD/PROCESS_DETACH и т.п. гугль в помощь. за день/сутки, в теории, можно управиться ----- От многой мудрости много скорби, и умножающий знание умножает печаль ![]() |
|
Создано: 28 марта 2016 15:54 · Поправил: bolvai · Личное сообщение · #7 ajax пишет: копирование своей dll поверх загруженной Как это примерно в коде выглядит, возможно увидеть ? По принципу Handle Действуем из моего приложения сеим образом - Code:
Либо это как то по другому ? Что следует искать в гугле ? Добавлено спустя 6 часов 22 минуты P.S. Я так понял Code:
Не как не переделать в обычный Handle, чтобы далее уже иметь возможность к примеру Читать файл через ReadFile ? ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Возможно ли подменить модуль в памяти(через приложение) |