|
12.12.2006, 21:58
|
#1
|
Разработчик
Регистрация: 08.06.2006
Сообщений: 412
Написано 13 полезных сообщений (для 4 пользователей)
|
Казнить Exe
Как запустить любой экзешник програмно ?
|
(Offline)
|
|
12.12.2006, 23:55
|
#2
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Re: Казнить Exe
Эмулировать работу ОСовского загрузчика)
|
(Offline)
|
|
13.12.2006, 00:12
|
#3
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Re: Казнить Exe
Сори за дезу насчет ЕкзекФайл. Перепутал разделы.
Насколько помню, в Варсике 4 и 5 ЕХЕ-шники запускаются с помощью команды Shell
Что однако не отменяет необходимость самостоятельного ознакомления с прилагающимися материалами.
|
(Offline)
|
|
13.12.2006, 01:17
|
#4
|
|
Re: Казнить Exe
запустить еще один поток и
перейти на Entry point PE файла
|
|
|
13.12.2006, 01:57
|
#5
|
ПроЭктировщик
Регистрация: 17.02.2006
Сообщений: 144
Написано 13 полезных сообщений (для 36 пользователей)
|
Re: Казнить Exe
Да но для начала нужно секции все правильно разместить, иначе КРАШ.
|
(Offline)
|
|
13.12.2006, 08:41
|
#6
|
|
Re: Казнить Exe
с етим возится прийдется
|
|
|
14.12.2006, 03:56
|
#7
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Re: Казнить Exe
в Shell32.dll есть функция ShellExecute()
принимает всего пять параметров... все null кроме третьего который является адресом на строку в которой путь к приложению (строка заканчивается нулем)... это из асма... а из васика хз... надо в МСДН смотреть... 100% должна быть такая функция...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
14.12.2006, 10:23
|
#8
|
ПроЭктировщик
Регистрация: 17.02.2006
Сообщений: 144
Написано 13 полезных сообщений (для 36 пользователей)
|
Re: Казнить Exe
Значит так если запустить ЕХЕ с жеского диска: Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long.
Если пускать из памяти: Нужно создать пустой приостановленный процесс, разместить все секции согласно их адресов в памяти, сменить Точку входа, и после продолжить процесс.
|
(Offline)
|
|
14.12.2006, 16:44
|
#9
|
|
Re: Казнить Exe
есть некий набор exe + dll
нужно зделать дамп памяти после загрузки exe и dllок в оперативку
и потом востановить етот дамп уже из другого exe не имея первоначальной программы
ето возможно ?
|
|
|
14.12.2006, 16:48
|
#10
|
ПроЭктировщик
Регистрация: 17.02.2006
Сообщений: 144
Написано 13 полезных сообщений (для 36 пользователей)
|
Re: Казнить Exe
Неа.
Сам подумай, прога уже работать будет.
|
(Offline)
|
|
14.12.2006, 23:50
|
#11
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Re: Казнить Exe
Сообщение от Diplomat
Насколько помню, в Варсике 4 и 5 ЕХЕ-шники запускаются с помощью команды Shell
|
Вот я посмотрел как использовать эту комманду в MSDN в коде VBNET:
Функция Shell
Запускает исполняемую программу и возвращает целочисленное значение, содержащее идентификатор процесса программы, если она все еще выполняется.
[highlight=VBNET]Public Function Shell( _
ByVal Pathname As String, _
Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus, _
Optional ByVal Wait As Boolean = False, _
Optional ByVal Timeout As Integer = -1 _
) As Integer[/highlight]
Параметры
Pathname
Обязательный. String. Имя исполняемого файла со всеми необходимыми аргументами. Pathname может также содержать имя диска и путь.
Style
Необязательный. AppWinStyle. Значение, выбираемое из перечисления AppWinStyle, соответствующее стилю окна, в котором запускается программа. Если параметр Style опущен, Shell использует значение AppWinStyle.MinimizedFocus, запускающее программу в свернутом окне с фокусом.
Аргумент Style может принимать одно из следующих значений:
Сообщение от Значение перечисления
AppWinStyle.Hide - Окно скрыто, и фокус передан скрытому окну.
AppWinStyle.NormalFocus - Окно получает фокус и отображается в своих предыдущих размере и позиции.
AppWinStyle.MinimizedFocus - Окно отображается как значок и имеет фокус.
AppWinStyle.MaximizedFocus - Окно получает фокус и развернуто во весь экран.
AppWinStyle.NormalNoFocus - Окно восстанавливает свои последние размер и позицию. Активное в данный момент окно остается активным.
AppWinStyle.MinimizedNoFocus - Окно отображается в виде значка в панели задач. Активное в данный момент окно остается активным.
|
Wait
Необязательный. Boolean. Значение, определяющее, должна ли функция Shell ожидать завершения выполнения программы. Если параметр Wait опущен, Shell использует False.
Timeout
Необязательный. Integer. Длительность в миллисекундах интервала, в течение которого ожидается завершение выполнения программы, если Wait равно True. Если параметр Timeout опущен, Shell использует-1, то есть таймаут не используется и Shell ожидает завершения выполнения программы. Таким образом, если вы опустите Timeout или установите его в -1, существует возможность, что Shell никогда не передаст управления вашей программе.
Примечания
Значение, возвращаемое Shell, зависит от того, находится ли программа, указанная в Pathname, до сих пор в процессе выполнения (на момент возврата Shell). Если вы установите Wait в True и программа завершится до окончания таймаута, Shell возвращает ноль. Если таймаут истекает или вы опускаете Wait или установили его в значение в False, Shell возвращает идентификатор процесса программы. Идентификатором процесса называется уникальный номер, определяющий запущенную программу.
Если функция Shell не может запустить указанную программу, возникает ошибка System.IO.FileNotFoundException. Это может произойти, например, когда вы пытаетесь запустить 16-разрядную программу, такую как command.com, из приложения, использующего System.Windows.Forms. Для обработки подобной ситуации можно запустить 32-разрядную программу, которая запустит требуемую 16-разрядную. В случае с command.com можно в качестве альтернативы запустить cmd.exe.
По умолчанию функция Shell выполняет программу асинхронно. Это означает, что программа, запущенная функцией Shell может не прекратить выполнения до того, как операторы, следующие за Shell, будет выполнены. Если вы желаете дождаться окончания выполнения программы, установите Wait в True.
Следует всегда заключать полный путь и имя файла в кавычки, согласно следующему примеру:
ID = Shell("""C:\Program Files\MyFile.exe"" -a -q", , True, 100000)
Каждая пара прилежащих двойных кавычек ("") в строковом литерале интерпретируется, как кавычка внутри строки. Таким образом, в предыдущем примере функции Shell передается следующая строка:
"C:\Program Files\MyFile.exe" -a -q
Если путь не заключен в кавычки, Windows будет искать файл Program.exe в каталоге C:\, вместо MyFile.exe в C:\Program Files.
Пример:
Данный пример использует функцию Shell для выполнения приложения, указанного пользователем. Задание AppWinStyle.NormalFocus в качестве второго аргумента раскрывает окно нормального размера и передает ему фокус.
[highlight=VBNET]Dim ProcID As Integer
' Run Calculator.
ProcID = Shell("C:\Windows\system32\calc.exe", AppWinStyle.NormalFocus)
' The preceding path is for Windows XP;
' The Windows 2000 path is C:\WINNT\system32\calc.exe.[/highlight]
|
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:38.
|