У меня такой вопрос. Я перехватываю функцию CreateProcessW из kernel32.dll на Delphi 7. Но почему то перехват не работает на Windows 7. В чем дело ? Вот код DLL: library wh; uses Windows, advApiHook, Dialogs; type NTStatus = cardinal; far_jmp = packed record push:byte; PProcointer; ret:byte; end; OldCode = packed record one:dword; two:word; end; PUnicodeString = ^TUnicodeString; TUnicodeString = packed record Length: Word; MaximumLength: Word; Buffer: PWideChar; end; PObjectAttributes = ^TObjectAttributes; TObjectAttributes = packed record Length: DWORD; RootDirectory: THandle; ObjectName: PUnicodeString; Attributes: DWORD; SecurityDescriptor: Pointer; SecurityQualityOfService: Pointer; end; PClientID = ^TClientID; TClientID = packed record UniqueProcess:cardinal; UniqueThread:cardinal; end; const STATUS_ACCESS_DENIED = NTStatus($C0000022); Function CreateProcessW(lpApplicationName: PWideChar; lpCommandLine: PWideChar; lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL; stdcall; external 'kernel32.dll' name 'CreateProcessW'; var TCreateProcessW: Function (lpApplicationName: PWideChar; lpCommandLine: PWideChar; lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL; stdcall; function NCreateProcessW(lpApplicationName: PWideChar; lpCommandLine: PWideChar; lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL; stdcall; begin ShowMessage('Hooked: '+lpCommandLine); TCreateProcessW(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation); end; procedure DLLEntryPoint(dwReason: DWord); begin case dwReason of DLL_PROCESS_ATTACH: begin HookProc('kernel32.dll', 'CreateProcessW', @NCreateProcessW, @TCreateProcessW); end; DLL_PROCESS_DETACH: begin UnhookCode(@TCreateProcessW); end; end; end; begin DllProc := @DLLEntryPoint; DLLEntryPoint(DLL_PROCESS_ATTACH); end. /////
В семерке такое не прокатит, там это блокирует сама система. Код походу из пользовательского кольца выполняется? Так же там теперь не пропатчить SSDT, каждую секунду система проверяет контрольные суммы, и если они не совпадают - сразу бсод.
Вряд ли можно без драйвера, да и любая уважающая себя проактивка спалит перехват ядерных функций. Есть книга - "Руткиты. Внедрение в Ядро Windows", советую прочитать, там описываются некоторые примеры внедрения в ядро с примерами кода, но требуемый уровень знаний для понимания весьма высокий. Да и способы, описанные там вряд ли теперь актуальны, так как книга еще 2005 года.
Неее Драйвер на делфи не напишешь)) Примеры только на чистом Си. На счет работать не знаю, я не проверял.
подскажите пожалуйста как на indy послать запрос вот такого вида: интересует поле user вот raw-stream как должно быть: я уже как только не изъ****ся: (на картинках код и результат raw-stream из httpanalyzer'а. data - TStringList): и ещё кучу других способов...
решил сам с помощью дебагера: 1. юнит source\Indy\Indy10\Protocols\IdURI.pas 2. функция ParamsEncode(const ASrc: string): string; добавляем в UnsafeChars символ который хотим чтоб тоже конвертился. у меня получилось вот так: UnsafeChars = '*#%<> []+'; 3. сохраняем. компилируем (в той же папке IndyProtocols.dpk - открываем в Delphi, ищем кнопку Compile. у меня вот так: 4. появляется файл в той же папке IdURI.dcu. перемещаем его в lib\Indy10\ может кому-то пригодится.
как сделать чтоб CommViev на бродкоме делал ресоаризацию (взлом ВПА) делал все как по видео не хочет делать ресоаризацию. Или скинте силку на нормальный комвиер (у меня сетевой адаптер бродкомовской а по видео атхерос )
Подскажите где взять FAQ по компонентам Indy с примерами желательно на русском языке? Особенно для IdHttpProxyServer
как через випапи удалить что-либо из автозагрузки? нужен пример, у меня не выходит Code: RegOpenKey(HKEY_LOCAL_MACHINE,'software\microsoft\windows\currentversion\run',KEY); RegDeleteValue([B]???[/B]); RegCloseKey(key); получилось: Code: RegOpenKey(HKEY_LOCAL_MACHINE,'software\microsoft\windows\currentversion\run',KEY); RegDeleteValue(key, 'name'); RegCloseKey(key);
Есть картинка 100 на 100 *.bmp 8bit 1)Как определить цвет пикселя с координатами 0,0 и вывести его код(название цвета) в showmessage? 2)как закрасить 0,0 пиксель в красный цвет. через scanline Скиньте, пожалвйста кто-нибдуь простейший примерчик
Проблема в том что решил написать простенький чат..вот код: procedure TForm4.FormCreate(Sender: TObject); begin tcpclient1.connect; end; procedure TForm4.Button1Click(Sender: TObject); begin tcpclient1.Open; tcpclient1.Sendln(edit1.text) ; tcpclient1.Close; end; procedure TForm4.TcpServer1Accept(Sender: TObject; ClientSocket: TCustomIpClient); begin edit2.Text:=(clientsocket.Receiveln); end; procedure TForm4.FormDestroy(Sender: TObject); begin tcpclient1.Disconnect; end; end. точно такой же код у другого человека..с измененными айпи серверами и клиента.. Общаются они по 3000 порту..а сообщения не доходят..в чем проблема? Сервер и клиент активируются при запуске программы