Полезнейшие модули для делфи!!!
| |
Android | Дата: Воскресенье, 05.02.2012, 10:58 | Сообщение # 1 |
Постоянный
Зарегистрирован: 13.12.2011
Группа: Пользователи
Сообщений: 100
Статус: Offline
| Товарищи!!!!
Очень интересные модули для работы с процессами, памятью чужих процессов. Например, скрытие из списка процессов, разработанные ms-rem'ом.
Вот только почему-то не хочет работать у меня... Все компилится, но почему-то не работает ожидаемым образом. В частности, не вижу эффекта от скрытия процесса...
В модуле Ring0.pas - есть функция для скрытия процесса (HideProcess)/ Вот ее никак не получается у меня заюзать нормально... А кроме того, там еще куча полезного. Например, подгрузка длл в чужой процесс, подгрузка образа своей проги целиком в чужой процесс и т.п. ДАвайте дружно разберемся.
Потестите у себя, товарищи. Помогите разобраться.
з.ы. Почему-то архив с ринг0.пас переобозвался в цифры после загрузки на сайт...
|
|
| |
Волк-1024 | Дата: Воскресенье, 05.02.2012, 12:19 | Сообщение # 2 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Может из-за того, что под Вынь 7 не актуально?
Pascal, C\C++, Assembler, Python
|
|
| |
Android | Дата: Воскресенье, 05.02.2012, 12:39 | Сообщение # 3 |
Постоянный
Зарегистрирован: 13.12.2011
Группа: Пользователи
Сообщений: 100
Статус: Offline
| я под ХР пытался.
|
|
| |
dolphin | Дата: Понедельник, 06.02.2012, 00:22 | Сообщение # 4 |
Администратор
Сообщений: 906
Статус: Offline
| advapihook работает у меня (win7). А ранг 0 разбираться нужно, а там где ты их брал нет примеров?
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
Android | Дата: Понедельник, 06.02.2012, 10:53 | Сообщение # 5 |
Постоянный
Зарегистрирован: 13.12.2011
Группа: Пользователи
Сообщений: 100
Статус: Offline
| так в том и дело, что пример не отрабатывает... подвисает и все... могу их выложить если кому надо. dolphin, а какие именно функции тестил под семеркой???
|
|
| |
XSPY | Дата: Понедельник, 06.02.2012, 21:21 | Сообщение # 6 |
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
| Про ring 0 достаточно литературы.Честно говоря,я думал что у меня в универе про это не расскажут,но когда на Операционных Системах изучали уровни,то их дофига r0,1,2,3... И что интересно,с r0 работать не сложнее,чем с r3-тут дело только в практике и хорошем справочнике(справочник нужен,чтобы не написать вечный бсод или убийцу компа).
Я не крекер,а программист! Я не преступник-я свободный человек! Лучше один раз накодить,чем сто раз качать билды!
|
|
| |
Android | Дата: Вторник, 07.02.2012, 18:06 | Сообщение # 7 |
Постоянный
Зарегистрирован: 13.12.2011
Группа: Пользователи
Сообщений: 100
Статус: Offline
| Товарищи, посмотрите внимательно - в модуле advapihook есть функции, подгружающие свою длл в чужой процесс. Может у кого-то есть идеи, как потом заставить выполниться определенные функции из библиотеки в контексте другого процесса??? или уж на карйняк своего (но тут вроде понятней - динамически подгрузил библиотеку и норм), но так, чтоб можно было параметры передавать как-нибудь...
|
|
| |
Android | Дата: Вторник, 07.02.2012, 22:56 | Сообщение # 8 |
Постоянный
Зарегистрирован: 13.12.2011
Группа: Пользователи
Сообщений: 100
Статус: Offline
| Товарищи, сам нашел ответ на свой вопрос, каким же образом передлавать параетры в функцию из длл
Если нужная библиотека еще не загружена, то Доступно только для пользователей
если библиотека уже загружена, то Доступно только для пользователей
А вот пара примеров, как это работать должно Code (* --------- Sample (GetSystemDirectory) --------- *)
var parameters: array of Pointer; returned: Cardinal; Dir: String; begin SetLength(parameters, 2); SetLength(Dir, MAX_PATH); // Set Buffer size parameters[0] := Pointer(@Dir[1]); // 1st parameter, buffer for path string parameters[1] := Pointer(MAX_PATH); // 2nd parameter, length of buffer if not DynamicDllCallName(kernel32, 'GetSystemDirectoryA', true, returned, parameters) then begin ShowMessage('Function could not be found!'); end else begin SetLength(Dir, returned); // Cut String ShowMessage('GetSystemDirectoryA:'#13#10'Path: ' + Dir + #13#10'Length: ' + IntToStr(returned)); end; end;
(* --------- Sample (TextOut) --------- *)
const SampleText = 'test'; var parameters: array of Pointer; returned: Cardinal; begin SetLength(parameters, 5); parameters[0] := Pointer(Canvas.Handle); // 1st parameter, handle to the form's canvas parameters[1] := Pointer(10); // 2nd parameter, left margin parameters[2] := Pointer(30); // 3rd parameter, top margin parameters[3] := @SampleText[1]; // 4th parameter, pointer to the sample string parameters[4] := Pointer(Length(SampleText)); // 5th parameter, length of the sample string if not DynamicDllCallName(gdi32, 'TextOutA', true, returned, parameters) then begin ShowMessage('Function could not be found!'); end else begin if not BOOL(returned) then begin // function's result = false ShowMessage('TextOut() failed!'); end; end; end;
(* --------- Sample (LockWorkStation) --------- *)
var parameters: array of Pointer; returned: Cardinal; begin // We don't have parameters, so we don't touch parameters if not DynamicDllCallName(user32, 'LockWorkStation', true, returned, parameters) then begin ShowMessage('Function could not be found!'); end else begin if not BOOL(returned) then begin ShowMessage('LockWorkStation() failed!'); end; end; end;
Давайте поразмыслим, как можно еще применять функции, описанные в модулях, прикрепленных в начале темы...
з.ы. Хотел скрыть код функций тэгом хайд - че-то он не заработал...
Сообщение отредактировал Android - Вторник, 07.02.2012, 22:58 |
|
| |
Android | Дата: Вторник, 07.02.2012, 23:02 | Сообщение # 9 |
Постоянный
Зарегистрирован: 13.12.2011
Группа: Пользователи
Сообщений: 100
Статус: Offline
| Товарищи, помогите разобраться, если я хочу получать строковый результат из функции подгруженной из длл, то как в этом случае надо интерпретировать результат , возвращаемый функцией? Тип результата: pchar.
|
|
| |
|