文件操作
前言
前段时间遇到了一些对文件操作的题目,因此这里介绍一下常见的文件操作API函数(不是大全,只是本人遇到的)
CreatFileA
HANDLE CreateFileA( |
这个以一个例子来讲解这个函数
CreateFileA("C:\\nk.ctf", 0x80000000, 1u, 0, 3u, 0x80u, 0) |
参数1:文件路径名,字符串类型,指定创建的文件名和路径
参数2:文件访问控制标志,指定文件的访问权限和共享方式,0x80000000表示以独占方式打开文件
参数3:文件创建标志,指定文件的创建方式和属性,1u表示创建一个新文件
参数4:文件句柄模板,指定一个已经打开的文件句柄,0表示不使用模板句柄
参数5:文件操作方式,指定文件的读写方式,3u表示以可读可写方式打开文件
参数6:文件属性标志,指定文件的属性,0x80u表示将文件设置为临时文件
参数7:文件的扩展属性,指定文件的扩展属性,0表示不设置扩展属性。
需要注意的是,这个函数是创建或者打开一个文件,也就是说如果这个文件不存在的话才会创建这个文件,因此我们可以手动创建这个文件,然后让这个函数执行打开这个文件的命令。
ReadFile
|
ReadFile(hObject, &Buffer, 1u, &NumberOfBytesRead, 0) |
hObject:文件句柄,指向要读取的文件。
Buffer:缓冲区,用于存储从文件中读取的数据。
1u:要读取的字节数。
NumberOfBytesRead:实际读取的字节数,由函数返回。
0:用于控制文件指针的偏移量,0表示从文件的当前位置开始读取。
CloseHandle
CloseHandle()函数的作用是关闭一个打开的句柄对象。它会释放句柄对象所占用的系统资源,因此在使用完句柄对象后应该调用该函数来关闭它。如果不关闭句柄对象,可能会导致资源泄漏或其他问题。该函数通常用于Windows编程中的文件、进程、线程等对象的操作。
LiadLibraryW
这个函数的作用是加载一个动态链接库(DLL)文件,并返回一个句柄(hModule)。这个句柄可以用于后续的函数调用,比如GetProcAddress()函数来获取动态链接库中的函数地址。LoadLibraryW()函数的参数是一个Unicode字符串,表示要加载的DLL文件的文件名。如果加载成功,返回的句柄非空;如果加载失败,返回NULL。
hModule=LoadLibraryW(L"Dll2.dll") |
GetProcAddress
|
v10=GetProcAddress(hModule, "flag") |
FreeLibrary
FreeLibrary函数的作用是释放一个动态链接库(DLL)的句柄,使该DLL从当前进程中卸载。在调用LoadLibrary函数加载一个DLL后,必须调用FreeLibrary函数释放该DLL的句柄,否则该DLL将一直驻留在内存中,直到进程结束。
fopen
FILE *fopen(const char *Filename, const char *Mode); |
fopen(Filename, "rb") |
fgetc
int fgetc(FILE *stream); |
fgetc(File)
fputc
|
fputc(*(v11 + 4 * i) ^ v8, v6)
fclose
fclose(File)函数的作用是关闭文件。如果文件已打开,则该函数将文件缓冲区中的任何剩余数据刷新到磁盘,并释放该文件占用的任何系统资源。关闭文件后,不能再读取或写入该文件,除非再次打开。该函数的语法如下: |





