问题描述
我尝试使用内核驱动程序创建“ txt”文件。 使用“ OSRLOADER”成功创建了文件,但是当我尝试使用CreateService API将驱动程序作为服务加载时,找不到文件
出什么问题了?
创建服务的程序:
int main() {
SC_HANDLE schManager;
SC_HANDLE schService;
SC_HANDLE schopen;
schManager = OpenSCManagerA(0,SC_MANAGER_ALL_ACCESS);
if (!schManager) {
printf("Open SCM fails.\nError_Code: %d",GetLastError());
return -1;
}
printf("Open SCM Successfully.......\n");
schService = CreateServiceA(
schManager,"file",SERVICE_ALL_ACCESS,SERVICE_KERNEL_DRIVER,SERVICE_DEMAND_START,SERVICE_ERROR_norMAL,"C:\\Users\\abc\\Desktop\\CreateFile.sys",0
);
if (!schService) {
printf("\nService fails.\nError_Code: %d",GetLastError());
return -1;
}
printf("Service Created Successfully.......\n");
schopen = OpenServiceA(schManager,SERVICE_ALL_ACCESS);
if (!schopen) {
printf("\nService fails to open.\nError_Code: %d",GetLastError());
return -1;
}
printf("Service Opened Successfully.......\n");
StartServiceA(schService,0);
CloseHandle(schManager);
CloseHandle(schService);
CloseHandle(schopen);
return 0;}
............................................... .....................
驾驶员:
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath) {
OBJECT_ATTRIBUTES objattr;
UNICODE_STRING filename = RTL_CONSTANT_STRING(L"\\??\\c:\\test.txt");
NTSTATUS status;
HANDLE filehandle;
IO_STATUS_BLOCK ioStatusBlock = { 0 };
//Initialize an object for creating files ==> It will be used in ZwCreateFile()
InitializeObjectAttributes(&objattr,&filename,OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,NULL,NULL);
status = ZwCreateFile(
&filehandle,GENERIC_READ | GENERIC_WRITE,&objattr,&ioStatusBlock,FILE_ATTRIBUTE_norMAL,FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,FILE_OVERWRITE_IF,FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_ALERT,0
);
if (!status) {
DbgPrint("Error While Creating file.......");
}
ZwClose(filehandle);
return STATUS_SUCCESS;}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)