Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск из памяти 
:(
    Опции темы
Dimannn
Дата 21.4.2005, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 14.4.2005
Где: Владимир

Репутация: нет
Всего: 1



Пожно ли запустить экзешник из оперативки, на не с винда?
(Используя MapVievoffile)


--------------------
Хотите быстро и без проблем опубликовать вашу программу в сети за 5 минут?
Тогда потратьте пару минут чтобы посмотреть, что предлагает OpenProject.org.ru
PM MAIL ICQ   Вверх
_hunter
Дата 22.4.2005, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



можно. но только на нт.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Dimannn
Дата 25.4.2005, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 14.4.2005
Где: Владимир

Репутация: нет
Всего: 1



Вопрос 1: 2000 = NT;
Вопрос 2: Если да, то как


--------------------
Хотите быстро и без проблем опубликовать вашу программу в сети за 5 минут?
Тогда потратьте пару минут чтобы посмотреть, что предлагает OpenProject.org.ru
PM MAIL ICQ   Вверх
_hunter
Дата 25.4.2005, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



если ты это на делфях собираешся реализовывать -- должен огорчить: мне не удалось такое даже под билдером ( только в студии ). так что о делфях можеш забыть...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Yanis
Дата 25.4.2005, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



Цитата(_hunter @ 25.4.2005, 23:03)
если ты это на делфях собираешся реализовывать -- должен огорчить: мне не удалось такое даже под билдером  ( только в студии ). так что о делфях можеш забыть...

Может всё таки покажешь как ты это сделал? Очень интересно.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Rouse_
Дата 26.4.2005, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 18
Всего: 29



Исполняемый файл помещается ресуром в приложение, и из приложения выполяется примерно вот такой код:

Код

program project2;

uses
  Windows,
  sysutils,
  rxtypes in 'Rxtypes.pas';

{$R rcx.res}

Var
 nb, i: Cardinal;

function ZwUnmapViewOfSection(SectionHandle: THandle;
  p: Pointer): DWord; stdcall; external 'ntdll.dll';

function protect(characteristics: ULONG): ULONG;
const  mapping: array [0..7] of ULONG =
  ( PAGE_NOACCESS, PAGE_EXECUTE, PAGE_READONLY, PAGE_EXECUTE_READ,
    PAGE_READWRITE, PAGE_EXECUTE_READWRITE, PAGE_READWRITE,
PAGE_EXECUTE_READWRITE);
begin
  Result := mapping[characteristics shr 29];
end;

var
  pi: TProcessInformation;
  si: TStartupInfo;
  x, p, q: Pointer;
  nt: PIMAGE_NT_HEADERS;
  context: TContext;
  sect: PIMAGE_SECTION_HEADER;
begin
  si.cb := SizeOf(si);
  CreateProcess(nil, 'cmd.exe', nil, nil, FALSE, CREATE_SUSPENDED, nil, nil, si, pi);

  context.ContextFlags := CONTEXT_INTEGER;
  GetThreadContext(pi.hThread,  context);

 ReadProcessMemory(pi.hProcess,
  PCHAR(context.ebx) + 8,
   @x, sizeof (x),
   nb
   );

  ZwUnmapViewOfSection(pi.hProcess, x);

  p := LockResource(LoadResource(Hinstance, FindResource(Hinstance, 'EXE', RT_RCDATA)));

 if p = nil then exit;

  nt := PIMAGE_NT_HEADERS(PCHAR(p) + PIMAGE_DOS_HEADER(p).e_lfanew);

  q := VirtualAllocEx( pi.hProcess,
                       Pointer(nt.OptionalHeader.ImageBase),
                       nt.OptionalHeader.SizeOfImage,
                       MEM_RESERVE or MEM_COMMIT, PAGE_EXECUTE_READWRITE);

  WriteProcessMemory(pi.hProcess, q, p, nt.OptionalHeader.SizeOfHeaders, nb);

  sect := PIMAGE_SECTION_HEADER(nt);
  Inc(PIMAGE_NT_HEADERS(sect));

  for I := 0 to nt.FileHeader.NumberOfSections - 1 do
    begin
        WriteProcessMemory(pi.hProcess,
                           PCHAR(q) + sect.VirtualAddress,
                           PCHAR(p) + sect.PointerToRawData,
                           sect.SizeOfRawData, nb);

        VirtualProtectEx( pi.hProcess,
                          PCHAR(q) + sect.VirtualAddress,
                          sect.SizeOfRawData,
                          protect(sect.Characteristics),
                          @x);
        Inc(sect);
    end;

  WriteProcessMemory(pi.hProcess, PCHAR(context.Ebx) + 8, @q, sizeof(q), nb);

  context.Eax := ULONG(q) + nt.OptionalHeader.AddressOfEntryPoint;

  SetThreadContext(pi.hThread, context);

  ResumeThread(pi.hThread);
end.


Как можно увидеть из кода, запуск приложения осуществляет CMD.EXE и имя процесса будет также CMD.EXE
Но это самый простой способ...


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
wadim
Дата 30.12.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 19.10.2006
Где: г.Тамбов

Репутация: нет
Всего: нет



Обрадовался найдя этот пример!
Ещё более обрадовался, когда реализовал его, переведя на другой язык (Clarion 55)
ОДНАКО!
Из 30 тачек на двух - не работает!
А именно: вызывает перезагрузку компа!
Ничего не понимаю! Как избавиться от перезгруза ?
Может быть, добрый автор подскажет ?
PM MAIL   Вверх
Romikgy
Дата 30.12.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



а операционки на них какие стоят?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
wadim
Дата 30.12.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 19.10.2006
Где: г.Тамбов

Репутация: нет
Всего: нет



XP - SP2
PM MAIL   Вверх
CodeMonkey
Дата 30.12.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



PAGE_EXECUTE_READWRITE + DEP - ничё такого быть не может?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Alexeis
Дата 30.12.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



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

Добавлено через 4 минуты и 32 секунды
  Еще вариант попробуйте удаленную отладку на машинах где падает винда и узнайте какой вызов приводить к таким последствиям. Отключите автоматическую перезагрузку при отказе системы. Посмотрите в синем экране смерти виновника.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
wadim
Дата 30.12.2008, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 19.10.2006
Где: г.Тамбов

Репутация: нет
Всего: нет



1. Падает т.е. шустренько так ребутится ничего не говоря после размораживания потока
 ResumeThread(pi.hThread); (ДА, а в народившемся потоке стоит СТОП, до которого дело не доходит)
2. выяснял просто - расстановкой стопов в исходнике.
3. правильно работает на тачках с WinXP (Pro, Home), Win2K
4. первоначально баг проявился на AMD-шнике, думал - такая локализация и рыть в сторону различия в структуре CONTEXT,
    а сегодня уяснил, что и на INTEL тож багится
5. ща попробовать увидеть синий экран не могу, завтра - на работе.
6. то ж касается и DEP (кстати, не помню где глянуть - в boot.ini ?)
7. антивир стоит - NOD - он не мешает. каспер (к слову) - тот предупреждает, якобы, подозревает rootkit.
8. мысля: не может ли быть трабла со стеком?
    ведь в приведённом примере стек никак не трогается и запускаемому образу достаётся стек от CMD

Это сообщение отредактировал(а) wadim - 30.12.2008, 21:19
PM MAIL   Вверх
dumb
Дата 31.12.2008, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Цитата(wadim @  30.12.2008,  22:14 Найти цитируемый пост)
Падает т.е. шустренько так ребутится ничего не говоря

автоматическую перезагрузку(свойства системы-дополнительно-загрузка и восстановление-параметры) убери и смотри код bsod'а.

как бы там ни было, код в user-mode не должен приводить к таким фатальным последствиям, так что скорее всего вина на каком-либо ПО, имеющем kernel-составляющую - тот же nod, например.
PM MAIL   Вверх
wadim
Дата 31.12.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 19.10.2006
Где: г.Тамбов

Репутация: нет
Всего: нет



1) Был снесён напрочь NOD.
2) DEP стоит по умолчанию - включено только для основных служб.
3) Был отключен авторебут.
4) синий экран смерти не показал ничего, кроме: 
STOP:0x0000008E (0xC0000005, 0x80529CDB, 0xB8A0F9FC, 0x00000000)
5) в дампе как искать виновника - не знаю

кто-нибудь может подсказать ?

Это сообщение отредактировал(а) wadim - 31.12.2008, 13:00
PM MAIL   Вверх
Alexeis
Дата 31.12.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



wadim, может так случиться, что на этом методе можно ставить крест. Насколько я помню одна из используемых в ней функций не документирована, потому MS оставляет за собой право менять такие функции без уведомления. Дата написания кода не позже начала 2005 го года, с тех пор могло многое поменяться, или же реализация зависит от железа.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0951 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.