Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/35: Рейтинг темы: голосов - 35, средняя оценка - 4.80
3 / 3 / 0
Регистрация: 03.02.2012
Сообщений: 76
.NET 3.x

Программно запустить приложение на выполнение

03.02.2012, 21:20. Показов 6669. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!
Мне нужно что бы программа в апдейторе скачивалась и открывалась... То есть я кликнул на бутон "Ключ"
У меня программа скачается и откроется...
Собственно я бы мог ключ вшить в сам апдейтор но это не получится так как апдейтор написан на c#, а ключ на с++
ЗыСы: код для скачивания не нужен.. Это то я знаю=)
Перерыл весь гугл=)) Очень надеюсь что хоть тут помогут..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2012, 21:20
Ответы с готовыми решениями:

Как программно запустить на выполнение команду из подменю контекстного меню
Подскажите, пожалуйста, как программно запустить на выполнение команду из подменю контекстного меню. Например, данная команда...

Запустить стороннее приложение на выполнение
Допустим, есть две программы. Вторая должна открыться, если пользователь, например, введет нужное значение в первой. Как так сделать?

Программно запустить консольное приложение
Помогите разобраться с кодом есть консольное приложение. Мне нужно чтоб его можно было запускать внешним приложением. Дело в том, что если...

16
 Аватар для ibmpc
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
03.02.2012, 21:24
Класс Process
Методы Process в частности Start и его перегрузки
1
3 / 3 / 0
Регистрация: 03.02.2012
Сообщений: 76
03.02.2012, 21:28  [ТС]
Спасибо конечно, но мне бы как нибудь по проще.. Конкретный код если можно=)
Ах да, и ещё что бы он сам определял где находиться программа для запуска ключа.. вернее не сам, что бы вот он запускал их папки своего расположения.. То есть, например у меня апдейтор находится в c:\UPDATER, а у кого нибудь другого он может находится в D:\Коты и кошки...
0
 Аватар для ibmpc
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
03.02.2012, 21:44
Цитата Сообщение от TonyPak Посмотреть сообщение
что бы он сам определял где находиться программа для запуска ключа.. вернее не сам, что бы вот он запускал их папки своего расположения..
Папку расположения можно определить, а вот название исполняемого файла?
1
3 / 3 / 0
Регистрация: 03.02.2012
Сообщений: 76
03.02.2012, 21:45  [ТС]
DB_key.exe
0
 Аватар для ibmpc
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
03.02.2012, 21:54
C#
1
2
3
4
5
6
using System.Windows.Forms;
using System.Diagnostics; //Process
using System.IO;
 
if (File.Exists(Application.StartupPath + @"\DB_key.exe")) // файл существует?
Process.Start(Application.StartupPath + @"\DB_key.exe"); // запустить
Можно еще ждать завершения исполняемого файла:
C#
1
2
if (File.Exists(Application.StartupPath + @"\DB_key.exe"))
Process.Start(Application.StartupPath + @"\DB_key.exe").WaitForExit(); // можно указать время ожидания
1
3 / 3 / 0
Регистрация: 03.02.2012
Сообщений: 76
03.02.2012, 22:19  [ТС]
Спасибо большое! Тыкнул тебе 3 спасибки=) Если ещё что нибудь непонятно будет - напишу=)

Добавлено через 2 минуты
Всё разобрался всё работает=)) Спасибо ещё раз=)
0
 Аватар для ibmpc
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
03.02.2012, 22:27
Цитата Сообщение от TonyPak Посмотреть сообщение
сли ещё что нибудь непонятно будет - напишу=)
Всегда стараюсь помогать по возможности людям.
1
3 / 3 / 0
Регистрация: 03.02.2012
Сообщений: 76
03.02.2012, 22:38  [ТС]
Ладно раз у тебя есть возможность то можно ещё 1 вопрос?=)
Как сделать инжектор, другими словами внедрение Dll файла в какой либо процесс?
Есть конечно это и в интернете, но только исходники, а не принцип создания.. Да и исходник кривой до невозможности....
0
 Аватар для ibmpc
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
03.02.2012, 22:46
Цитата Сообщение от TonyPak Посмотреть сообщение
Как сделать инжектор, другими словами внедрение Dll файла в какой либо процесс?
Внедрение своего кода в исполняемый файл, чтобы при запуске этого файла исполнялся и твой код? Или DLL Import или DLL внедрить в твой исполняемый файл?
1
3 / 3 / 0
Регистрация: 03.02.2012
Сообщений: 76
03.02.2012, 22:55  [ТС]
Да, иными словами внедрить DLL например в APB.exe или Google.exe и тд..
0
 Аватар для ibmpc
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
04.02.2012, 00:44
Тема обширная и сложная, от себя сказать особо нечего так что:
Жесткое внедрение DLL в Windows-программы
Способ принудительной загрузки DLL в адресное пространство процесса

Непосредственно содержание ссылки
Доброго времени суток уважаемые пользователи форума MuForum.

В связи с тем, что проблема с внедрением .dll файлов в чужое приложение достаточно актуальная, я решил написать полное руководство для новичка, по данному вопросу.

Начну с инструментов которые нам потребуются для работы с внедрением .dll файла

1. OllyDbg - это отладчик уровня User Space, который приобрел большую популярность среди пользователей всего мира.
Сейчас для OllyDbg написано множество плагинов, так что работать с ним одно удовольствие.
OllyDbg обладает хорошей функциональностью, это делает его пригодным для решения различных задач и исследования кода любой сложности.
Интерфейс отладчика полностью настраиваемый: фон рабочих окон, цвет и размер шрифта, подсветка определенных ассемблерных инструкций и многое другое.

2. Pe Explorer - программа для просмотра и редактирования PE-файлов - EXE, DLL, SYS, DRV, CPL, OCX, BPL, DPL, SCR и др.
Включает в себя PE Header Viewer, Exported/Imported API Function Viewer, API Function Syntax Lookup, Resource Viewer/Editor, Dependency Scanner & Disassembler.
Кроме всего прочего, с помощью PE EXPLORER можно без труда русифицировать самые разнообразные win-приложения...

3. Утилита для системных программистов, позволяющая редактировать или просто просматривать многие части исполняемых файлов, создавать дамп из памяти, оптимизировать и анализировать их.

Итак, после того как мы немного ознакомились с программами которыми будем работать, можно уже приступать к работе.
Первым делом запускаем наш отладчик OllyDbg и с помощью него открываем main.exe
File -> Open -> main.exe

После того как main.exe загрузился, мы увидим его большой ассемблерный код, что нам сейчас потребуется сделать так это запомнить или записать на бумажку либо в блокнот не важно точку входа в программу, на английском языке это звучит как EntryPoint.



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

Теперь мы готовы внедрять .dll файл, для этого нажимаем Правый клик -> Folow in Dump -> Selection, и видим как нас перенесло в нижнее окно, под названием Hex Dump.
Теперь нам надо задать имя нашей .dll, для этого необходимо выделить столько точек сколько имеет символов ваша .dll учитывая и ".dll", например:
f1UZ.dll имеет 8 символов, получается необходимо выделить 8 точек и нажать пробел, и в появившемся окне, в строке Ascii вписываем имя вашей .dll

Нажмите ок либо Enter, теперь мы видим результат проделанной работы.
Далее отсчитываем несколько строчек, и вписываем следующие команды:
PUSH и указываем на первый offset где начинается красный текст, как мы видим у меня он 00801015
PUSH 00801015
Далее нам нужно вызвать функцию LoadLibraryA, для этого нажимаем Правый клик -> Search For -> Name (label) in current module либо Ctrl+N, и вспике этих функций ищем ту которая нам необходима.

После того как мы её нашли, кликаем на неё один раз и нажимаем Enter, кликаем ещё один разок на CALL DWORD PTR DS:[<KERNEL32.LoadLibraryA>] и нажимаем Enter.

Далее нам необходимо нажать на CALL DWORD PTR DS:[80220C], скопировать эту функцию и перейти в то место где мы внедряем наш .dll файл и вставить ниже нашей команды PUSH 00801015, то есть
PUSH 008010105
CALL DWORD PTR DS:[80220C]

Теперь нам нужно сделать прыжок на EntryPoint, делается это следующим образом
Вписываем ниже CALL DWORD PTR DS:[80220C]
JMP и тот offset который я вам говорил чтобы вы запомнили, тот offset который был выделен белым цветом.

PUSH 008010105
CALL DWORD PTR DS:[80220C]
JMP 007D37E6



Далее нам необходимо сохранить всю проделанную работу, для этого выделяем все изменения и нажимаем Правый клик -> Copy to executable -> Selection -> Правый клик -> Save file

Забыл о самом главном, перед тем как сохранить изменения, запомните offset команды PUSH 008010105, на этот offset мы будем изменять EntryPoint

Дело осталось за малым, необходимо изменить Entry Point для того чтобы .exe приложение смогло прочитать наш .dll файл.
Выше я описал программу Pe Explorer, но причинам того что лимит на её использование у меня закончился, прийдется использовать другую программу под названием LordPe.

Теперь запускаем программу LordPe и с помощью этой программы открываем main.exe
PE Editor -> main.exe



В строке Entry Point мы видим следующие цифирки, 003B23A0, если вы ещё помните, это начальный Entry Point, тот что я говорил запомнить ещё в самом начале.
Сейчас мы будем его изменять.
Обратите внимание на эту картинку , обратите внимание на offset команды PUSH 00801015 -> 00801026.
Этот offset мы должны вписать в программу LordPe где строка Entry Point, как вы заметили я вписал не 00801026 а 00301026, почему я так сделал объясню чуть позже, собственно вы должны сделать точно так же.

Нажимаем Save -> Ok и радуемся


Усовершенствованный метод внедрения DLL
Внедрение DLL с помощью ловушек
Внедрение DLL в чужое адресное пространство.
Автоматическое внедрение DLL в таблицу импорта
Функциональная шпиономания (на примере Delphi)
Внедрение в чужой процесс
Внедрение DLL в чужое адресное пространство.
Внедрение DLL и перехват API-вызовов (старина Рихтер)
Внедрение DLL с помощью ловушек

P.S. Советую вчитываться и избегать эффекта "много буков лень читать". Ссылки разные, но непосредственно с C# мало что связано. Надеюсь сам тоже доберусь все это основательно проштудировать. И еще вроде есть пример в одной из книг Рихтера (программирование эффективных приложений).
Если конкретизировать задачу внедрение библиотеки managment (.NET) или unmanagmen code? Первое по моему слабо реализуемое, но точно можно из неуправляемого кода вызвать управляемый .NET.
1
3 / 3 / 0
Регистрация: 03.02.2012
Сообщений: 76
04.02.2012, 01:15  [ТС]
Спасибо! Я много букафффф не избегаю.. Просто не всё понимаю=)) Потом сюда выложу своё детище, оценишь ок?=)
0
 Аватар для ibmpc
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
04.02.2012, 01:27
Цитата Сообщение от TonyPak Посмотреть сообщение
оценишь ок?=)
Из меня оценщик не очень, так что советую в отдельную тему чтобы народу больше оценило и по критиковало, а сюда ссылку на тему.
0
3 / 3 / 0
Регистрация: 03.02.2012
Сообщений: 76
04.02.2012, 02:02  [ТС]
В общем, инжектор я сделал.. Всё работает.. Только ещё 1 вопросик, нужно что бы он инжектил Автоматически, то есть я поставил галочку на "Авто-инжект" и он инжектил, сразу при запуке..
0
 Аватар для ibmpc
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
04.02.2012, 11:58
Инжектор в студию как говориться.
Цитата Сообщение от TonyPak Посмотреть сообщение
я поставил галочку на "Авто-инжект" и он инжектил, сразу при запуке
Сделал на C# ? Тогда не вопрос я думаю. В любом случае если хочешь чтобы он при запуске инжектора сразу дело делал, то пропиши это сразу после загрузки приложения. Для WinForms например на событие Form.Load - то есть сразу после создания формы. Если хочешь чтобы сразу как ты галочку поставишь событие компонента CheckBox используй - по изменению состояния запускай процедуру вживления.
P.S. Буду рад увидеть твое детище. Создавай тему на всеобщее обозрение.
1
3 / 3 / 0
Регистрация: 03.02.2012
Сообщений: 76
04.02.2012, 12:13  [ТС]
Цитата Сообщение от ibmpc Посмотреть сообщение
Инжектор в студию как говориться.

Сделал на C# ? Тогда не вопрос я думаю. В любом случае если хочешь чтобы он при запуске инжектора сразу дело делал, то пропиши это сразу после загрузки приложения. Для WinForms например на событие Form.Load - то есть сразу после создания формы. Если хочешь чтобы сразу как ты галочку поставишь событие компонента CheckBox используй - по изменению состояния запускай процедуру вживления.
P.S. Буду рад увидеть твое детище. Создавай тему на всеобщее обозрение.
Ок! Щас небольша проблемка с инжектором возникла, думаю скоро исправлю=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2012, 12:13
Помогаю со студенческими работами здесь

Приложение со всеми библиотеками, или как запустить приложение без установленного FW
Извините, если для профессионалов эта тема покажется уже заезженной, но я не нашла решения в интернете. Я в целях обучения языку С#...

Как java-приложение может попросить OS запустить внешнее приложение?
Как java-приложение может попросить OS запустить внешнее приложение?

Запустить приложение, и получить результат, который вернуло отработавшее приложение
Всем привет! Народ подскажите апишку(ки) для реализации следующей задачи. Мне нужно проверить соответствие введенного пользователем...

Запустить файл на выполнение
Нужна программа, в которой по нажатию кнопки запускается файл, указанный в коде. Файл находится на рабочем столе.

Запустить внешний файл на выполнение
Народ, Как запустить внешний файл из под VBA? . .exe, например .xls или .mdb открыть??? если с помощью API-функции и ShellExecute,...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru