HANDLE CreateFile( LPCTSTR lpFileName, // 指向文件名的指针 DWORD dwDesiredAccess, // 访问模式(写 / 读) DWORD 新文件将从这个文件中复制扩展属性 4、遇到的坑 HID通讯时会使用 Ptr device = CreateFile()的方式去打开HID文件,我们一般把第三个参数选择为FILE_SHARE_READ 来过滤掉鼠标键盘等一些不是我们想要的设备 我先用Ptr device = CreateFile()来遍历所有设备,然后再打开(这里调用了Ptr device = CreateFile()两次,一次遍历一次打开 ,分别放大两个函数里) 结果就是第二遍调用Ptr device = CreateFile()时报错 原因是我们已经打开了这个设备,需要释放句柄才能再次打开 所以遍历的时候,每打开一个设备,需要释放对应的句柄 CloseHandle(device); //释放打开的句柄(参数是句柄,即函数CreateFile()的返回值)
以下是查找原因的步骤: _hCommHandle = ::CreateFile( _szCommStr, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING
先通过CreateFile函数得到设备句柄,CreateFile函数原型: HANDLE CreateFile( LPCTSTR lpFileName, \\KProcessMemoryLinkName"); BOOL OpenDeviceObject(LPCTSTR DeviceFullPathData) { m_DeviceHandle = CreateFile 关于驱动设备名和符号链接名,可以参考这篇博客: http://www.cnblogs.com/findumars/p/5636505.html 接着回到CreateFile函数上来,它的第二个参数,dwDesireAceess Ring3层的CreateFile函数获取了设备句柄后,将使用DeviceIoControl函数向指定的设备驱动发送一个IO控制码,驱动程序通过这个控制码来完成特定的工作。 该函数原型如下: BOOL WINAPI DeviceIoControl( _In_ HANDLE hDevice, //CreateFile函数打开的设备句柄 _In
FILE_ANY_ACCESS) int _tmain(int argc, TCHAR *argv[]) { BOOL bRet = FALSE; HANDLE hDevice = CreateFile code : %d\n", GetLastError()); } _tsystem(_T("PAUSE")); return 0; } 这些代码非常简单,就是直接在应用层通过CreateFile 这段代码当时主要是有两个问题,第一个就是CreateFile打开时错误,并返回错误码1,乍看好像没有什么问题,其实这个问题我估计还是自己对应用层如何调用驱动层不太熟。 决定如何向I/O管理器和本层驱动程序返回值 I/O管理器会根据返回的值来决定如何给上层返回一个值,就拿CreateFile来说,这个API在调用时会经过I/O管理器生成一个IRP_MJ_CREATE
java.io.File; import java.io.IOException; /** * 创建文件 * * @author chendongj * */ public class CreateFile { public void createFile(String path) { File aFile = new File(path); try { if (aFile.exists catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { CreateFile cf = new CreateFile(); cf.createFile("E:/test.txt"); } } import java.io.File; import java.io.FileWriter createFile = new CreateFile(); createFile.createFile(path); Write2File w2f = new Write2File();
1、创建文件 可以使用createFile(Path, FileAttribute>)方法创建具有初始属性集的空文件 。 例如,如果在创建时希望文件具有特定的文件权限集,请使用该createFile方法来进行操作。如果未指定任何属性,则使用默认属性创建文件。如果文件已经存在,则createFile引发异常。 在单个原子操作中,该createFile方法检查文件是否存在,并使用指定的属性创建该文件,从而使该过程对恶意代码更加安全。 Files.createFile(file); } catch (FileAlreadyExistsException x) { System.err.format("file named %s" System.err.format("createFile error: %s%n", x); } POSIX File Permissions有一个示例,该示例createFile(Path, FileAttribute
Win32 方法 CreateFile 中选择合适的文件打开模式(CREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING, OPEN_ALWAYS, TRUNCATE_EXISTING ---- Windows API OpenFile 方法只能打开已经存在的文件,而使用 CreateFile 则可以在打开文件的同时应对不存在文件时的创建。
('钢铁侠.mp4', 1.9)) foldMarvelMovies.add(createFile('蜘蛛侠.mp4', 2.1)) foldMarvelMovies.add(createFile('金刚狼 .mp4', 2.3)) foldMarvelMovies.add(createFile('黑寡妇.mp4', 1.9)) foldMarvelMovies.add(createFile('美国队长.mp4 ('钢铁侠.mp4', 1.9)) .add(createFile('蜘蛛侠.mp4', 2.1)) .add(createFile('金刚狼.mp4', 2.3)) .add(createFile('黑寡妇.mp4', 1.9)) .add(createFile('美国队长.mp4', 1.4)), createFolder('DC英雄电影') .add(createFile('蝙蝠侠.mp4', 2.4)) .add(createFile('超人.mp4
\\HCD%d", HCNum); hHCDev = CreateFile(HCName, GENERIC_WRITE, 通过控制器名称,使用CreateFile 打开它。使用DeviceIoControl即可得到其驱动程序名,以及与它连接的HUB的名称。用CreateFile打开HUB,获得连接信息。 使用CreateFile 打开它,通过HidD_GetAttributes获得其基本属性信息。使用DeviceIoControl可以获得更详细的属性。
函数在%temp%目录下释放诱饵PDF文档Define the Internet in government institutions.pdf CreateFile函数创造诱饵PDF文档-pic11 函数将文件源数据写入%Temp%\Entelaqa32.rar(诱饵文件)中 通过CreateFile函数将文件源数据写入Entelaqa32.rar-pic73 通过ShellExecute函数将% 函数将rar文件源数据写入%Temp%\jalsa.rar(诱饵文件)中 通过CreateFile函数将rar源数据写入jalsa.rar-pic79 通过ShellExecute函数将%Temp%\ 函数将文件源数据写入%Temp%\Meeting Agenda.pdf(诱饵文件)中 通过CreateFile函数将源数据写入Meeting Agenda.pdf-pic84 通过ShellExecute 而在本次活动中,该组织则采用调用CreateFile Windows API函数的方式在自启动文件夹中创建指向自拷贝后恶意文件的快捷方式以完成持久化存在 持久化方式的演进-pic119 (5).C&C
A 设备句柄可以用API函数CreateFile获得。 它的原型为 HANDLE CreateFile( LPCTSTR lpFileName, // 文件名/设备路径 设备的名称 DWORD dwDesiredAccess, dwFlagsAndAttributes, // 文件属性及标志 HANDLE hTemplateFile // 模板文件的句柄 ); 打开:createFile 一般地,调用CreateFile获得设备句柄时,访问方式参数设置为0或GENERIC_READ|GENERIC_WRITE,共享方式参数设置为FILE_SHARE_READ|FILE_SHARE_WRITE
A 设备句柄能够用API函数CreateFile获得。 它的原型为 HANDLE CreateFile( LPCTSTR lpFileName, // 文件名称/设备路径 DWORD dwDesiredAccess 一般地,调用CreateFile获得设备句柄时,訪问方式參数设置为0或GENERIC_READ|GENERIC_WRITE,共享方式參数设置为FILE_SHARE_READ|FILE_SHARE_WRITE // results flag DWORD junk; // discard results hDevice = CreateFile 如今我们总结一下通过DeviceIoControl訪问设备驱动程序的“三步曲”:首先用CreateFile取得设备句柄,然后用DeviceIoControl与设备进行I/O,最后别忘记用CloseHandle
其中: CreateFile.java代码文件内容: ? 4.3 引用外部class文件 ? 运行会报类似如下错误 2016/10/17 17:55:50 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval CreateFile (wrong name: mypackage/CreateFile) 2016/10/17 17:55:50 WARN - jmeter.protocol.java.sampler.BeanShellSampler : org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval CreateFile (wrong name: mypackage /CreateFile) 4.4 引用外部jar文件 如下, 1、在eclipse中单独把CreateFile.java文件打包成jar文件,比如create-file.jar 2、把create-file.jar
|______ | |_______| |_______| 图一: 结构 一个程序必须首先用一个WIN32_API函数:CreateFile 3.怎样装入一个VXD 一个WIN32程序使用一个特定的形式调用WIN32_API函数:CreateFile来装入VXD.下面的代码演示了如何装入VAPCKET VXD. #include <windows.h> HANDLE hVxD; hVxD = CreateFile("\\\\. 调用CreateFile函数所返回的句柄不是一个普通的文件句柄.实际上,程序就是通过它来完成设备驱动程序所提供的功能. VPACKET VxD能被"打开"无数次,每次调用CreateFile函数将返回一个与其它各次不同的句柄.仅仅在第一次调用CreateFile函数时是真正的装入和执行此VxD,其它时刻调用CreateFile
hook样例 - CreateFile 参考资料 下面是其给出的例子。 call redirects to here _asm { // CreateFile complete - overwrite return value redirects to here _asm { // store original CreateFile return address mov eax 然后到第二次调用CreateFile的开头,我们查看一下,这时候ESP存放的返回地址是多少,实际上等下这里的值是会被修改的。 CreateFile返回到main函数的返回地址。
public class Main { public static void main(String[] args) { } @Test public void createFile01 catch (IOException e) { e.printStackTrace(); } } @Test public void createFile02 catch (IOException e) { e.printStackTrace(); } } @Test public void createFile03 catch (IOException e) { e.printStackTrace(); } } @Test public void createFile04
CreateFile函数创造诱饵PDF文档-pic11 通过WriteFile函数将PDF源数据写入创建的诱饵文档内 ? 诱饵PDF文档源数据-pic12 ? 通过CreateFile函数将rar源数据写入jalsa.rar-pic79 通过ShellExecute函数将%Temp%\jalsa.rar打开 ? FindResource函数查找资源MYDATA-pic101 通过CreateFile函数将文件源数据写入%Temp%\asala.mp3(诱饵文件)中 ? 通过CreateFile函数将文件源数据写入asala.mp3-pic102 通过ShellExecute函数将%Temp%\asala.mp3打开 ? 而在本次活动中,该组织则采用调用CreateFile Windows API函数的方式在自启动文件夹中创建指向自拷贝后恶意文件的快捷方式以完成持久化存在 ?
func main() {// 在通过 createFile 获取文件对象后,我们使用 defer 延迟调用 closeFile 来关闭该文件。 f := createFile("/tmp/defer.txt") defer closeFile(f) writeFile(f)}func createFile(p string) *os.File
打开PE文件映射: 在读取PE结构之前,首先要做的就是打开PE文件到内存,这里打开文件我们使用了CreateFile()函数该函数可以打开文件并返回文件句柄,接着使用CreateFileMapping( HANDLE OpenPeFile(LPTSTR FileName){HANDLE hFile, hMapFile, lpMapAddress = NULL;DWORD dwFileSize = 0;// CreateFile 既可以创建文件,也可以打开文件,这里则是打开文件的含义hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING 既可以创建文件,也可以打开文件,这里则是打开文件的含义hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING 既可以创建文件,也可以打开文件,这里则是打开文件的含义hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING
可以发现,此方法将传入的 FileMode 转换成了 Win32 中的值,并且最终调用了 Windows API CreateFile。 你可以阅读我的另一篇博客了解 Win32 API 中的 CreateFile: Win32 方法 CreateFile 中选择合适的文件打开模式(CREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING mitigating local elevation of privilege attack through named pipes // make sure we always call CreateFile impersonate a high privileged client security context // (note that this is the effective default on CreateFile2 = null); return ValidateFileHandle( Interop.Kernel32.CreateFile(_path, fAccess, share