I am attempting to understand the PE File Format and I have come across an unexpected value in the IMAGE_THUNK_DATA Array.
Here are the file details:
MD5: d82d3e003eb5c728d584e22ce7f36fbf
File Name: ChromeSetup.exe
Link: hxxps://www[.]google[.]com/chrome/thank-you.html?platform=win64&statcb=1&installdataindex=empty&defaultbrowser=0
(After some testing, I found out that the hash changes but the issue is the same.)
The issue I'm facing is that in one of the DLLs that is present, the IMAGE_THUNK_DATA structure contains an additional DWORD that is out-of-bounds. Here's the attached screenshot:
:
That first block i.e. (48fe 0100), resolves perfectly to "SHGetFolderPathW". But that second block (a8020080) is out of bounds - adjusting for endian format, we get 0x800002a8 - but the file itself is present up till 0x14DE2A (verified via 010 Editor and xxd). The third block signifies the end of the IMAGE_THUNK_DATA array so no issues there.
I've checked using 010 Editor and it shows "SHGetFolderPathW" as the only function imported from SHELL32.dll. I'd greatly appreciate some help understanding why that second block is present if no function name resolves to that address, which is out-of-bounds by itself?