careca

Overlay Text

8 posts in this topic

Hello ppl, i've been playing with overlays but im having problems with keeping my window over some games, the objective is to display a bit of text with information about volume, when i change it, some applications have overlays that work well, like mumble, but mumble is permanent, and im looking for something that only shows at will.

Having $WS_EX_TOPMOST as a parameter doesn't make any difference, along with WinSetOnTop, running out of ideas.

BTW: This isn't considered interaction, is it?

Best regards.


Spoiler

Paster - Main function is to paste text, but has more functions.

OpenW - Open With... alternative, Open any file with any application, set it's icon, set application as default.

Renamer - Rename files and folders, remove portions of text from the filename etc.

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Firefox Profile Backup - Backup/restore previously saved profile.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

 

Share this post


Link to post
Share on other sites



4 minutes ago, careca said:

im having problems with keeping my window over some games

I am not sure if its OK to discuss anything related to games... Lets wait until we get a Mod's approval :)


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Spoiler

My contributions to the AutoIt Community

Some messages & Apologizes:

If I hurt you, Please accept my apologies, I never (regardless of the situation) mean to hurt anybody!!!

Also, I am very busy with my project so I will appear in the last row of the online list, if you want to contact me: Email@TheDcoder.xyz

Or you can have a nice chat with me in freenode, I use the same nick on freenode too!

3fHNZJ.gif

PLEASE JOIN ##AutoIt AND HELP THE IRC AUTOIT COMMUNITY!

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

replace the word game with "another application" and the question is the same.  If we are closing topics because an unrelated script runs at the same time as a game, and yet the game interferes, then we are inane AF.

I've had to redraw repeatedly due to another app constantly redrawing on-top, if the other app does not have windowed option then you may have to brute force it over and over.

Edited by iamtheky

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

careca,

If the script requires any reference at all to the game (such as using the game window handle) then it is not permitted. If there is absolutely no reference to the game then there is no problem. Clear enough?

iamtheky,

My experience here is that scripts trying to overlay others nearly always require some interaction with the underlying GUI - particularly when dealing with full-screen games. But I am always willing to wait and see if that is the case rather than jump in and lock threads unnecessarily.

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

#RequireAdmin?

Share this post


Link to post
Share on other sites

I've been working on my 'hoping for the best' and 'trying to see the good in folk' merit badges.

If they are running into something legit like Warden killing their overlays then all efforts should bear no fruit.


,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

I see, Melba23, let me clarify then, the script is running all the time as soon as the pc starts, and i made a kind of notification (similar to windows ones or your toasts/notifier) that shows me the volume percentage when it changes, the objective is to make it show that information regardless of what is running, either games or videos or browsing the web. So no reference to a game/video player/web browser at all, it just has to display above all and everything. It already works fine above basically all applications, full-screen videos too, only places it doesn't is above some games, in fullscreen, it works over borderless windowed rocket league as an example, as i've tried now, i didn't try in the past, because i didn't think it would make a difference.


Spoiler

Paster - Main function is to paste text, but has more functions.

OpenW - Open With... alternative, Open any file with any application, set it's icon, set application as default.

Renamer - Rename files and folders, remove portions of text from the filename etc.

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Firefox Profile Backup - Backup/restore previously saved profile.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

 

Share this post


Link to post
Share on other sites

careca,

Quote

It already works fine above basically all applications, full-screen videos too, only places it doesn't is above some games, in fullscreen

Exactly as I expected. My comment above still stands - as long as there is no interaction with the underlying game GUI itself, there is no problem. Good luck.

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • rootx
      By rootx
      Hi.. In html 5 4example I use Z-index on div object to overlay the images, how could I do this for example with the object pic and another object in the gui?
      How can I use the transparency of a PNG file?
      someone has already tried?
      THX.
    • Ascend4nt
      By Ascend4nt
      PE File Overlay Extraction
      (and Certificate info)

      Executable and other PE files can contain "overlays", which is data that is appended to the end of the file.  This data can be important, such as setup packages, Authenticode signatures*, and overlays for AutoIt scripts. Or it could just be extra unneeded cruft (sometimes).  Whatever the case is, I wanted to find a way to detect if this data was present.
      This project is actually a result of dealing with so-called 'File Optimizer' programs that would strip Overlay information from Executables (leaving compiled AutoIt scripts crippled!). And also a legit >answer to my topic in Help and Support.
      While future versions of AutoIt (new beta releases and any official release after v3.3.8.1) are putting tokenized scripts into a resource within the executable, all current compiled scripts are still put together with the tokenized script appended as an overlay.
      The UDF here allows you to detect any overlay a PE (Portable Executable) file may have, and allows you to extract the Overlay into a separate file - or alternatively extract the exe without the overlay.  You can actually extract AutoIt scripts and write them to .A3X files using this method, if you so desire.  But don't be a hacker! Mommy will scold you..
      If you separate both the exe and overlay, you can combine them again using a simple file-append, something like:
      copy /b stripped.exe+script.a3x myscript.exe _
      Anyway, the method to detect overlays is relatively simple - we need to look through the PE file's various headers and find out where the last section of data/code is and its size.  If that last section doesn't reach the end of the file, then you will find an Overlay waiting at the end of the final section. However, there's an issue with Certificate Tables (or signatures) which makes it a bit more tricky to detect - basically the end of the last section and the beginning of the Certificate must be examined to find the sandwiched-in overlay.
      *Auhenticode signatures note: These and other certificates are actually linked to in the PE Data Directory, which I had missed in earlier versions.  Now they are accounted for however, and not considered overlays nor are they allowed to be extracted (well, you could extract them but the signature is bound to the unique checksum of the file and needs to be referenced from the Data Directory).
      IMPORTANT: The example now queries which part to save, and "No" button means 'yes' to Exe extract. (I didn't want to mess around with creating dialog windows, sorry).
      So, here's the UDF with a working example (note the 128MB limit can easily be worked around):
      ; ======================================================================================================== ; <FilePEOverlayExtract.au3> ; ; UDF and Example of getting Overlay info and optionally extracting that info to a file. ; ; NOTE that this isn't intended to be used to hack or decompile AutoIt executables!! ;  It's main purpose is to find Overlays and Certificates and extract/save or just report the info ; ; Functions: ;    _PEFileGetOverlayInfo()    ; Returns a file offset for overlay data (if found), and the size ; ; Author: Ascend4nt ; ======================================================================================================== ; Arry indexing Global Enum $PEI_OVL_START = 0, $PEI_OVL_SIZE, $PEI_CERT_START, $PEI_CERT_SIZE, $PEI_FILE_SIZE ; ---------------------- MAIN CODE ------------------------------- Local $sFile, $sLastDir, $sLastFile, $aOverlayInfo $sLastDir = @ScriptDir While 1     $sFile=FileOpenDialog("Select PE File To Find Overlay Data In",$sLastDir,"PE Files (*.exe;*.dll;*.drv;*.scr;*.cpl;*.sys;*.ocx;*.tlb;*.olb)|All Files (*.*)",3,$sLastFile)     If @error Or $sFile="" Then Exit     $sLastFile=StringMid($sFile,StringInStr($sFile,'\',1,-1)+1)     $sLastDir=StringLeft($sFile,StringInStr($sFile,'\',1,-1)-1)     $aOverlayInfo = _PEFileGetOverlayInfo($sFile)     If $aOverlayInfo[$PEI_OVL_START] = 0 Then         ConsoleWrite("Failed Return from _PEGetOverlayOffset(), @error = " & @error & ", @extended = " & @extended & @CRLF)         MsgBox(64, "No Overlay Found", "No overlay found in " & $sLastFile)         ContinueLoop     EndIf     ConsoleWrite("Return from _PEFileGetOverlayInfo() = " & $aOverlayInfo[$PEI_OVL_START] & ", @extended = " & $aOverlayInfo[$PEI_OVL_SIZE] & @CRLF)     If $aOverlayInfo[$PEI_OVL_START] Then         Local $hFileIn = -1, $hFileOut = -1, $sOutFile, $iMsgBox, $bBuffer, $bSuccess = 0         $iMsgBox = MsgBox(35, "Overlay found in " & $sLastFile, "Overlay Found. File size: " & $aOverlayInfo[$PEI_FILE_SIZE] & ", Overlay size: " & $aOverlayInfo[$PEI_OVL_SIZE] & @CRLF & @CRLF & _             "Would you like to:" & @CRLF & _             "[Yes]: extract and save Overlay" & @CRLF & _             "[No]: extract Exe without Overlay" & @CRLF & _             "[Cancel]: Do Nothing")         If $iMsgBox = 6 Then             If $aOverlayInfo[$PEI_OVL_SIZE] > 134217728 Then                 MsgBox(48, "Overlay is too huge", "Overlay is > 128MB, skipping..")                 ContinueLoop             EndIf             $sOutFile = FileSaveDialog("Overlay - SAVE: Choose a file to write Overlay data to (from " & $sLastFile&")", $sLastDir, "All (*.*)", 2 + 16)             If Not @error Then                 While 1                     $hFileOut = FileOpen($sOutFile, 16 + 2)                     If $hFileOut = -1 Then ExitLoop                     $hFileIn = FileOpen($sFile, 16)                     If $hFileIn = -1 Then ExitLoop                     If Not FileSetPos($hFileIn, $aOverlayInfo[$PEI_OVL_START], 0) Then ExitLoop                     ; AutoIt 2/3 Signature check requires 32 bytes min.                     If $aOverlayInfo[$PEI_FILE_SIZE] > 32 Then                         $bBuffer = FileRead($hFileIn, 32)                         If @error Then ExitLoop                         ; AutoIt2 & AutoIt3 signatures                         If BinaryMid($bBuffer, 1, 16) = "0xA3484BBE986C4AA9994C530A86D6487D" Or _                             BinaryMid($bBuffer, 1 + 16, 4) = "0x41553321" Then    ; "AU3!"                             ConsoleWrite("AutoIt overlay file found" & @CRLF)                         EndIf                         FileWrite($hFileOut, $bBuffer)                         ; subtract amount we read in above                         $bSuccess = FileWrite($hFileOut, FileRead($hFileIn, $aOverlayInfo[$PEI_OVL_SIZE] - 32))                     Else                         $bSuccess = FileWrite($hFileOut, FileRead($hFileIn, $aOverlayInfo[$PEI_OVL_SIZE]))                     EndIf                     ExitLoop                 WEnd                 If $hFileOut <> -1 Then FileClose($hFileOut)                 If $hFileIn <> -1 Then FileClose($hFileIn)             EndIf         ElseIf $iMsgBox = 7 Then             If $aOverlayInfo[$PEI_FILE_SIZE] - $aOverlayInfo[$PEI_OVL_SIZE] > 134217728 Then                 MsgBox(48, "EXE is too huge", "EXE (minus overlay) is > 128MB, skipping..")                 ContinueLoop             EndIf             $sOutFile = FileSaveDialog("EXE {STRIPPED} - SAVE: Choose a file to write EXE (minus Overlay) to. (from " & $sLastFile&")", $sLastDir, "All (*.*)", 2 + 16)             If Not @error Then                 $bSuccess = FileWrite($sOutFile, FileRead($sFile, $aOverlayInfo[$PEI_OVL_START]))             EndIf         Else             ContinueLoop         EndIf         If $bSuccess Then             ShellExecute(StringLeft($sOutFile,StringInStr($sOutFile,'\',1,-1)-1))         Else             MsgBox(64, "Error Opening or writing to file", "Error opening, reading or writing overlay info")         EndIf     EndIf WEnd Exit ; ------------------------  UDF Function ---------------------------- ; =================================================================================================================== ; Func _PEFileGetOverlayInfo($sPEFile) ; ; Returns information on Overlays present in a Windows PE file (.EXE, .DLL etc files), as well as Certificate Info. ; ; Only certain executables contain Overlays, and these are always located after the last PE Section, ; and most times before any Certificate info. Setup/install programs typically package their data in Overlays, ; and AutoIt compiled executables (at least up to v3.3.8.1) contain an overlay in .A3X tokenized format. ; ; Certificate info is available with or without an overlay, and comes after the last section and typically after ; an Overlay. Certificates are included with signed executables (such as Authenticode-signed) ; ; The returned info can be used to examine or extract the Overlay or Certificate, or just to examine the data ; (for example, to see if its an AutoIt tokenized script). ; ; NOTE: Any Overlays packaged into Certificate blocks are ignored, and the methods to extract this info may ; fail if the Certificate Table entries have their sizes modified to include the embedded Overlay. ; ; The returned information can be useful in preventing executable 'optimizers' from stripping the Overlay info, ;  which was the primary intent in creating this UDF. ; ; ; Returns: ;  Success: A 5-element array, @error = 0 ;    [0] = Overlay Start (if any) ;    [1] = Overlay Size ;    [2] = Certificate Start (if any) ;    [3] = Certificate Size ;    [4] = File Size ; ;  Failure: Same 5-element array as above (with all 0's), and @error set: ;    @error = -1 = Could not open file ;    @error = -2 = FileRead error (most likely an invalid PE file). @extended = FileRead() @error ;    @error = -3 = FileSetPos error (most likely an invalid PE file) ;    @error =  1 = File does not exist ;    @error =  2 = 'MZ' signature could not be found (not a PE file) ;    @error =  3 = 'PE' signature could not be found (not a PE file) ;    @error =  4 = 'Magic' number not recognized (not PE32, PE32+, could be 'ROM (0x107), or unk.) @extended=number ; ; Author: Ascend4nt ; =================================================================================================================== Func _PEFileGetOverlayInfo($sPEFile) ;~     If Not FileExists($sPEFile) Then Return SetError(1,0,0)     Local $hFile, $nFileSize, $bBuffer, $iOffset, $iErr, $iExit, $aRet[5] = [0, 0, 0, 0]     Local $nTemp, $nSections, $nDataDirectories, $nLastSectionOffset, $nLastSectionSz     Local $iSucces=0, $iCertificateAddress = 0, $nCertificateSz = 0, $stEndian = DllStructCreate("int")     $nFileSize = FileGetSize($sPEFile)     $hFile = FileOpen($sPEFile, 16)     If $hFile = -1 Then Return SetError(-1,0,$aRet)     ; A once-only loop helps where "goto's" would be helpful     Do         ; We keep different exit codes for different operations in case of failure (easier to track down what failed)         ;    The function can be altered to remove these assignments of course         $iExit = -2         $bBuffer = FileRead($hFile, 2)         If @error Then ExitLoop         $iExit = 2 ;~     'MZ' in hex (endian-swapped):         If $bBuffer <> 0x5A4D Then ExitLoop         ;ConsoleWrite("MZ Signature found:"&BinaryToString($bBuffer)&@CRLF)         $iExit = -3 ;~     Move to Windows PE Signature Offset location         If Not FileSetPos($hFile, 0x3C, 0) Then ExitLoop         $iExit = -2         $bBuffer = FileRead($hFile, 4)         If @error Then ExitLoop         $iOffset = Number($bBuffer)    ; Though the data is in little-endian, because its a binary variant, the conversion works          ;ConsoleWrite("Offset to Windows PE Header="&$iOffset&@CRLF)         $iExit = -3 ;~     Move to Windows PE Header Offset         If Not FileSetPos($hFile, $iOffset, 0) Then ExitLoop         $iExit = -2 ;~     Read in IMAGE_FILE_HEADER + Magic Number         $bBuffer = FileRead($hFile, 26)         If @error Then ExitLoop         $iExit = 3         ; "PE/0/0" in hex (endian swapped)         If BinaryMid($bBuffer, 1, 4) <> 0x00004550 Then ExitLoop         ; Get NumberOfSections (need to use endian conversion)         DllStructSetData($stEndian, 1, BinaryMid($bBuffer, 6 + 1, 2))         $nSections = DllStructGetData($stEndian, 1)         ; Sanity check         If $nSections * 40 > $nFileSize Then ExitLoop ;~         ConsoleWrite("# of Sections: " & $nSections & @CRLF)         $bBuffer = BinaryMid($bBuffer, 24 + 1, 2)         ; Magic Number check (0x10B = PE32, 0x107 = ROM image, 0x20B = PE32+ (x64)         If $bBuffer = 0x10B Then             ; Adjust offset to where "NumberOfRvaAndSizes" is on PE32 (offset from IMAGE_FILE_HEADER)             $iOffset += 116         ElseIf $bBuffer = 0x20B Then             ; Adjust offset to where "NumberOfRvaAndSizes" is on PE32+ (offset from IMAGE_FILE_HEADER)             $iOffset += 132         Else             $iExit = 4             SetError(Number($bBuffer))        ; Set the error (picked up below and set in @extended) to the unrecognized Number found             ExitLoop         EndIf ;~     'Optional' Header Windows-Specific fields         $iExit = -3 ;~     -> Move to "NumberOfRvaAndSizes" at the end of IMAGE_OPTIONAL_HEADER         If Not FileSetPos($hFile, $iOffset, 0) Then ExitLoop         $iExit = -2 ;~     Read in NumberOfRvaAndSizes         $nDataDirectories = Number(FileRead($hFile, 4))         ; Sanity and error check         If $nDataDirectories <= 0 Or $nDataDirectories > 16 Then ExitLoop ;~         ConsoleWrite("# of IMAGE_DATA_DIRECTORY's: " & $nDataDirectories & @CRLF) ;~     Read in IMAGE_DATA_DIRECTORY's (also moves file position to IMAGE_SECTION_HEADER)         $bBuffer = FileRead($hFile, $nDataDirectories * 8)         If @error Then ExitLoop ;~     IMAGE_DIRECTORY_ENTRY_SECURITY entry is special - it's "VirtualAddress" is actually a file offset         If $nDataDirectories >= 5 Then             DllStructSetData($stEndian, 1, BinaryMid($bBuffer, 4 * 8 + 1, 4))             $iCertificateAddress = DllStructGetData($stEndian, 1)             DllStructSetData($stEndian, 1, BinaryMid($bBuffer, 4 * 8 + 4 + 1, 4))             $nCertificateSz = DllStructGetData($stEndian, 1)             If $iCertificateAddress Then ConsoleWrite("Certificate Table address found, offset = " & $iCertificateAddress & ", size = " & $nCertificateSz & @CRLF)         EndIf         ; Read in ALL sections         $bBuffer = FileRead($hFile, $nSections * 40)         If @error Then ExitLoop ;~     DONE Reading File info..         ; Now to traverse the sections..         ; $iOffset Now refers to the location within the binary data         $iOffset = 1         $nLastSectionOffset = 0         $nLastSectionSz = 0         For $i = 1 To $nSections             ; Within IMAGE_SECTION_HEADER: RawDataPtr = offset 20, SizeOfRawData = offset 16             DllStructSetData($stEndian, 1, BinaryMid($bBuffer, $iOffset + 20, 4))             $nTemp = DllStructGetData($stEndian, 1)             ;ConsoleWrite("RawDataPtr, iteration #"&$i&" = " & $nTemp & @CRLF)             ; Is it further than last section offset?             ;  AND - check here for rare situation where section Offset may be outside Filesize bounds             If $nTemp > $nLastSectionOffset And $nTemp < $nFileSize Then                 $nLastSectionOffset = $nTemp                 DllStructSetData($stEndian, 1, BinaryMid($bBuffer, $iOffset + 16, 4))                 $nLastSectionSz = DllStructGetData($stEndian, 1)             EndIf             ; Next IMAGE_SECTION_HEADER             $iOffset += 40         Next ;~         ConsoleWrite("$nLastSectionOffset = " & $nLastSectionOffset & ", $nLastSectionSz = " & $nLastSectionSz & @CRLF)         $iSucces = 1    ; Everything was read in correctly     Until 1     $iErr = @error     FileClose($hFile)     ; No Success?     If Not $iSucces Then Return SetError($iExit, $iErr, $aRet) ;~     Now to calculate the last section offset and size to get the 'real' Executable end-of-file     ; [0] = Overlay Start     $aRet[0] = $nLastSectionOffset + $nLastSectionSz     ; Less than FileSize means there's Overlay info     If $aRet[0] And $aRet[0] < $nFileSize Then         ; Certificate start after last section? It should         If $iCertificateAddress >= $aRet[0]  Then             ; Get size of overlay IF Certificate doesn't start right after last section             ; 'squeezed-in overlay'             $aRet[1] = $iCertificateAddress - $aRet[0]         Else             ; No certificate, or < last section - overlay will be end of last section -> end of file             $aRet[1] = $nFileSize - $aRet[0]         EndIf         ; Size of Overlay = 0 ?  Reset overlay start to 0         If Not $aRet[1] Then $aRet[0] = 0     EndIf     $aRet[2] = $iCertificateAddress     $aRet[3] = $nCertificateSz     $aRet[4] = $nFileSize     Return $aRet EndFunc FilePEOverlayExtract.au3 ~prev downloads: 34
      Updates:
      2013-08-09-rev2:
      Fixed: Didn't detect 'sandwiched-in' Overlays - Overlays appearing between the end of code/data and before a Certificate section
      Changed: UDF now returns an array of information: Overlay offset and size, Certificate offset and size, and filesize
      Fixed: Overlays < 32 bytes may have been written incorrectly
      2013-08-09:
      Fix: Certificate Table now identified and excluded from false detection as Overlay.
      2013-08-07:
      Fix: Section Offsets that start beyond the filesize are now accounted for.  I'm not sure when this happens, but it's been reported to happen on other sites.
      Modified: A more reasonable filesize limit.
      Modified: Option to Extract just the Executable without Overlay, or the Overlay itself
      2013-08-03:
      Fixed: Calculation of FileRead data was off by 16 (which still worked okay, but was not coded correctly!)
      Fixed: @extended checking after calls to other code