ПАМАГИТЕ

Статус
В этой теме нельзя размещать новые ответы.

Dimapolius

Житель города
#1
?( Хто нить подскажите пож. тут такое дело нужно запустить программу находящуюся в памяти (в реале дело такое: есть прога а в ней другая - первая прога запихивает прогу (которая в ней) в память запускает её и завершается сама) (((но косяк я не как не придумаю как запустить из памяти прогу)))...
Зараннее блогадарен Dimapolius :)
 

Dimapolius

Житель города
#4
Не в балагане без тебя вижу!!! Лучше бы предложил решение чем указывать где я....
 

Dimapolius

Житель города
#5
требуется запустить EXE файл находящийся в памяти (и только в памяти-т.е. его самого нет на винте)
 

xood

Гость города
#6
ну возьми и запиши его на диск и с диска запусти, а вообще можно передать управление по адресу в памяти (из-под ДОС точно можно было), я посмотрю - скажу как, а то уже и не помню если честно...
 

skif

Житель центра
#9
Просто вызови его:
call <адрес>
при этом не имеет значения в какой области памяти (или стэка, если он находиться в теле другой программы) расположен исполняемый модуль.
Можно конечно запустить его искусственно, т.е. при обращении через call ОС выполняет все процедуры для запуска процесса, но можно все это сделать и ручками, но ты уверен что хочешь сам прописывать дескрипторы, выделять стэк и т.д?
Если же файл находиться в памяти удаленной машины, то подобный фокус естественно не пройдет и нужно хорошенько подумать.
Но выгрузить файл на внешний носитель было бы гораздо проще, ОС все-равно это сделает при запуске модуля.
 

LuzZza

Гость города
#11
Хрен Вам. Из одной проги винда НИКАГДА не разрешит залесть в память к другой проге!!!
На то она и винда! Вот загрузить Dll в память - потом ёё можно будет запускать. Хочешь, расскажу как.
 

skif

Житель центра
#12
LuzZza, извени, не понял... " Из одной проги винда НИКАГДА не разрешит залесть в память к другой проге!!!"... Хм.. точно? :)
 

Dimapolius

Житель города
#13
1. Какая винда?
2. Кто тебе такую чушь сказал...не только даст обратится но и даже сменить держатель наживую
 

LuzZza

Гость города
#14
Может я чего-то не понимаю? Просвятите меня...
1. Я забыл, вы ткт все крутые, под виндой "не сидите..." :|

2. Все мною сказанное относилось к винде и оно небезосновательно:

Область, которая простирается от границы первых 4 Мбайт до границы 2 Гбайт содержит адресное пространство текущего 32-разрядного процесса (который в данный момент активен). Здесь размещается исполнимый код процесса, его данные и полученные динамически блоки памяти. Защита адресных пространств разных процессов достигается при помощи механизма страничной адресации.

или вот:

Hо это вовсе не означает, что каждая пpогpамма имеет 4 гигабайта физической памяти, а только то, что пpогpамма может обpащаться по любому адpесу в этих пpеделах. Windows сделает все необходимое, чтобы сделать память, к котоpой обpащается пpогpамма, "существующей". Конечно, пpогpамма должна пpидеpживаться установленных пpавил, иначе Windows вызовет General Protection Fault. Каждая пpогpамма одна в своем адpесном пpостpанстве, в то вpемя как в Win16 дело обстоит не так. Все Win16-пpогpаммы могут "видеть" дpуг дpуга, что невозможно в Win32. Этот особенность помогает снизить шанс того, что одна пpогpамма запишет что-нибудь повеpх данных или кода дpугой пpогpаммы.
 

Dimapolius

Житель города
#15
неа...дело в том что именно блок заголовка программы....и заголовка данных программы дествительно защищены...а вот сами данные так же как и держатель....тем боллее что ты можешь "попросить ядро сделать ето"....:D
 

LuzZza

Гость города
#19
Без оскорблений. Похоже, Дима, ты круто изменился. :) Мне это не по душе. Какой-то самомнительный стал... Ты перестал уважать мое мнение? У тебя было на это основание? То, что я не знаю этого слова, еще ни о чем не говорит и с твоей стороны было совершенно непростительно судить о моих знаниях только по этому. Да и еще, если ты обо всем осведомлен, зачем создал эту тему?

ОТВЕТ:
1. Ето не оскарбление...а дружеское так сказать...
2. Я не менялся...а меняюсь...только в количестве знаний....опыта....(там может круто и изменился)
3. Мнение любого человека я уважаю как своё
4. Я не судил о твоих знаниях...я ответил на вопрос
5. Посмотри на дату создания....
 
Статус
В этой теме нельзя размещать новые ответы.