Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вызов API функций в чужом процессе


Страницы:   1 2

The Scorpion ©   (2004-11-05 12:46:00) 

Объясните ,пожалуйста, почему при вызове API функций ,в чужом процессе ,этот процесс завершается .Как этого избежать?


The Scorpion   (2004-11-05 17:13:00) [21]

"Самое смешное то, что код
The Scorpion   (05.11.04 14:28) [5]
работает :)
правда работает тока "сам по себе"  .."

Сейчас лопну от смеха:(((


The Scorpion   (2004-11-05 17:11:00) [22]

"как же он будет работать, если атрибуты доступа распределенных им страниц региона не содержат EXECUTE-атрибута ? на основании чего ты сделал такое умозаключение ?"
Мой код создает поток с активным циклом ожидания(загрузка процессора=99.99%).


The Scorpion   (2004-11-05 17:08:00) [23]

"Разумеется. Ссылки импорта не настроены."
Не могли бы вы подсказать как сие осуществить.


Digitman   (2004-11-05 16:39:00) [24]


> kaZaNoVa ©   (05.11.04 16:35) [11]


> работает тока "сам по себе"


как же он будет работать, если атрибуты доступа распределенных им страниц региона не содержат EXECUTE-атрибута ? на основании чего ты сделал такое умозаключение ?


kaZaNoVa   (2004-11-05 16:35:00) [25]

Самое смешное то, что код
The Scorpion   (05.11.04 14:28) [5]
работает :)
правда работает тока "сам по себе"  ..


Digitman   (2004-11-05 16:32:00) [26]


> The Scorpion  


прежде чем вслепую мордовать "чужой" процесс, поэкспериментируй сначала на "своем" процессе, заменив CreateRemoteThread на CreateThread ... разницы никакой, эффект будет тот же самый, зато будет возможность использовать средства встр.отладки, что поможет тебе понять причины всех своих бед.


Digitman   (2004-11-05 16:29:00) [27]


> The Scorpion   (05.11.04 16:13) [7]


> Я это знаю.Из этого не следует ответ на мой вопрос.


ответа при такой постановке вопроса попросту не существует.


> Тем не менее мой код худо-бедно работает.Пророк из тебя
> пл


не гни пальцы.
в твоем коде даже невоор.глазом сразу видны как минимум 3 грубейшие ошибки.

1. Декларация стартуемой тобой поточной ф-ции не соответствует прототипу поточных ф-ций в соответствии с требованиями Майкрософт.

2. Атрибут PAGE_READWRITE не дает EXECUTE-доступа к страницам

3. Позиционно-зависимый код тела "ЛЮБОЙ" поточной ф-ции рано или поздно приведет к искл.ситуации.


Игорь Шевченко   (2004-11-05 16:25:00) [28]


> // ЛЮБАЯ функция написанная здесь завершает процесс


Разумеется. Ссылки импорта не настроены.


The Scorpion   (2004-11-05 16:13:00) [29]

К чему это:
"Код этого потока работает уже в своем процессе ! Родном для него ! Ибо его маш.инструкции перед началом их выполнения размещены тобой в адр.пространстве того самого "чужого" процесса." ?
Я это знаю.Из этого не следует ответ на мой вопрос.

"касаемо приведенного тобой кода можно сказать, что это сущая галиматься, которая никогда работать не будет."
Тем не менее мой код худо-бедно работает.Пророк из тебя плохой:)


Digitman   (2004-11-05 16:02:00) [30]


> Создаешь в чужом процессе поток(CreateRemoteThread).И этот
> поток вызываtт API функцию


Код этого потока работает уже в своемпроцессе ! Родном для него ! Ибо его маш.инструкции перед началом их выполнения размещены тобой в адр.пространстве того самого "чужого" процесса.

касаемо приведенного тобой кода можно сказать, что это сущая галиматься, которая никогда работать не будет.


The Scorpion   (2004-11-05 14:28:00) [31]

var  con:_context;
     h,id,newh,PH:thandle;
     p,pp:pointer;
     sm,sm2,k:dword;
     mas:array [1..50] of byte;
{$R *.res}
procedure f;
begin
// ЛЮБАЯ функция написанная здесь завершает процесс
while true do;
//Application.Initialize;
//Application.CreateForm(TForm1, Form1);
//Application.Run;
end;
procedure EndCod;
begin

end;

begin

h:=openprocess(PROCESS_all_access ,false,2256);
//SetThreadContext (getcurrentprocess,con);

sm:=dword(@endcod);
sm2:=dword(@f) ;
sm:=sm-sm2;
p:=VirtualAllocEx(h,nil,sm,MEM_RESERVE OR MEM_COMMIT  ,PAGE_READWRITE);

if WriteProcessMemory(h,p,@F,sm,k) then
 newh:=CreateRemoteThread(h,nil,0,p,nil,CREATE_SUSPENDED,id);

ResumeThread(newh);
end.


Игорь Шевченко   (2004-11-05 14:10:00) [32]

The Scorpion   (05.11.04 13:18) [2]

Телепаты в отпуске, код в студию.


kaZaNoVa   (2004-11-05 13:44:00) [33]

The Scorpion   (05.11.04 13:18) [2]
ага, но имхо это извращение :)


The Scorpion   (2004-11-05 13:18:00) [34]

Создаешь в чужом процессе поток(CreateRemoteThread).И этот поток вызываtт API функцию.Очень даже возможно.


Digitman   (2004-11-05 13:13:00) [35]


> при вызове API функций ,в чужом процессе


в "чужом" процессе невозможно вызвать API функцию, не выдумывай небылиц.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо