 |
|

13.11.2006, 14:22
|
|
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
С нами:
10582516
Репутация:
114
|
|
Дак а смогу ли я использовать
ReadProcessMemory/WriteProcessMemory к так созданому процессу?
|
|
|

13.11.2006, 14:24
|
|
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
С нами:
10577090
Репутация:
76
|
|
Сообщение от EST a1ien
Дак а смогу ли я использовать
ReadProcessMemory/WriteProcessMemory к так созданому процессу?
Если ты не владелец его и у тебя нет debuge привелегий то скорее всего нет
Получение debugePrivelege
Код:
function EnableDebugPrivilege(const Value: Boolean): Boolean;
const
SE_DEBUG_NAME = 'SeDebugPrivilege';
var
hToken: THandle;
tp: TOKEN_PRIVILEGES;
d: DWORD;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) then
begin
tp.PrivilegeCount := 1;
LookupPrivilegeValue(nil, SE_DEBUG_NAME, tp.Privileges[0].Luid);
if Value then
tp.Privileges[0].Attributes := $00000002
else
tp.Privileges[0].Attributes := $80000000;
AdjustTokenPrivileges(hToken, False, tp, SizeOf(TOKEN_PRIVILEGES), nil, d);
if GetLastError = ERROR_SUCCESS then
begin
Result := True;
end;
CloseHandle(hToken);
end;
end;
Разнеснения по поводу работы функции:
Функция включает/выключает SeDebugPrivilege. Зачем эти привилегии нужны? На досуге попробуй записать что-нибудь в память системных процессов, например, в lsass.exe, без таких привилегий ты ничего сделать не сможешь.
Насчет самой функции:
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) - получаем токен нашего процесса.
LookupPrivilegeValue(nil, SE_DEBUG_NAME, tp.Privileges[0].Luid); - Получаем LUID привилегии
AdjustTokenPrivileges(hToken, False, tp, SizeOf(TOKEN_PRIVILEGES), nil, d); - добавляем (точнее включаем) привилегию к нашему процессу
Последний раз редактировалось TaNkist; 13.11.2006 в 16:46..
|
|
|

13.11.2006, 14:39
|
|
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
С нами:
10582516
Репутация:
114
|
|
А как можно как нибудь создать неубиваемый процесс и использовать ReadProcessMemory/WriteProcessMemory только из того приложения которое его запустило.
То есть надо создать прогу которая запускает приложение меняет пару байт в запущеной проге и потом запрещает любое изменение запущенного приложения?
|
|
|

13.11.2006, 17:19
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 571
С нами:
10943066
Репутация:
1236
|
|
2EST a1ien: ядерное программирование как раз и есть верх гениальности.
если ты хочешь чтобы процесс нельзя было убить - блокируешь доступ например к OpenProcess путем перехвата native api NtOpenProcess. Т.о. пропадет возможность открыть дескриптор процесса по которому его можно грохнуть. Перехват осуществляется простой подменой адресов ф-ий в SDT, доступ к которой имеет любой драйвер импортирующий KeServiceDescriptorTable.
Но... все это говно. Хуки с ядра можно снять даже из юзермода  сам работал над этой вещью, назвал бетатеразином. Например после отработки начальной фазы кода, которая снимает все перехваты, мгновенно падает вся проактивная защита от касперского 6... ибо основана она на руткит-технологиях перехвата... которые уже стары как мир
выход есть. например полное скрытие процесса. мне вот нравится метод разрыва 2сторонних описателей процессов. можно заценить в исходниках FU rootkit
__________________
 
snow white world wide
|
|
|

13.11.2006, 20:24
|
|
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
С нами:
10582516
Репутация:
114
|
|
Да блин мне ненадо настолько глубако закапыватся мне надо просто чтобы пользователь немог убить процесс запущенный мной из моей проги и всё!!!
Только вот этот http://articles.org.ru/cfaq/index.php?qid=1321&frommostrecent=yes
Пример почемуто неработает он компилится запускает блокнот только я всёравно могу его убить из диспетчера задач на вкладке процесы!!!!
|
|
|

13.11.2006, 21:38
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
С нами:
10653446
Репутация:
836
|
|
хм.. прикольно но пашет
назови свою прогу именем одним из неубиваемых процессов... (winlogon к примеру)
увидешь эффект 
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
|
|
|

15.11.2006, 14:09
|
|
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
С нами:
10582516
Репутация:
114
|
|
Неа это бред ты просто назови любой exe'шник именем системного процеса запусти его и ты его несможеш убить 
|
|
|

15.11.2006, 23:56
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
С нами:
10653446
Репутация:
836
|
|
EST a1ien
если серьезно то что тебе нужно это:
1. Использовать dll-ку с wasm'a
1.1. "пихаешь" ее в res.
1.2. при запуску распаковываешь
1.3. тут уже LoadLibrary, GetProcAddress, FreeLibrary
2. я писал что-то на подобие статьи вот: http://www.forum.antichat.ru/thread24230.html ... так вот в процессах спрятали... а если хотим скрыть сам файл? (чтобы в проводнике не видно было?) делаем как сказанно... к нашему файлу SetAtribytes(OurFile,faAnyFile)
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|