1. Trang chủ
  2. » Công Nghệ Thông Tin

Cracker Handbook 1.0 part 28 pdf

6 229 3
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 85,73 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

to move DWORD dwMoveMethod // how to move ; 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à NU

Trang 1

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

);

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

Trang 2

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

);

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

Nếu hàm WriteFileEx hoàn thành , calling thread có quá trình I/O không đồng bộ trong khoảng thời gian : overlapped viết thao tác vào 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à sự chờ đợi 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 viết dữ liệu vào file hoàn thành, nhưng lệnh call thread không nằm trong alertable wait state, hệ thống queue lệnh call

*IpCompletion, típ tục lệnh call cho đến khi lệnh gọi thread “gia nhập” alertable wait state Đọc Synchronization để biết thêm thông tin về alertable wait state và quá trình overlapped input / output

Trang 3

WritePrivateProfileStringA / WritePrivateProfileStringW

Code:

BOOL WritePrivateProfileString(

LPCTSTR lpszSection, // address of section name

LPCTSTR lpszKey, // address of key name

LPCTSTR lpszString, // address of string to add

LPCTSTR lpszFile // address of initialization filename

);

Returns

Nếu function copy string vào file khởi tạo thành công, giá trị trả về là TRUE Nếu function không hoàn thành , hoặc nếu nó flush cached version của hầu hết file khởi tạo truy cập gần đây, giá trị trả về là FALSE Để có thông tin về lỗi, chúng ta dùng hàm GetLastError

03.5 Registry Accesses

==============

RegCreateKeyA / RegCreateKeyW

Hàm RegCreateKey có nhiệm vụ tạo specified key Nếu key đã có trong registry, hàm này sẽ mở nó Hàm này tương thích với Windows 3.1 Đối với Win32 chúng

ta nên sử dụng hàm RegCreateKeyEx

Code:

LONG RegCreateKey(

HKEY hKey, // handle of an open key

LPCTSTR lpszSubKey, // address of name of subkey to open PHKEY phkResult // address of buffer for opened handle

);

Returns

Nếu function hoàn thành , giá trị trả về là ERROR_SUCCESS

Nếu function không hoàn thành , giá trị trả về là 1 giá trị lỗi

RegCreateKeyExA / RegCreateKeyExW

Hàm RegCreateKeyEx có nhiệm vụ tạo specified key Nếu key đã có trong

registry, hàm này sẽ mở nó

Code:

LONG RegCreateKeyEx(

HKEY hKey, // handle of an open key

LPCTSTR lpszSubKey, // address of subkey name

Trang 4

DWORD dwReserved, // reserved

LPTSTR lpszClass, // address of class string

DWORD fdwOptions, // special options flag

REGSAM samDesired, // desired security access

LPSECURITY_ATTRIBUTES lpSecurityAttributes, // address of key security structure

PHKEY phkResult, // address of buffer for opened handle LPDWORD lpdwDisposition // address of disposition value buffer );

Returns

Nếu function hoàn thành , giá trị trả về là ERROR_SUCCESS

Nếu function không hoàn thành , giá trị trả về là 1 giá trị lỗi

RegDeleteKeyA / RegDeleteKeyW

Hàm RegDeleteKey có nhiệm vụ xóa key và tất cả các key khác nằm trong nó Code:

LONG RegDeleteKey(

HKEY hKey, // handle of open key

LPCTSTR lpszSubKey // address of name of subkey to delete );

Returns

Nếu function hoàn thành , giá trị trả về là ERROR_SUCCESS

Nếu function không hoàn thành , giá trị trả về là 1 giá trị lỗi

RegDeleteValueA / RegDeleteValueW

Hàm RegDeleteValue có nhiệm vụ di chuyển named value từ specified registry key Code:

LONG RegDeleteValue(

HKEY hKey, // handle of key

LPTSTR lpszValue // address of value name

);

Returns

Nếu function hoàn thành , giá trị trả về là ERROR_SUCCESS

Nếu function không hoàn thành , giá trị trả về là 1 giá trị lỗi

RegOpenKeyA / RegOpenKeyW

Hàm RegOpenKey có nhiệm vụ mở specified key Hàm này tương thích với

Windows 3.1 Đối với Win32 chúng ta nên dùng hàm RegOpenKeyEx

Trang 5

Code:

LONG RegOpenKey(

HKEY hKey, // handle of open key

LPCTSTR lpszSubKey, // address of name of subkey to open PHKEY phkResult // address of handle of open key

);

Returns

Nếu function hoàn thành , giá trị trả về là ERROR_SUCCESS

Nếu function không hoàn thành , giá trị trả về là 1 giá trị lỗi

RegOpenKeyExA / RegOpenKeyExW

Hàm RegOpenKeyEx có nhiệm vụ mở specified key

Code:

LONG RegOpenKeyEx(

HKEY hKey, // handle of open key

LPCTSTR lpszSubKey, // address of name of subkey to open DWORD dwReserved, // reserved

REGSAM samDesired, // security access mask

PHKEY phkResult // address of handle of open key

);

Returns

Nếu function hoàn thành , giá trị trả về là ERROR_SUCCESS

Nếu function không hoàn thành , giá trị trả về là 1 giá trị lỗi

RegQueryValueA / RegQueryValueW

Hàm RegQueryValue có nhiệm vụ tìm giá trị kết hợp với giá trị không tên cho specified key trong registry Những giá trị trong registry có tên, type (loại) và thành phần dữ liệu Hàm này tìm dữ liệu cho giá trị đầu tiên của key có NULL name Hàm này tương thích với Windows 3.1 Còn đối với Win32 thì chúng ta nên dùng hàm RegQueryValueEx

Code:

LONG RegQueryValue(

HKEY hKey, // handle of key to query

LPCTSTR lpszSubKey, // address of name of subkey to query LPTSTR lpszValue, // address of buffer for ret string

PLONG pcbValue // address of buffer for size of ret string

);

Trang 6

Returns

Nếu function hoàn thành , giá trị trả về là ERROR_SUCCESS

Nếu function không hoàn thành , giá trị trả về là 1 giá trị lỗi

RegQueryValueExA / RegQueryValueExW

Hàm RegQueryValueEx có nhiệm vụ tìm loại và dữ liệu cho giá trị có tên đã được xác định kết hợp với việc mở registry key

Ngày đăng: 03/07/2014, 17:20

TỪ KHÓA LIÊN QUAN