Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Сегодня :

День славянской письменности и культуры


Загрузка приложения из MemoryStream


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
BStorm
Гость







СообщениеПн, 31-Окт-2005 17:27    Заголовок сообщения: Загрузка приложения из MemoryStream
Цитата

Хочу просить форум о помощи!

Мне необходимо написать приложение ктоторое запускало бы "ехе" файл вложенный в это приложение в виде MS : TMemoryStream

Как вложить ехе файлик в своё приложение, я разобрался, а вот запустить его из MemoryStream не создавая при этом на диске файл никак не могу придумать.

помогайте..
В начало
Gold_Dreamer
Гость







СообщениеПн, 31-Окт-2005 17:53 
Цитата

Я думаю, что все-таки прийдется тебе вытащить этот файл, но после того, как поюзаешь, удалить к едрени фени.
В начало
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеПн, 31-Окт-2005 19:46 
Цитата

сохрани поток в файл, запусти, подожди пока закончится, удали.

есть оригинальный метод: ))))
запихнуть в память по адресу выполняемой инструкции твоей программы ))) или не твоей ))
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж 13-ый
Администратор


Возраст: 36
Знак зодиака: Близнецы
Зарегистрирован: 28.04.2002
Сообщения: 3551
Откуда: Москва
СообщениеПн, 31-Окт-2005 19:53 
Цитата

Цитата:
есть оригинальный метод: ))))
запихнуть в память по адресу выполняемой инструкции твоей программы ))) или не твоей ))


сымитировать взлом своей проги через переполнение буфера :)

_________________


http://fotki.yandex.ru/users/vladimir13

С уважением, 13-ый Wink
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Пол:Муж Ktf
Администратор


Возраст: 32
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеВт, 01-Ноя-2005 6:06 
Цитата

в какой-то проге я видел очень странный прием защиты программы:
введенный пароль являлся частью исполняемого файла.
если быть точнее, он загружался в динамический байтовый массив, а потом осуществлялась передача управления по адресу массива (что-то типа jmp @bytearray).
если пароль неправильный, дальнейшее поведение проги было непредсказуемо :)

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеВт, 01-Ноя-2005 19:48 
Цитата

Кстати, а CreateProcess сработает, если образ исполняемого файла лежит как memory-mapped?
_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеВт, 01-Ноя-2005 20:28 
Цитата

можно попробовать сделать ассемблерную вставку, в которой передавать управление памяти по определённому адресу (как раз jmp @bytearray)
В начало
Посмотреть профиль Отправить личное сообщение
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеВт, 01-Ноя-2005 21:33 
Цитата

Цитата:
можно попробовать сделать ассемблерную вставку, в которой передавать управление памяти по определённому адресу

В винде? Это тебе надо сперва образ файла развернуть, пересчитать адреса, таблицы импорта... Нужно быть уж очень крутым и терпеливым кулхацкером для таких экспериментов

_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеВт, 01-Ноя-2005 23:00 
Цитата

есть же проги, их много и таблицу импорта делать, причём кажется легче именно разворачивать, чем упаковывать, и всё остальное, значит реализуемо.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ktf
Администратор


Возраст: 32
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеСр, 02-Ноя-2005 6:12 
Цитата

Цитата:
Кстати, а CreateProcess сработает, если образ исполняемого файла лежит как memory-mapped?

CreateProcess - нет, а вот CreateThread с этим запросто справится ;)
Цитата:
надо сперва образ файла развернуть, пересчитать адреса, таблицы импорта... Нужно быть уж очень крутым и терпеливым кулхацкером для таких экспериментов

не обязательно, изучаешь PE-формат - и вперед, к созданию упаковщиков, протекторов и прочей нечисти :)

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ktf
Администратор


Возраст: 32
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеСр, 02-Ноя-2005 7:07 
Цитата

вот, сваял специально для всех вас!
пример передачи управления коду, размещенному в байтовом массиве.
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  codemask: array [0..24] of byte =
    ($6a, $40, $68, $00, $00, $00, $00, $68, $00, $00, $00, $00,
     $68, $00, $00, $00, $00, $B8, $00, $00, $00, $00, $ff, $d0, $c3);
  msg: PChar = 'hello world';
  cap: PChar = 'array call';
var
  P: pointer;
  code: array [0..24] of byte;

  procedure WriteAddr(idx: integer; data: integer);
  var
    i: integer;
  begin
    for i:=0 to 3 do code[i+idx]:=byte(data shr (i shl 3));
  end;

begin
  CopyMemory(@code, @codemask, 25);
  WriteAddr(3, integer(cap));
  WriteAddr(8, integer(msg));
  WriteAddr(13, handle);
  WriteAddr(18, integer(@MessageBox));
  p:=@code[0];
  asm
    mov eax, p
    call eax
  end;
end;

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
BStorm
Гость







СообщениеСр, 02-Ноя-2005 12:12 
Цитата

Хммм.... Я ещё не очень силён в Delphi ..
Приведённой функцией можно загружать из MemoryStream?
Если да, то как?
В начало
Пол:Муж Ktf
Администратор


Возраст: 32
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеСр, 02-Ноя-2005 12:22 
Цитата

Цитата:
Приведённой функцией можно загружать из MemoryStream?

да нет, это скорее баловство с моей стороны, не воспринимай близко к сердцу... :)

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

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
BStorm
Гость







СообщениеСр, 02-Ноя-2005 12:26 
Цитата

ЭЭЭх... ладна СЕНКЮ!!!

Хороший у вас форум.. я тут задержусь :):):):)
В начало
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100