Ả v y tài nguyên có c b g c và b riêng nên

This preview shows page 10 - 11 out of 18 pages.

C:\SANDBOX\1001\C_\Autorun.inf, v y tài nguyên có c b g c và b riêng nên nó đang tr ng thái "file on disk (private)" nh hình bên trên. ư Tr c tiên ta có szPath ch a tên file ướ C:\autorun.inf , ta g i hàm TruncateFilePath() đ đ m b o szPath th c s C:\autorun.inf (trong m t s tr ng h p ch a rõ thì ườ ư sandbox ko đ m b o đ trong su t v i ti n trình, nên ti n trình g i tr c ti p file ế ế ế C:\SANDBOX\1001\C_\autorun.inf luôn – file mà l ra nó ko h bi t). SzPathRedirect ế s ch a C:\SANDBOX\1001\C_\autorun.inf là đ ng d n c a tài nguyên riêng, đ c ườ ượ l y thông qua hàm RedirectFilePath(). Các bi n bFileIn, bFileOut, bDeletedIn dùng đ ch tr ng thái t n t i c a file, và đ c ế ượ xác đ nh qua các hàm ki m tra IsFileExist(), TestHashbit(). Chú ý r ng đ ki m tra file t n t i trong b riêng hay ko ta ch c n xem file C:\SANDBOX\1001\C_\Autorrun.inf có t n t i hay ko, còn mu n xem nó có t ng b xóa hay không thì b t bu c ta ph i l u ư v t các filepath đã t ng b xóa trong m t b ng hash đ tra c u sau này qua hàm ế TestHashbit(). đây có thêm m t bi n bParentIn, nh tên g i ch vi c th m c cha c a file đó có ế ư ư t n t i hay không. Theo mô hình ta đ a ra thì không có tr ng thái nào c n đ n bi n ư ế ế này, nh ng đ i v i tài nguyên file có m t đi u đ c bi t là: khi m t file ko t n t i, ư NtCreateFile s tr v NAME_NOT_FOUND n u th m c cha c a nó có t n t i, ế ư ho c tr v PATH_NOT_FOUND n u th m c cha không t n t i, th t là r c r i. ế ư Bây gi ta phân tích các tr ng h p x lý: ườ TH1: tài nguyên có t n t i trong b riêng thì ph i luôn chuy n h ng tác đ ng vào b ướ riêng if (bFileIn || bDeletedIn || (bParentIn && !bFileOut)) { CREATE_IN_SANDBOX: // N u file có bên trong th m c SB ho c đã b xóa trong sandbox, ho c trong sandbox ế ư // có th m c cha còn ngoài sandbox ko có th m c cha thì chuy n h ng x lý vào sandbox ư ư ướ // (b i vì tr ng h p này status tr v chu n ph i là INVALID_NAME, not ườ INVALID_PATH) RtlInitUnicodeString(&usRedirect, szPathRedirect); InitializeObjectAttributes(&oaRedirect, &usRedirect, ObjectAttributes->Attributes , NULL, ObjectAttributes->SecurityDescriptor); oaRedirect.SecurityQualityOfService = ObjectAttributes->SecurityQualityOfService; ntStatus = OldNtOpenFile(FileHandle, DesiredAccess, ObjectAttributes, IoStatusBlock, ShareAccess | FILE_SHARE_READ, CreateOptions & ~FILE_DELETE_ON_CLOSE); if (NT_SUCCESS(ntStatus)) { oaRedirect.Attributes |= OBJ_KERNEL_HANDLE;
Image of page 10

Subscribe to view the full document.

Image of page 11
  • Fall '19

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern