[تمرين] الكل يسأل و الكل يجيب
#47
السلام عليكم

هدا سورس كود لعمل Load & Unload لـ دريفر من اليوزر مود :

PHP كود :
{$OPTIMIZATION ON}
{
$WARNINGS OFF}
{
$HINTS OFF}

uses
  Winsvc
;

procedure CallDriver(sysName: string);
var
  
hSCManager, hService, hDevice: Hwnd;
  
dwBytesReturned: DWORD;
  
lpTemp: PChar;

begin
  hSCManager 
:= OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE);
  if 
hSCManager <> 0 then
  begin
    hService 
:= CreateService(hSCManager, 'Sample',
      
'For Practise !!!',
      
SERVICE_START or SERVICE_STOP or _DELETE,
      
SERVICE_KERNEL_DRIVER,
      
SERVICE_DEMAND_START,
      
SERVICE_ERROR_IGNORE,
      
PChar(sysName),
      
nil, nil, nil, nil, nil);

    if 
hService <> 0 then
    begin
      StartService
(hService, 0, lpTemp);
      
DeleteService(hService);
      
CloseServiceHandle(hService);
    
end else
    
begin
      ShowMessage
('Can''t Create Service .');
    
end;
    
CloseServiceHandle(hSCManager);
  
end else
  
begin
    ShowMessage
('Can''t connect to Service Control Manager Data Base .');
  
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with OpenD 
do
  
begin
    Execute
;
    if 
FileName = '' then Exit;
    
CallDriver(FileName);
  
end;
end; 

أصل الكود بلغة c/c++ :

PHP كود :
int _cdecl main(void)
{
    
HANDLE hSCManager;
    
HANDLE hService;
    
SERVICE_STATUS ss;

    
hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);
   
    
printf("Load Driver\n");
    if(
hSCManager)
    {
        
printf("Create Service\n");
        
hService = CreateService(hSCManager, "Example", 
                                 
"Example Driver", 
                                  
SERVICE_START | DELETE | SERVICE_STOP, 
                                  
SERVICE_KERNEL_DRIVER,
                                  
SERVICE_DEMAND_START, 
                                  
SERVICE_ERROR_IGNORE, 
                                  
"C:\\example.sys", 
                                  
NULL, NULL, NULL, NULL, NULL);
        if(!
hService)
        {
            
hService = OpenService(hSCManager, "Example", 
                       
SERVICE_START | DELETE | SERVICE_STOP);
        }

        if(
hService)
        {
            
printf("Start Service\n");

            
StartService(hService, 0, NULL);
            
printf("Press Enter to close service\r\n");
            
getchar();
            
ControlService(hService, SERVICE_CONTROL_STOP, &ss);
            
DeleteService(hService);
            
CloseServiceHandle(hService);
       
        }
        
CloseServiceHandle(hSCManager);
    }
 
    return 
0;
} 

الأن ممكن رسم توضيحي لهندسة الكيرنل المعتمدة من طرف الـ wIndows :

http://technet.microsoft.com/en-us/libra...et.10).gif

كما نلاحظ الطريقة المعتمدة لا نحتاج فيها إلى تسجيل الدريفر في الريجيسترى بل
مباشرة و بكل سهولة .
I'M Fly Like A G6

الرد


الردود في هذا الموضوع
[تمرين] الكل يسأل و الكل يجيب - بواسطة Goblin - 05-08-2009, 07:48 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة mohfa - 05-08-2009, 08:24 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة mohfa - 06-08-2009, 09:21 AM
[تمرين] الكل يسأل و الكل يجيب - بواسطة mohfa - 06-08-2009, 11:22 AM
[تمرين] الكل يسأل و الكل يجيب - بواسطة mohfa - 06-08-2009, 11:56 AM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 08-08-2009, 12:05 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 09-08-2009, 12:19 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 10-08-2009, 12:25 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة o15s19 - 11-08-2009, 08:00 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 27-08-2009, 03:50 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 27-08-2009, 04:37 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 27-08-2009, 05:00 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 27-08-2009, 05:29 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 27-08-2009, 05:40 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 27-08-2009, 06:10 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 27-08-2009, 06:36 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 28-08-2009, 02:57 AM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 28-08-2009, 02:59 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة MjIrIm - 06-09-2009, 10:37 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة MjIrIm - 07-09-2009, 02:01 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 23-12-2009, 03:45 PM
[تمرين] الكل يسأل و الكل يجيب - بواسطة TF6M - 23-12-2009, 04:01 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم