Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Ошибка "Параметр задан неверно"


Автор: gud 7.5.2009, 09:13
я делаю перехват ZwOpenFile, запиываю в текстфайл имя того, что перехвачено и пытаюсь снова запустить етот перехваченный файл. 
запускаю свою прогу, запускаю notepad.exe, создается текстовый файл там пишется "....notepad.exe", а потом вылезает ошибка "... notepad.exe Прараметр задан не верно". с другими Exe тоже самое,

Помогите найти ошибку!!

Код


int WINAPI NewZwOpenFile(OUT PHANDLE  FileHandle_o,IN ACCESS_MASK  DesiredAccess_o,
                  IN POBJECT_ATTRIBUTES  ObjectAttributes_o,
                  OUT PIO_STATUS_BLOCK  IoStatusBlock_o,
                  IN ULONG  ShareAccess_o,
                  IN ULONG  OpenOptions_o)
    
{              
 WriteProcessMemory(INVALID_HANDLE_VALUE, (void*)adr_ZwOpenFile,(void*)&old_ZwOpenFile, 6, &written_o);

  PWCHAR wcsFileName = ObjectAttributes_o->pObjectName->Buffer;
  char myString [256]; 
  WideCharToMultiByte(CP_ACP, 0,wcsFileName, -1,myString, 256, NULL, NULL ) ;

  if (strstr(myString,".exe")!= NULL)
    {

    strcat(myString,"!\r\n");
    len_o = strlen(myString);
    //------------------------------------------------------------------------------------------------------------
    RtlInitUnicodeString(&fullFileName_o,L"\\??\\D:\\Example\\testfile_open.txt");
            InitializeObjectAttributes(&oa_o,&fullFileName_o,OBJ_CASE_INSENSITIVE |                                                  OBJ_KERNEL_HANDLE,NULL,NULL );
                    
    status_o = ZwCreateFile (&logo_fileHandle_o,GENERIC_WRITE | SYNCHRONIZE,&oa_o,&iostatus_temp,0, 
                                                                                            FILE_ATTRIBUTE_NORMAL,
                                  FILE_SHARE_WRITE,
                                FILE_OPEN_IF,
                                  FILE_SYNCHRONOUS_IO_NONALERT,
                                NULL,
                                  0);          

        if( NT_SUCCESS(status_o))
        {
            LARGE_INTEGER Off = {0};                  
              Off.LowPart = FILE_WRITE_TO_END_OF_FILE;
            Off.HighPart = -1;
           
                 status_o = ZwWriteFile(logo_fileHandle_o,  NULL,NULL,NULL,
                                                           &iostatus_temp,
                                                           myString, len_o,   
                                                           &Off, NULL);

              ZwClose(logo_fileHandle_o);        
        }

         
                }
         status_o = ZwOpenFile(FileHandle_o,DesiredAccess_o,ObjectAttributes_o,IoStatusBlock_o,
                                                                                                       ShareAccess_o,
                                                                                                       OpenOptions_o);

                  WriteProcessMemory(INVALID_HANDLE_VALUE, (void*)adr_ZwOpenFile,(void*)&jump_ZwOpenFile,           
                                                                                                                                            6,&written_o);

 return 0;    
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)