Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/40: Рейтинг темы: голосов - 40, средняя оценка - 4.73
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825

Внедрить программу в другой процесс

27.09.2017, 20:26. Показов 9107. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть задачи такова. Есть программулина, которой нужно работать от имени другого процесса (думаю проще всего от explorer.exe). Дабы шаловливые ручки умного ребенка не смогли закрыть ее из диспетчера задач, а если и смогли, то с концами.
Сама программа на C# . Консольная. Каким образом запустить ее в памяти другого процесса? Темы на форуме есть, старенькие. В c++ шарю очень плохо, если есть добрые люди, то можно ли на пальцах?

Добавлено через 2 часа 13 минут
Возможно переписать софтину под dll.
Она не должна ничего перехватывать или менять через winApi. Просто выполняться незаметно, параллельно с процессом explorer.exe
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.09.2017, 20:26
Ответы с готовыми решениями:

Найти процесс и внедрить в него код DLL
делаю инжектор, вот хочу чтобы инжектор сам находил нужный процесс и автоматически инжектил ДЛЛ в этот процесс вот код инжектора public...

Как внедрить мини-игру в процесс другой игры
Кто может помочь сделать такую вещь: в GTA SA нужно вместо стандартной мини-игры внедрить любую другую (например "сапер", шахматы...

Как внедрить dll в чужой процесс
Как внедрить длл в чужой процесс, и отлавливать все его сообщения...... если возможно, то небольшой пример или ссылка рус....

52
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
30.09.2017, 17:39
Студворк — интернет-сервис помощи студентам
Посмотрел код. Что-то как-то сильно мудрено...

Возня с asm-кодом не нужна. Инжект можно делать по классической схеме,
описанной вроде бы еще в старых книжках Рихтера:

1. Открывается процесс - OpenProcess.

2. В процессе выделеятся блок памяти и туда пишется полный путь к dll -
VirtualAllocEx + WriteProcessMemory. А также завершающий нуль-символ.
Бит выполнения, кстати говоря (PAGE_EXECUTE), здесь не нужен.

3. Запускается удаленный поток - CreateRemoteThread. В качестве
стартового адреса передается адрес LoadLibrary, а в качестве
аргумента - адрес выделенного блока, т.е. путь к dll.

Все!
))
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
30.09.2017, 17:50
Цитата Сообщение от Убежденный Посмотреть сообщение
Все!
Там же DLL не нативная, а .NET сборка. Она из своей DllMain ничего не запускает и добавить что-то свое туда тоже нельзя. DLLка то загрузится, но делать ничего не будет. Как вы в этой сборке метод запустите таким образом?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
30.09.2017, 18:08
Лучший ответ Сообщение было отмечено MakcPletnev как решение

Решение

Насколько я знаю, .NET-сборки нельзя просто взять и загрузить обычным LoadLibrary.
Нужно сначала проинициализировать .NET Runtime и т.п.
Вот здесь можно посмотреть PoC:

DLL Injection Part 4 — Injecting managed DLL
https://blog.adamfurmanek.pl/2... on-part-4/

Injecting .Net Assemblies Into Unmanaged Processes
https://www.codeproject.com/Ar... -Processes

dotnet-dll-injector
https://github.com/sarxos/dotnet-dll-injector
1
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
30.09.2017, 18:38
Лучший ответ Сообщение было отмечено MakcPletnev как решение

Решение

Цитата Сообщение от Убежденный Посмотреть сообщение
Насколько я знаю, .NET-сборки нельзя просто взять и загрузить обычным LoadLibrary.
В том то и дело что можно. При наличии у .NET сборки экспортированной функции при вызове данной функции .NET Runtime запустится автоматически. Возможно это конечно нигде не документировано, но работает.

Я кстати сделал без asm'а инжектор, разницы со старым вариантом в работе нет никакой... Выкладываю вариант без asm'а.
Вложения
Тип файла: zip DotNetInjector.zip (7.08 Мб, 19 просмотров)
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
01.10.2017, 09:38  [ТС]
Someone007, вернуло -1 на ваш первый вариант
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
01.10.2017, 09:46  [ТС]
Someone007, вариант без asm вставок сработал как надо. На удивление.
вот что написало. И звук пошел
Миниатюры
Внедрить программу в другой процесс  
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
01.10.2017, 10:02  [ТС]
Someone007, Еще 1 вопрос, нельзя ли как-то объеденить х86 и х64 инжектор, понятно, что dll должны быть разные, а с инжектором не выйдет как-нибудь через проверку на битность?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
02.10.2017, 00:35
Цитата Сообщение от MakcPletnev Посмотреть сообщение
Еще 1 вопрос, нельзя ли как-то объеденить х86 и х64 инжектор, понятно, что dll должны быть разные, а с инжектором не выйдет как-нибудь через проверку на битность?
Думаю сделать то можно, только зачем...
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
02.10.2017, 11:25  [ТС]
Someone007, разные ОС на всех ПК. Нужно чтобы файл был один, чтобы раскидать его на всю локальную сеть
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
02.10.2017, 11:37
Так поменяйте у инжектора платформу на AnyCPU, уберите флаг Prefer 32 bit и тогда он будет на 32 битной винде работать как x86, а на 64 битной как x64. А DLLки переименуйте чтобы по разному назывались для x86 и x64и укажите к ним пути соответственно в коде.
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
02.10.2017, 11:39  [ТС]
Someone007, попробую

Добавлено через 1 минуту
Someone007, А с dll не прокатит так?)
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
02.10.2017, 11:47
Цитата Сообщение от MakcPletnev Посмотреть сообщение
А с dll не прокатит так?)
Нет. AnyCPU сборка не может иметь экспортированных функций, т.к. там явно указывается платформозависимый тип при экспорте.
Конечно и AnyCPU сборку можно заинжектить, но сложнее, т.к. для этого придется писать уже 2 промежуточных (по 1 на платформу) DLL на С++...
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
02.10.2017, 11:49  [ТС]
Someone007, понял. Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.10.2017, 11:49

Как внедрить в процесс свои адреса и байты?
Здравствуйте, как можно внедрить в процесс, то есть в игру адреса и байты через Delphi 7? Есть например функция: Нет Отдачи = 0xA04E96...

Как сделать так что бы батник мониторил процесс и если процесс перезепустился то запуск или перезапуск другой программы
помогите , как сделать так что бы батник мониторил процесс и если процесс перезепустился то запуск или перезапуск другой программыпро...

Как внедрить в окно другой программы свою инфу?
Привет. Есть такая прога - Mumble, она создана для голосового общения и ее очень часто используют геймеры. Так вот, чтобы видеть, кто...

Внедрить программу в другую программу/игру
Написал маленькую прогу для игры которая нажимает пробел каждые пол секунды Сделал её по верх всех окон, она по верх игры но когда я...

Внедрить аудио в программу
Всем привет! Никак не получается впихнуть аудио файл в программу. Программа при определенном исходе воспроизводит аудио файл. Локально...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
53
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru