Skip to content

Instantly share code, notes, and snippets.

@c3rb3ru5d3d53c
Created August 3, 2022 23:52
Show Gist options
  • Save c3rb3ru5d3d53c/f317e9b5196be475feaf277efb8f4af4 to your computer and use it in GitHub Desktop.
Save c3rb3ru5d3d53c/f317e9b5196be475feaf277efb8f4af4 to your computer and use it in GitHub Desktop.
LNK Hex Pattern for ImHex
// LNK Data Structures
// https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow
enum SHOWCOMMAND : u16 {
SW_HIDE = 0x0000,
SW_SHOWNORMAL = 0x0001,
SW_SHOWMINIMIZED = 0x0002,
SW_SHOWMAXIMIZED = 0x0003,
SW_SHOWNOACTIVATE = 0x0004,
SW_SHOW = 0x0005,
SW_MINIMIZE = 0x0006,
SW_SHOWMINNOACTIVE = 0x0007,
SW_SHOWNA = 0x0008,
SW_RESTORE = 0x009,
SW_SHOWDEFAULT = 0x000A,
SW_FORCEMINIMIZE = 0x000B
};
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa364939%28v=vs.85%29.aspx
enum DRIVETYPE : u16 {
DRIVE_UNKNOWN = 0x0000,
DRIVE_NO_ROOT_DIR = 0x0001,
DRIVE_REMOVABLE = 0x0002,
DRIVE_FIXED = 0x0003,
DRIVE_REMOTE = 0x0004,
DRIVE_CDROM = 0x0005
};
// https://msdn.microsoft.com/en-us/library/windows/desktop/gg258117%28v=vs.85%29.aspx
bitfield FileAttributes {
FILE_ATTRIBUTE_READONLY : 1;
FILE_ATTRIBUTE_HIDDEN : 1;
FILE_ATTRIBUTE_SYSTEM : 1;
FILE_ATTRIBUTE_VOLUME_LABEL : 1;
FILE_ATTRIBUTE_DIRECTORY : 1;
FILE_ATTRIBUTE_ARCHIVE : 1;
FILE_ATTRIBUTE_NORMAL : 1;
FILE_ATTRIBUTE_TEMPORARY : 1;
FILE_ATTRIBUTE_SPARSE_FILE : 1;
FILE_ATTRIBUTE_REPARSE_POINT : 1;
FILE_ATTRIBUTE_COMPRESSED : 1;
FILE_ATTRIBUTE_OFFLINE : 1;
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED : 1;
FILE_ATTRIBUTE_ENCRYPTED : 1;
FILE_ATTRIBUTE_INTEGRITY_STREAM : 1;
FILE_ATTRIBUTE_VIRTUAL : 1;
};
struct GUID {
u8 b[16];
};
struct FILETIME {
u32 dwLowDateTime;
u32 dwHighDateTime;
};
bitfield LinkFlags {
HasLinkTargetIDList : 1;
HasLinkInfo : 1;
HasName : 1;
HasRelativePath : 1;
HasWorkingDir : 1;
HasArguments : 1;
HasIconLocation : 1;
IsUnicode : 1;
ForceNoLinkInfo : 1;
HasExpString : 1;
RunInSeparateProcess : 1;
Unused1 : 1;
HasDarwinID : 1;
RunAsUser : 1;
HasExpIcon : 1;
NoPidlAlias : 1;
Unused2 : 1;
RunWithShimLayer : 1;
ForceNoLinkTrack : 1;
EnableTargetMetadata : 1;
DisableLinkPathTracking : 1;
DisableKnownFolderTracking : 1;
DisableKnownFolderAlias : 1;
AllowLinkToLink : 1;
UnaliasOnSave : 1;
PreferEnvironmentPath : 1;
KeepLocalIDListForUNCTarget : 1;
Unused : 5;
};
struct LNKHeader {
u32 HeaderSize;
GUID LinkCLSID;
LinkFlags sLinkFlags;
FileAttributes sFileAttributes;
FILETIME CreationTime;
FILETIME AccessTime;
FILETIME WriteTime;
u32 FileSize;
u32 IconIndex;
SHOWCOMMAND ShowCommand;
u16 HotKey;
u16 Reserved1;
u32 Reserved2;
u32 Reserved3;
};
LNKHeader lnkHeader @ 0x00;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment