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

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

27.09.2017, 20:26. Показов 9105. Ответов 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
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
28.09.2017, 01:24
Студворк — интернет-сервис помощи студентам
Вот короче инжектор, с ним у меня работает все точно так же как и с Cheat Engine.
Вложения
Тип файла: zip DotNetInjector.zip (7.08 Мб, 43 просмотров)
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
28.09.2017, 02:15
Там в инжекторе нужно пути к библиотеке изменить на актуальные.
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
28.09.2017, 12:16  [ТС]
Someone007, что-то странное. Никак он не инжектится. Я что-то делаю не так или что? Что за бред)
Миниатюры
Внедрить программу в другой процесс  
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
28.09.2017, 19:09
А посмотрите есть ли в DLL которую вы инжектите экспортируемый метод вообще? Может у вас не работает пакет DLLExport?

Еще из вариантов проверить версии .NET под которые компилируется DLL и установленные по факту в системе.

А еще пути к библиотеке поправить не забыли в коде?
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
29.09.2017, 19:29  [ТС]
Someone007, а где указывается экспортируемый метод? Я инжектирую длл из примера выше

Добавлено через 5 минут
Someone007, в исходнике инжектора поменял только пути

Добавлено через 3 минуты
Someone007, Extreme Injector v3 инжектится, но ничего не происходит. Но либа на С++ инжектится Extreme Injector v3 и работает как надо

Добавлено через 28 минут
Someone007, с той dll, что нормально внедряется Extreme Injector v3 , наш инжектор тоже не работает. Процесс просто пропадает (закрывается, без ошибок)
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
29.09.2017, 22:00
А если попробовать мои скомпилированные бинарники?
Немного поменял код, инжектор сам запускает блокнот и сразу инжектит в него DLL.
C#
1
2
3
4
5
6
7
8
9
10
11
12
        const string LibX64 = @"InjectMe.dll";
        const string LibX86 = @"InjectMe.dll";
 
        // ...
        InjectDLL(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, IntPtr.Size == 4 ? LibX86 : LibX64));
        // ...
 
        private static void InjectDLL(int pid, string libName)
        {
            Process process = Process.Start("notepad");
            // ...
        }
Вложения
Тип файла: zip test.zip (22.0 Кб, 19 просмотров)
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
29.09.2017, 22:03  [ТС]
Someone007, а вот тут работает. Как бы в работающий процесс это втолкать)?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
29.09.2017, 22:11
Цитата Сообщение от MakcPletnev Посмотреть сообщение
а вот тут работает. Как бы в работающий процесс это втолкать)?
У меня работает хоть для работающего, хоть для запущенного из инжектора. Если у вас не работает, то значит вы что-то делаете не так.

У меня всего несколько вариантов почему у вас не работает:
- вы инжектите DLL в процесс с несовпадающей битностью (x86 DLL в x64 процесс или наоборот)
- вы инжектите DLL используя инжектор с несовпадающей битностью (x86 инжектор только для инжекта в x86 процессы)
- целевой процесс и инжектор запущены под разными учетками (хотя в этом случае в инжекторе будет отображена ошибка...)
- у вас не отрабатывает пакет DllExport из-за чего не создается экспортируемый метод Start
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
29.09.2017, 22:31  [ТС]
Someone007, хммм. Надо подчистить все, и еще раз попробовать с 0 все битности скомпилировать. Ошибок с компилом нет. Не думаю, что либа не отрабатывает. Если указать не существующий метод - пишет ошибку создания потока. Отпишусь завтра по результату
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
29.09.2017, 22:40
Вот еще, если моя скомпиленная либа из поста #26 у вас инжектится в запущенный процесс инжектором из поста #21 и вы не ошиблись с битностью, то тут уж точно что-то не так с пакетом DllExport.

Еще будет кращится целевой процесс если в инжекторе указан неверный путь к DLL.
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
29.09.2017, 22:50  [ТС]
Someone007, симптомы, как буд-то и правда путь указан неверно. Поменял на рандомный, тоже самое. Крашится процесс. Пробовал вашу библиотеку инжетить, тоже самое. Такое чувсво, что что-то не так как нужно работает...
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
29.09.2017, 22:54  [ТС]
Someone007, попробуйте проверить. Путь указан к dll скомпилированной вами. pid изменил с int на string , чтобы искать по имени процесса
Вложения
Тип файла: zip DotNetInjector.zip (7.12 Мб, 11 просмотров)
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
29.09.2017, 23:17
Ну так инжектор который автоматом запускал блокнот и инжектил у вас сработал, а в нем путь подставляется автоматом исходя из того в какой папке находится инжектор, ну и сами DLLки проверенные, с экспортированным методом.

Добавлено через 5 минут
Цитата Сообщение от MakcPletnev Посмотреть сообщение
попробуйте проверить
Работает, проверял на блокноте x64 (да, в x64 битной винде есть как x86 блокнот, так и x64). И DLLки у вас нормальные там обе.

Путь у вас там кстати указан относительный, что может быть проблемой.

Закиньте DLL в папку с инжектором (битность не перепутайте), укажите путь как нибудь так
C#
1
2
3
4
5
6
const string LibX64 = @"InjectMe.dll";
const string LibX86 = @"InjectMe.dll";
 
...
 
InjectDLL(pid, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, IntPtr.Size == 4 ? LibX86 : LibX64));
И проверьте.

Добавлено через 10 минут
Битность целевого процесса отображается в диспетчере задач, если есть приписка в скобках 32 bit - значит x86, а если нет -
x64.
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
29.09.2017, 23:45  [ТС]
Someone007, вот что дает отладчик при падении notepad . Может это как-то поможет. Я просто не могу понять в чем может быть проблема)) Я и от админа запускать пробовал. Процесс 64битный , все должно работать. Почему тем более внедряется другим инжектором и не крашит.. Вообще не понятно. Мне кажется проблема из-за того, что путь исполнения почему-то 0х000000.. , мне кажется он не должен таковым быть
Миниатюры
Внедрить программу в другой процесс  
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
30.09.2017, 00:03
Похоже крашит во внедряемой asm вставке, там несколько вариантов:
- в целевом процессе не загружена kernel32.dll, хотя такого не может быть...
- не удается загрузить DLLку которую вы инжектите по какой-то причине (не соответствует битность, неправильный путь к файлу, фазы луны, вспышки на солнце...)
- в инжектируемой DLL'е не удается найти экспортируемый метод с указанным именем (Start)

Нажмите там на посмотреть дизассемблированный код и покажите сам код и значения в строке на которой падает.
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
30.09.2017, 00:09  [ТС]
Someone007,
Миниатюры
Внедрить программу в другой процесс  
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
30.09.2017, 00:10  [ТС]
тут все грустно. Почему-то он пытается что-то сделать в нулях, я не уверен, что такое должно быть.скомпилируйте программу вы и пришлите так же, как присылали с инжектором при запуске. 64 битная версия
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
30.09.2017, 00:20
Что-то у вас отладчик какую-то хрень вместо asm кода показывает... В окне "Cтек вызовов" есть что нибудь?
Вложения
Тип файла: zip test.zip (22.1 Кб, 2 просмотров)
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
30.09.2017, 10:03  [ТС]
Someone007, ваш тоже крошится. Есть, вот это наверное про тот самый kernel
Миниатюры
Внедрить программу в другой процесс  
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
30.09.2017, 17:05
Вот, поменял немного инжектор, теперь он не должен кращить процесс, а писать код ошибки.
При запуске удаленного потока есть 3 кода выхода: 0 без ошибок, -1 не удалось загрузить DLL, -2 не удалось найти экспортированную функцию Start. В случае неудачного запуска функции в удаленном потоке выводится код ошибки Win32.
Вложения
Тип файла: zip DotNetInjector.zip (7.08 Мб, 20 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.09.2017, 17:05

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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