Cracking part 17

Chia sẻ: Dqwdasdasd Qwdasdasdasd | Ngày: | Loại File: PDF | Số trang:6

0
47
lượt xem
5
download

Cracking part 17

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ
Lưu

Nội dung Text: Cracking part 17

  1. LPDWORD lpMaximumComponentLength,___// address of system's maximum filename length LPDWORD lpFileSystemFlags,____________// address of file system flags LPTSTR lpFileSystemNameBuffer,_________// address of name of file system DWORD nFileSystemNameSize __________// length of lpFileSystemNameBuffer ); Returns Nếu tất cả thông tin yêu cầu được tìm thấy, giá trị trả về là TRUE, ngược lại giá trị trả về là FALSE. Để có thông tin về lỗi, chúng ta dùng lệnh GetLastError 03.4 File Accesses =========== _lread Hàm _lread có nhiệm vụ đọc dữ liệu từ specified file. Hàm này tương thích với phiên bản 16-bit của Window. Còn đối với Win32 thì chúng ta nên dùng hàm ReadFile Code: UINT _lread( HFILE hFile, // handle of file LPVOID lpBuffer, // address of buffer for read data UINT uBytes // length, in bytes, of data buffer ); Returns Giá trị trả về cho biết số byte đã đọc được từ file. Nếu số byte nhỏ hơn nhỏ hơn uBytes, function reach đoạn cuối của file trước khi đọc số byte xác định _lwrite Hàm _lwrite có nhiệm vụ viết dữ liệu vào specified file. Hàm này tương thích với phiên bản 16-bit của Window. Còn đối với Win32 thì chúng ta nên dùng hàm WriteFile Code: UINT _lwrite( HFILE hFile, // handle of file LPCSTR lpBuffer, // address of buffer for data to be written UINT uBytes // number of bytes to write ); Returns Nếu function hoàn thành , giá trị trả về cho biết số byte đã viết được vào file. Nếu function không hoàn thành , giá trị trả về là HFILE_ERROR. Để có thông tin về lỗi, chúng ta sử dụng hàm GetLastError. CreateFileA / CreateFileW
  2. Hàm CreateFile có nhiệm vụ tạo ra, mở, hoặc truncate file, pipe(đường dẫn), communication resource, disk device hoặc console. Nó return handle mà có thể được dùng để truy cập đối tượng. Nó cũng có thể mở và return handle to directory Code: HANDLE CreateFile( LPCTSTR lpFileName, // address of name of the file DWORD dwDesiredAccess, // access (read-write) mode DWORD dwShareMode, // share mode LPSECURITY_ATTRIBUTES lpSecurityAttributes, // address of security descriptor DWORD dwCreationDistribution, // how to create DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile // handle of file with attributes to copy ); Returns Nếu function hoàn thành, giá trị trả về là open handle của specified file. Nếu specified file không tồn tại trước khi function gọi và dwCreationDistribution là CREATE_ALWAYS hoặc OPEN_ALWAYS, lệnh gọi GetLastError trở về ERROR_ALREADY_EXISTS (ngay cả khi function đã hoàn thành). Còn nếu file tồn tại trước khi gọi, GetLastError trả về 0 Nếu function không hoàn thành , giá trị trả về là INVALID_HANDLE_VALUE. Để có thông tin về lỗi, chúng ta dùng lệnh GetLastError GetPrivateProfileIntA / GetPrivateProfileIntW Hàm GetPrivateProfileIntA có nhiệm vụ tìm integer associated với key trong section chỉ định của flie khởi tạo đã quy định. Hàm này tương thích với phiên bản 16-bit của Window. Còn đối với Win32 thì nên “cất” thông tin khởi tạo vào trong registry Code: UINT GetPrivateProfileInt( LPCTSTR lpAppName, // address of section name LPCTSTR lpKeyName, // address of key name INT nDefault, // return value if key name is not found LPCTSTR lpFileName // address of initialization filename ); Returns Nếu function hoàn thành , giá trị trả về là số tương đương của chuỗi phía sau tên key chỉ định trong file khởi tạo đã quy định. Nếu không tìm thấy key, giá trị trả về là giá trị mặc định. Nếu giá trị của key nhỏ hơn 0, giá trị trả về là 0. GetPrivateProfileStringA / GetPrivateProfileStringW Hàm GetPrivateProfileString có nhiệm vụ tìm string từ section đã chỉ định trong file khởi
  3. tạo. Hàm này tương thích với phiên bản 16-bit Window. Còn đối với Win32 thì nên “cất” thông tin khởi tạo vào trong Registry Code: DWORD GetPrivateProfileString( LPCTSTR lpAppName, // points to section name LPCTSTR lpKeyName, // points to key name LPCTSTR lpDefault, // points to default string LPTSTR lpReturnedString, // points to destination buffer DWORD nSize, // size of destination buffer LPCTSTR lpFileName // points to initialization filename ); Returns Nếu function hoàn thành , giá trị trả về là số kí tự được copy vào buffer, không tính kí tự null. Nếu cả IpAppName và IpKeyName đều là NULL và supplied destination quá nhỏ để chứa yêu cầu của string, chuỗi sẽ được bỏ bớt đi và theo sau là kí tự null, và giá trị trả về là nSize-1 Nếu IpAppName hoặc IpKeyName là NULL và supplied destination quá nhỏ để chứa toàn bộ string, string cuối cùng sẽ được “cắt ra” và theo sau là 2 kí tự null. Trong trường hợp này thì giá trị trả về nSize-2 ReadFileA Hàm ReadFile có nhiệm vụ đọc dữ liệu từ file, bắt đầu tại vị trí được cho biết bởi file pointer. Sau khi đọc xong, file pointer sửa lại cho đúng bằng số byte đã được đọc, trừ khi file handle được tạo với thuộc tính overlapped (chồng lên). Nếu file handle được tạo để overlapped input (cho vào) và output (lấy ra) (I / O) , sau khi đọc xong application phải chỉnh lại cho đúng vị trí của file pointer. Code: BOOL ReadFile( HANDLE hFile, // handle of file to read LPVOID lpBuffer, // address of buffer that receives data DWORD nNumberOfBytesToRead, // number of bytes to read LPDWORD lpNumberOfBytesRead, // address of number of bytes read LPOVERLAPPED lpOverlapped // address of structure for data ); Returns Nếu function hoàn thành , giá trị trả về là TRUE. Nếu giá trị trả về là TRUE và số byte được đọc là 0 thì file pointer ở xa điểm cuối của file tại thời điểm xảy ra quá trình đọc Nếu function không hoàn thành , giá trị trả về là FALSE. Để có thông tin về lỗi, chúng ta dùng hàm GetLastError.
  4. ReadFileEx Hàm ReadFileEx có nhiệm vụ đọc dữ liệu từ file không đồng bộ. Nó chỉ được design cho quá trình không đồng bộ, khác với hàm ReadFile được design cho cả 2 quá trình đồng bộ và không đồng bộ. ReadFileEx để cho “quá trình gán” gán vào processing khác suốt quá trình đọc Hàm ReadFileEx “báo cáo” tình trạng không đồng bộ của nó, gọi completion routine chỉ định khi quá trình đọc hoàn thành và lệnh gọi thread là alertable wait state Code: BOOL ReadFileEx( HANDLE hFile, // handle of file to read LPVOID lpBuffer, // address of buffer DWORD nNumberOfBytesToRead, // number of bytes to read LPOVERLAPPED lpOverlapped, // address of offset LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // address of completion routine ); Returns Nếu function hoàn thành , giá trị trả về là TRUE Nếu function không hoàn thành , giá trị trả về là FALSE. Để có thông tin về lỗi, chúng ta dùng hàm GetLastError. Nếu function hoàn thành , calling thread có quá trình I/O không đồng bộ trong khoảng thời gian : overlapped đọc thao tác từ file. Khi quá trình I/O này kết thúc, và lệnh gọi thread bị khóa trong alertable wait state, hệ thống gọi hàm IpCompletionRoutine, và alertable wait state hoàn thành với đoạn code trở lại WAIT_IO_COMPLETION. Nếu function hoàn thành , và quá trình đọc file hoàn thành, nhưng lệnh gọi thread không có trong alertable wait state, hệ thống queue lệnh call completion thông thường, típ tục lệnh call cho đến khi lệnh gọi thread “gia nhập” alertable wait state. Để biết thông tin về alertable wait và overlapped input / output, các bác hãy đọc Synchronization and Overlapped Input and Output. Nếu hàm ReadFileEx cố gắng đọc qua đoạn cuối của file, giá trị trả về là FALSE, và GetLastError trở về ERROR_HANDLE_EOF. SetFilePointer Hàm SetFilePointer có nhiệm vụ di chuyển pointer của open file Code: DWORD SetFilePointer( HANDLE hFile, // handle of file LONG lDistanceToMove, // number of bytes to move file pointer PLONG lpDistanceToMoveHigh, // address of high-order word of dist. to move DWORD dwMoveMethod // how to move );
  5. Returns Nếu function hoàn thành , giá trị trả về là low-order doubleword của new file pointer, và nếu IpDistanceToMoveHigh không phải là NULL, function đặt high-order doubleword của new file pointer vào trong LONG pointer bằng các thông số đó WriteFile Hàm WriteFile có nhiệm vụ viết dữ liệu vào file và được design cho cả 2 quá trình đồng bộ và không đồng bộ. Hàm này bắt đầu viết dữ liệu vào file tại vị trí được cho biết bởi file pointer. Sau khi viết xong, file pointer sửa lại cho đúng bằng số byte đã được viết, trừ khi file được mở với FILE_FLAG_OVERLAPPED. ). Nếu file handle được tạo để overlapped input (cho vào) và output (lấy ra) (I / O) , sau khi viết xong application phải chỉnh lại cho đúng vị trí của file pointer. Code: BOOL WriteFile( HANDLE hFile, // handle of file to write to LPCVOID lpBuffer, // address of data to write to file DWORD nNumberOfBytesToWrite, // number of bytes to write LPDWORD lpNumberOfBytesWritten, // address of number of bytes written LPOVERLAPPED lpOverlapped // addr. of structure needed for overlapped I/O ); Returns Nếu function hoàn thành , giá trị trả về là TRUE. Nếu function không hoàn thành , giá trị trả về là FALSE. Để có thêm thông tin về lỗi, chúng ta dùng hàm GetLastError. WriteFileEx Hàm WriteFileEx có nhiệm vụ viết dữ liệu vào file. Nó chỉ được design cho quá trình không đồng bộ, khác với hàm WriteFile được design cho cả 2 quá trình đồng bộ và không đồng bộ. Hàm WriteFileEx “báo cáo” tình trạng không đồng bộ của nó, gọi completion routine chỉ định khi quá trình viết hoàn thành và lệnh gọi thread là alertable wait state Code: BOOL WriteFileEx( HANDLE hFile; // handle to output file LPCVOID lpBuffer; // pointer to input buffer DWORD nNumberOfBytesToWrite; // number of bytes to write LPOVERLAPPED lpOverlapped; // pointer to async. i/o data LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine; // ptr. to completion routine );
  6.  
Đồng bộ tài khoản