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

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

WriteProcessMemory


Страницы:   1 2

helptome ©   (2006-02-03 22:44:00) 

ситуация такая: имеем прогу А в которую прога Б внедряет свой код\dll по средствам WriteProcessMemory.
Вопрос: можноли прогой В отследить обращение проги Б к прогу А? Если нет,то как можно это отследить?

P.S искал на Яндексе, нигде ничего про перехват WriteProcessMemory нету:\


Хинт   (2006-02-10 20:50:00) [1]

Вызываю InterceptFunctiont. Потом запускаю утилиту, которая делает WriteProcessMemory. Никаких сообщений не выводится, программа спокойно получает доступ к памяти. Насколько я понимаю, хук не устанавливается.

P.S. Windows XP SP2


kaZaNoVa   (2006-02-10 20:44:00) [2]

Хинт ©   (10.02.06 20:32) [26]
странно, у меня работал ..

а что именно не работает?
перехват осуществляется? или мож глюки какие? ошибки?


Хинт   (2006-02-10 20:32:00) [3]

2kaZaNoVa
Хм. У меня код не работает (никакой реакции на WriteProcessMemory).


kaZaNoVa   (2006-02-10 20:13:00) [4]

Хинт ©   (10.02.06 18:30) [23]
А что такое oldWriteProcessMemory?



type PWriteProcessMemory=function (hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer;
 nSize: DWORD; var lpNumberOfBytesWritten: DWORD): BOOL; stdcall;

var

oldWriteProcessMemory:PWriteProcessMemory;


n0name   (2006-02-10 20:05:00) [5]

Игорь Шевченко ©   (10.02.06 11:45) [20]
вопрос - ответ.


Хинт   (2006-02-10 18:30:00) [6]

2 kaZaNoVa:
А что такое oldWriteProcessMemory?


Игорь Шевченко   (2006-02-10 13:13:00) [7]

kaZaNoVa ©   (10.02.06 12:40) [21]

нелегко


kaZaNoVa   (2006-02-10 12:40:00) [8]

Игорь Шевченко ©   (10.02.06 11:45) [20]
тот пример у меня работал, и подобным образом думаю легко можно вычислить "вредоносную" программу ..


Игорь Шевченко   (2006-02-10 11:45:00) [9]

kaZaNoVa ©   (09.02.06 17:14) [16]

Мне такие действия сильно напоминают установку стальной двери рядом с дыркой в заборе


kaZaNoVa   (2006-02-10 01:24:00) [10]

n0name   (09.02.06 17:55) [18]
:)


n0name   (2006-02-09 17:55:00) [11]

Не думал что мой модуль где то валяется :))


kaZaNoVa   (2006-02-09 17:41:00) [12]

kaZaNoVa ©   (09.02.06 17:14) [16]
с помощью библиотеки HideMod:

эту библиотеку можно скачать с Кладовки (полные исходники с множеством примеров)
http://kladovka.net.ru/index.cgi?pid=list&rid=330


kaZaNoVa   (2006-02-09 17:14:00) [13]

пошаманил тут немного на досуге над сабжем, вышло типа - сабжевая WriteProcessMemoryперехватывается и  запришивается у юзера- разрешить её выполнение или нет:
function myWriteProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer;
 nSize: DWORD; var lpNumberOfBytesWritten: DWORD): BOOL; stdcall;
Var t:integer;
Begin
@oldWriteProcessMemory:=addr_WriteProcessMemory;

t:=MessageBoxA(0,'he-he, нажмите ОК если разрешаете программе запись в память','Внимание-перехватили!!!!!',MB_OKCANCEL );

if t<>1 then
begin
MessageBoxA(0,'запись в память отменили, послали ошибку - программа может повести ссебя неадекватно :crazy:','Внимание !',0);
Result:=false;
end else Result:=oldWriteProcessMemory(hProcess,lpBaseAddress,lpBuffer,nSize,lpNumberOfBytesWritten);
end;


сам перехват реализовал немного по другому - с помощью библиотеки HideMod:

procedure InterceptFunctions; //перехватим
begin
addr_WriteProcessMemory:=DLLInterceptAPI ('WriteProcessMemory','kernel32.dll',@myWriteProcessMemory);
end;

procedure UninterceptFunctions;//восстановим
begin
DLLUnInterceptAPI(addr_WriteProcessMemory,@myWriteProcessMemory);
end;


Игорь Шевченко   (2006-02-09 11:08:00) [14]

Lamer@fools.ua ©   (08.02.06 23:43) [13]

В данном случае против лома вообще приемов нету. Никакие перехваты не помогут


helpme   (2006-02-09 10:45:00) [15]

вот вот,против лома есть прием - другой лом, но эт я отвлекся

Нет,еще не решил,последовал вашему совету:
> если Вам непонятен код [5], то думаю немного стоит поучить
> delphi прежде чем браться за задачи подобной сложности..
>

Так что пока даже к практике и не приступал. Еще проблема в том,что Делфя у меня уже даже и не помню откуда,но догадываюсь что не с нормального магазина,ибо хелп отсутствует в корне :\ Так что проблем куча,а сроки жмут.
Но ниче,пробъемся.

P.S спасибо огромное всем за ответы


Lamer@fools.ua   (2006-02-08 23:43:00) [16]

>> kaZaNoVa ©   (07.02.06 23:27) [11]

VirtualAlloc + MEM_RESERVE, я полагаю.

>> Игорь Шевченко ©   (08.02.06 11:26) [12]

> Против лома нет приема
... если нет другого лома :-)


Игорь Шевченко   (2006-02-08 11:26:00) [17]

Против лома нет приема


kaZaNoVa   (2006-02-07 23:27:00) [18]

Rouse_ ©   (07.02.06 22:43) [10]
а как это можно реализовать?


Rouse_   (2006-02-07 22:43:00) [19]

Ну вообщето примитивная и абсолютно глупая защита от VirtualAllocEx - это захват всей доступной виртуальной памяти при самом старте процесса :) Тогда в нем выделить ничего не получиться, ибо негде... :)


kaZaNoVa   (2006-02-07 18:21:00) [20]

к автору - задача решена? если да, то как, нам тоже интересно ...


Страницы:   1 2

Наверх

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