Skip to content

Conversation

@patstew
Copy link
Contributor

@patstew patstew commented Jun 27, 2025

Fixes #163

This uses the undocumented "BaseGetNamedObjectDirectory" function in kernel32.dll to get the right path. In normal use this gives the same \Sessions\1\BaseNamedObjects\llfio_* path.

For what it's worth, here's a working trace to compare to the one in #163.

NtCreateFile(FileHandle=0xcf171fe7e8 [0x4c4], DesiredAccess=0x00100000, ObjectAttributes="\??\C:\Users\user\AppData\Local\pythonwrapper\captures", IoStatusBlock=0xcf171fe790 [0/1], AllocationSize=null, FileAttributes=0, ShareAccess=7, CreateDisposition=1, CreateOptions=0x20, EaBuffer=null, EaLength=0) => 0
NtCreateFile(FileHandle=0xcf171fed58 [0x324], DesiredAccess=0xc0110000, ObjectAttributes=0x4c4:"95883e82d76aa3596643d9b33d5e37286ba5406b5a79b822b5cb600987ab19cd.random", IoStatusBlock=0xcf171fed40 [0/2], AllocationSize=0xcf171fed38 [0], FileAttributes=0x100, ShareAccess=7, CreateDisposition=2, CreateOptions=0x1060, EaBuffer=null, EaLength=0) => 0
NtFsControlFile(FileHandle=0x324, Event=0, UserApcRoutine=null, UserApcContext=null, UserIoStatus=0xcf171fe410 [0/0], FsControlCode=0x000900c4, InputBuffer=0xcf171fedb0, InputBufferLength=1, OutputBuffer=null, OutputBufferLength=0) => 0
NtSetInformationFile(FileHandle=0x324, IoStatusBlock=0xcf171ff010 [0/0], FileInformation=0xcf171ff058, Length=8, FileInformationClass=0x14 [FileEndOfFileInformation]) => 0
NtQueryInformationFile(FileHandle=0x324, IoStatusBlock=0xcf171feee0 [0/0x18], FileInformation=0xcf171fef20, Length=0x18, FileInformationClass=5 [FileStandardInformation]) => 0
NtQueryObject(ObjectHandle=0xe8, ObjectInformationClass=1 [ObjectNameInformation], ObjectInformation=0xcf171fec48, Length=0xd0, ReturnLength=null) => 0
NtQueryInformationFile(FileHandle=0x324, IoStatusBlock=0xcf171fece0 [0/0x48], FileInformation=0xcf171dec70, Length=0x00010002, FileInformationClass=0x44 [FileStatInformation]) => 0
NtQueryInformationFile(FileHandle=0x324, IoStatusBlock=0xcf171fece0 [0/0x18], FileInformation=0xcf171dec70, Length=0x00010002, FileInformationClass=0x3b [FileIdInformation]) => 0
NtOpenSection(SectionHandle=0xcf171fef18, DesiredAccess=0x000f001f, ObjectAttributes="\BaseNamedObjects\llfio_wd481f2baa8f2ba98edf4030000000400") => 0xc0000034 [2 'The system cannot find the file specified.']
NtCreateSection(SectionHandle=0xcf171fef18 [0x4cc], DesiredAccess=0x000f001f, ObjectAttributes="\BaseNamedObjects\llfio_wd481f2baa8f2ba98edf4030000000400", SectionSize=null, Protect=4, Attributes=0x08000000, FileHandle=0x324) => 0
NtQuerySection(SectionHandle=0x4cc, SectionInformationClass=0 [SectionBasicInformation], SectionInformation=0xcf171fecd0, Length=0x18, ReturnLength=null) => 0

Seemingly it uses just \BaseNamedObjects\ when running inside the Jenkins service.

@patstew patstew force-pushed the fix_basenamedobjects_dir branch from c45b4ee to abdf56b Compare June 27, 2025 15:58
@ned14 ned14 merged commit 4c551b7 into ned14:develop Jul 9, 2025
25 of 26 checks passed
@ned14
Copy link
Owner

ned14 commented Jul 9, 2025

Thanks very much for this. That whole area of Windows is not an easy one to catch all the corners cases within.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

LLFIO can't map files when running under Jenkins on Windows

2 participants