Jump to content

To Dual Monitor users-Flash window fullscreen fix


Quual
 Share

Recommended Posts

:x Here is a new version of the script

- Added DLL version 10.1.102.64

:shifty: Good news Adobe finally has decided to add this functionality (as of version 10.2) into the flash player.

Therefore this most likely will be the final update.

:P Note: Upgraded my system to Win 7 64 bit recently and I couldn't patch the NPSWF32.dll file in its default location of C:\Windows\SysWOW64\Macromed\Flash\NPSWF32.dll.

To apply the patch if you run into this issue.

1. Copy the file to a location where you can modify files without restriction

Lets Say: D:\AdobeDLL\NPSWF32.dll

2. Change line #51 in the script from

Local $sPatchThisFile = '' to

Local $sPatchThisFile = 'D:\AdobeDLL\NPSWF32.dll'

3. Run the script and patch the copy of the NPSWF32.dll file.

4. Copy the newly patched dll back to its original location overwriting the original version

Enjoy

Global $ver


; --------------------------------------------------------------------------------------------------------------------------- ;
;   To Add a version you need to increment the value of $nFlashVersions

Local $nFlashVersions = 7
; --------------------------------------------------------------------------------------------------------------------------- ;


; --------------------------------------------------------------------------------------------------------------------------- ;
;And the New Version's data for each
;   Don't forget the comma between or 'Quotes' for string values
;Global Const $vFlashVer[$nFlashVersions]      = Version of the NPSWF32.dll
;Global Const $vFlashSize[$nFlashVersions]     = Size of the NPSWF32.dll file in bytes
;Global Const $vFlashOffset[$nFlashVersions]   = Offset in bytes to location of bytes needing replacement
;Global Const $vFlashOrig[$nFlashVersions]     = Original bytes at offset location (to be patched)
;Global Const $vFlashNew[$nFlashVersions]      = Replacement Bytes 

Global Const $vFlashVer[$nFlashVersions]    = [ '10.0.12.36','10.0.22.87','10.0.32.18','10.0.42.34','10.0.45.2' ,'10.1.53.64', '10.1.102.64']
Global Const $vFlashSize[$nFlashVersions]   = [ 3695008,  3771296,  3883424,  3885984,  3884312,  5612496,  5971408 ]
Global Const $vFlashOffset[$nFlashVersions] = [ 1271652,  1270591,  1274696,  1276282,  1277053,  1575445,  1576519 ]
Global Const $vFlashOrig[$nFlashVersions]   = [ '0x0074', '0x0074', '0x0074', '0x0074', '0x0074', '0x7439', '0x7439' ]
Global Const $vFlashNew[$nFlashVersions]    = [ '0x00EB', '0x00EB', '0x00EB', '0x00EB', '0x00EB', '0x9090', '0x9090']
; --------------------------------------------------------------------------------------------------------------------------- ;


; --------------------------------------------------------------------------------------------------------------------------- ;
;Global Const $bSearchOrig     = a binary string to search for. marks the offset location
;Global Const $bSearchReplaced = a binary string to search for after the patch has been applied. marks the offset location
;
;Changing these values is only necessary the script cannot find the correct offset location 

Global Const $bSearchOrig = Binary('0x743983E807741183E80575138B')
Global Const $bSearchReplaced =  Binary('0x909083E807741183E80575138B')
; --------------------------------------------------------------------------------------------------------------------------- ;


; --------------------------------------------------------------------------------------------------------------------------- ;
; The script looks for the Adobe Flash DLL file in
; 1st place it checks  C:\Windows\system32\Macromed\Flash\NPSWF32.dll
; 2nd place it checks  C:\Windows\SysWOW64\Macromed\Flash\NPSWF32.dll

; To patch a NPSWF32.dll file located elsewhere when the file also exists in one of the two locations above
; You must tell the script where to look, so that it will look in that location first
     
; For example in order to patch a NPSWF32.dll located at D:\AdobeDll\NPSWF32.dll
;   change the following line from.
; Local $sPatchThisFile = ''     to 
; Local $sPatchThisFile = 'D:\AdobeDll\NPSWF32.dll'

Local $sPatchThisFile = ''
; --------------------------------------------------------------------------------------------------------------------------- ;

; --------------------------------------------------------------------------------------------------------------------------- ;
;           Do not edit below this line
; --------------------------------------------------------------------------------------------------------------------------- ;
start($sPatchThisFile)
Exit

Func start($sPatchThis)
    If $sPatchThis Then
        If FileExists($sPatchThis) Then
            VerifyDllVersion($sPatchThis)
            Return
        EndIf
    EndIf
    If FileExists(@WindowsDir & '\system32\Macromed\Flash\NPSWF32.dll') Then
        VerifyDllVersion(@WindowsDir & '\system32\Macromed\Flash\NPSWF32.dll')
    ElseIf FileExists(@WindowsDir & '\SysWOW64\Macromed\Flash\NPSWF32.dll') Then
        VerifyDllVersion(@WindowsDir & '\SysWOW64\Macromed\Flash\NPSWF32.dll')
    Else
        VerifyDllVersion(FindDll('NPSWF32.dll'))
    EndIf
EndFunc
Func FindDll($sDll)
    If MsgBox(4,'FullScreen Fix - Error',$sDll & '      Does not exist' & @CRLF & '      Would you like to select the file manually?      ' & @CRLF & @CRLF) = 6 Then
        $sNewFileName = FileOpenDialog('Adobe FullScreen Fix', @SystemDir , 'Dll File (*.dll)' , 1 , 'NPSWF32.dll')
        If StringRight($sNewFileName,11) = $sDll Then Return $sNewFileName
    EndIf
EndFunc
Func VerifyDllVersion($sDll)
    Local $sVer,$oFSO
    $oFSO = ObjCreate("Scripting.FileSystemObject")
    $sVer = $oFSO.GetFileVersion( $sDll )
    $oFSO = ""
    For $i = 0 To UBound($vFlashVer) - 1
        If $sVer = $vFlashVer[$i] Then
            $ver = $sVer
            Return
        EndIf
    Next
    If Not $ver Then
        If WrongVersion($sVer) Then VersionIsBad_ScanForIt($sDll, $sVer)
    Else
        VersionIsGood_Openit($sDll,$sVer)
    EndIf
EndFunc
Func VersionIsGood_Openit($sDll, $sVer)
    Local $hDLL, $bFile
    $hDLL = FileOpen($sDll,16)
    If @error = -1 Then FileOpenFail()
    $bFile = FileRead($hDLL)
    If @error = 1 Then FileReadFail()
    FileClose($hDLL)
    For $i = 0 To UBound($vFlashVer) - 1
        If $sVer = $vFlashVer[$i] Then
            PatchIt($bFile,$sDll,$vFlashVer[$i],$vFlashSize[$i],$vFlashOffset[$i],Binary($vFlashOrig[$i]),Binary($vFlashNew[$i]))
            Return
        EndIf
    Next
EndFunc
Func VersionIsBad_ScanForIt($sDll, $sVer)
    Local $loc1,$loc2,$i,$nSize
    $ver = $sVer
    $nSize = FileGetSize($sDll)
    $hDLL = FileOpen($sDll,16)
    If @error Then FileOpenFail()
    $bFile = FileRead($hDLL)
    If @error Then FileReadFail()
    FileClose($hDLL)
    $loc1 = StringInStr(BinaryToString($bFile),BinaryToString($bSearchOrig),Default,1)
    If Not $loc1 Then
        $loc1 = StringInStr(BinaryToString($bFile),BinaryToString($bSearchReplaced),Default,1)
        If Not $loc1 Then
            MsgBox(0,'FullScreen Fix - Error','      Unable to locate the correct byte sequence in the dll file       ' & @CRLF & '      Version = ' & $ver & @CRLF & '      Critical failure...Exiting....'  & @CRLF & @CRLF)
            Return
        Else
            If MsgBox(1,'FullScreen Fix : Untested Version',"      Found a 'possible' location where an untested version was patched    " & @CRLF & '      Version = ' & $ver & '      Location = ' & $loc1 & @CRLF & @CRLF & '      DO NOT proceed unless you have previously patched an untested version.      ' & @CRLF ) <> 1 Then PatchIt($bFile,$sDll,$ver,$nSize,$loc1 - 1,Binary("0x9090"),Binary("0x7439"))
            Return
        EndIf
    Else
        $loc1 -= 1
        $sLocs = 'Location 1= ' & $loc1 & @CRLF
        $loc2 = StringInStr(BinaryToString($bFile),BinaryToString($bSearchOrig),Default,2)
        If $loc2 Then
            $loc2 -= 1
            $sLocs &= 'Location 2= ' & $loc2 & @CRLF
            $i = 3
            While $i <= 20
                $p = StringInStr(BinaryToString($bFile),BinaryToString($bSearchOrig),Default,$i)
                If Not $p Then ExitLoop
                $sLocs &= 'Location ' & $i & '= ' & $p & @CRLF
                $i += 1
            WEnd
            MsgBox(0,'FullScreen Fix - Error','      Found multiple possible locations to patch      ' & @CRLF & '      Version = ' & $ver & @CRLF & $sLocs & @CRLF & '      Critical failure...Exiting....'  & @CRLF & @CRLF)
            Return
        EndIf
        PatchIt($bFile,$sDll,$ver,$nSize,$loc1,Binary("0x7439"),Binary("0x9090"))
        Return
    EndIf
EndFunc
Func PatchIt(byref $bFile,$sDll,$sV,$nL,$nO,$bOrig,$bNew)
    If $ver <> $sV then return
    Local $bReplace, $bReplacement, $bPart1, $bPart2, $bTarget, $hDLL
    If BinaryLen($bFile) <> $nL Then
        If Not WrongSize(BinaryLen($bFile),$nL) Then Exit
    EndIf
    $bPart1 = BinaryMid($bFile, 1, $nO)
    $bTarget = BinaryMid($bFile, $nO + 1, 2)
    $bPart2 = BinaryMid($bFile, $nO + 3, BinaryLen($bFile))
   If $bTarget = $bOrig Then
        $bTarget = $bNew
        $ReplacementMsg = '      The NPSWF32.dll file is not currently patched.      ' & @CRLF & @CRLF & '      Would you like to patch it now?'
    ElseIf $bTarget = $bNew Then
        $bTarget = $bOrig
        $ReplacementMsg = '      The NPSWF32.dll file has been patched.      ' & @CRLF & @CRLF & '      Would you like to remove the patch?'
    Else
        MsgBox(0,'FullScreen Fix - Error','      The 2 bytes to patch are incorrect ' & @CRLF & '      they should be  ' & $bShouldbe & ',      ' & @CRLF & '      they are ' & $bIs & @CRLF & @CRLF & '       Critical failure...Exiting....'  & @CRLF)
        Return
    EndIf
    $bReplace = $bPart1 & $bTarget & $bPart2
    If BinaryLen($bReplace) <> BinaryLen($bFile) Then
        MsgBox(0,'FullScreen Fix - Error','      Critical error: the length of the original file' & @CRLF & '      and the length of the new file would have not been the same.      ' & @CRLF & '      Commit changes to file has beeen aborted. ' & @CRLF & @CRLF & '      Uknown reason how or why this would happen. ' & @CRLF & @CRLF & '      Exiting....' & @CRLF)
        Return
    EndIf
    If MsgBox(4,'FullScreen Fix - Patch','      Found the target dll file in , '  & @CRLF & '      ' & $sDll & '.' & @CRLF & _
        @CRLF & $ReplacementMsg & @CRLF ) = 6 Then
        $hDLL = FileOpen($sDll,18)
        If @error = -1 Then
            FileOpenFail()
            Exit
        EndIf
        If Not FileWrite($hDLL,$bReplace) Then
            FileClose($hDLL)
            FileWriteFail()
            Exit
        EndIf
        FileClose($hDLL)
    EndIf
    Exit
EndFunc
Func WrongVersion($sVerIs)
    If MsgBox(4,'FullScreen Fix - Error', "     Current NPSWF32.dll Version = " & $sVerIs & @CRLF & "      That version hasn't been added yet"  & @CRLF & @CRLF & '      Would you like to scan the file for the target bytes ?' & @CRLF & @CRLF) = 6 Then
        Return True
    Else
        Exit
    EndIf
EndFunc
Func WrongSize($nSizeIs, $nSizeShouldBe)
    If MsgBox(4,'FullScreen Fix - Error', 'The dll file size should be' & $nSizeShouldBe & ',' & @CRLF & "however it is " & $nSizeIs & @CRLF & "It's possible the patch may work still." & @CRLF & 'There are a number of additional checks to make sure the wrong file does not get patched' & @CRLF & @CRLF & 'Would you like to continue ?' & @CRLF & @CRLF) = 6 Then Return True
EndFunc
Func FileOpenFail()
    MsgBox(0,'FullScreen Fix - Error','      Unable to open the file NPSWF32.dll.' & @CRLF & '      File may be in use.      ' & @CRLF & '      Try the following' & @CRLF & '        Quit any applications that maybe using flash.' & @CRLF & '        Restart your system.' & @CRLF & '        Use an account with administrator privledges.' & @CRLF & '        Check permissions to make sure you have read & write privledges.' & @CRLF & @CRLF & '      Critical failure...Exiting....'  & @CRLF & @CRLF)
EndFunc
Func FileReadFail()
    MsgBox(0,'FullScreen Fix - Error','      Unable to read the file NPSWF32.dll.' & @CRLF & '      File may be in use.      ' & @CRLF & '      Try the following' & @CRLF & '        Quit any applications that maybe using flash.' & @CRLF & '        Restart your system.' & @CRLF & '        Use an account with administrator privledges.' & @CRLF & '        Check permissions to make sure you have read & write privledges.' & @CRLF & @CRLF & '      Critical failure...Exiting....'  & @CRLF & @CRLF)
EndFunc
Func FileWriteFail()
    MsgBox(0,'FullScreen Fix - Error','      Unable to write to the file NPSWF32.dll.' & @CRLF & '      File may be in use.      ' & @CRLF & '      Try the following' & @CRLF & '        Quit any applications that maybe using flash.' & @CRLF & '        Restart your system.' & @CRLF & '        Use an account with administrator privledges.' & @CRLF & '        Check permissions to make sure you have read & write privledges.' & @CRLF & @CRLF & '      Critical failure...Exiting....'  & @CRLF & @CRLF)
EndFunc

AdobeFix.au3

Link to comment
Share on other sites

There was an error in the VerifyDLLVersion function.

Exitloop instead of Return should be used.

The script now correctly changes the dll.

However, for some reason the flash players does not stay full srceen at my second monitor.

(eventhough I am using a modifed dll, I checked if the dll was correctly modified at the right location etc.)

(74 39 83 E8 07 74 11 83 E8 05 75 13 8B) -> (90 90 83 E8 07 74 11 83 E8 05 75 13 8B)

I am using windows 7 x64, firefox 3.6.13 and flashplayer 10.1.102.64.

If anybody has any suggestion, pls let me know.

Func VerifyDllVersion($sDll)
    Local $sVer,$oFSO
    $oFSO = ObjCreate("Scripting.FileSystemObject")
    $sVer = $oFSO.GetFileVersion( $sDll )
    $oFSO = ""
    ;MsgBox(0,'test message','File version = ' & $sVer & @CRLF &  'test.')
    For $i = 0 To UBound($vFlashVer) - 1
        If $sVer = $vFlashVer[$i] Then
            $ver = $sVer
            ;Return         ----------------- ERROR ---------------------------
            ExitLoop
        EndIf
    Next
    ;MsgBox(0,'test message','File = ' & $ver & @CRLF &  'test.')
    If Not $ver Then
        ;MsgBox(0,'test message','File = ' & $ver & @CRLF &  'unsupported version.')
        If WrongVersion($sVer) Then VersionIsBad_ScanForIt($sDll, $sVer)
    Else
        ;MsgBox(0,'test message','File = ' & $ver & @CRLF &  'supported version.')
        VersionIsGood_Openit($sDll,$sVer)
    EndIf
EndFunc

AdobeFix_10.1.102.64.au3

Edited by Prototype
Link to comment
Share on other sites

  • 1 month later...

Hi guys - brilliant! I've tested your new version on my new Win7 box with this week's Flash update, and it works. Yippee! Anyway, I have one slight adjustment to make to the most recent version (i.e. the last two posts combined), and that is a check for Administrator rights. Without it, it won't patch the DLL.

Without further ado, here's the code - or just download it below.

Global $ver

; Run this script with administrator privileges - otherwise it won't allow us to path the DLL
#RequireAdmin

; --------------------------------------------------------------------------------------------------------------------------- ;
;   To Add a version you need to increment the value of $nFlashVersions

Local $nFlashVersions = 7
; --------------------------------------------------------------------------------------------------------------------------- ;


; --------------------------------------------------------------------------------------------------------------------------- ;
;And the New Version's data for each
;   Don't forget the comma between or 'Quotes' for string values
;Global Const $vFlashVer[$nFlashVersions]     = Version of the NPSWF32.dll
;Global Const $vFlashSize[$nFlashVersions]     = Size of the NPSWF32.dll file in bytes
;Global Const $vFlashOffset[$nFlashVersions]   = Offset in bytes to location of bytes needing replacement
;Global Const $vFlashOrig[$nFlashVersions]     = Original bytes at offset location (to be patched)
;Global Const $vFlashNew[$nFlashVersions]     = Replacement Bytes

Global Const $vFlashVer[$nFlashVersions]    = [ '10.0.12.36','10.0.22.87','10.0.32.18','10.0.42.34','10.0.45.2' ,'10.1.53.64', '10.1.102.64']
Global Const $vFlashSize[$nFlashVersions]   = [ 3695008,  3771296,  3883424,  3885984,  3884312,  5612496,  5971408 ]
Global Const $vFlashOffset[$nFlashVersions] = [ 1271652,  1270591,  1274696,  1276282,  1277053,  1575445,  1576519 ]
Global Const $vFlashOrig[$nFlashVersions]   = [ '0x0074', '0x0074', '0x0074', '0x0074', '0x0074', '0x7439', '0x7439' ]
Global Const $vFlashNew[$nFlashVersions]    = [ '0x00EB', '0x00EB', '0x00EB', '0x00EB', '0x00EB', '0x9090', '0x9090']
; --------------------------------------------------------------------------------------------------------------------------- ;


; --------------------------------------------------------------------------------------------------------------------------- ;
;Global Const $bSearchOrig     = a binary string to search for. marks the offset location
;Global Const $bSearchReplaced = a binary string to search for after the patch has been applied. marks the offset location
;
;Changing these values is only necessary the script cannot find the correct offset location

Global Const $bSearchOrig = Binary('0x743983E807741183E80575138B')
Global Const $bSearchReplaced =  Binary('0x909083E807741183E80575138B')
; --------------------------------------------------------------------------------------------------------------------------- ;


; --------------------------------------------------------------------------------------------------------------------------- ;
; The script looks for the Adobe Flash DLL file in
; 1st place it checks  C:\Windows\system32\Macromed\Flash\NPSWF32.dll
; 2nd place it checks  C:\Windows\SysWOW64\Macromed\Flash\NPSWF32.dll

; To patch a NPSWF32.dll file located elsewhere when the file also exists in one of the two locations above

; For example in order to patch a NPSWF32.dll located at D:\AdobeDll\NPSWF32.dll
;        change the following line from.
; Local $sPatchThisFile = ''     to
; Local $sPatchThisFile = 'D:\AdobeDll\NPSWF32.dll'

Local $sPatchThisFile = ''
; --------------------------------------------------------------------------------------------------------------------------- ;

; --------------------------------------------------------------------------------------------------------------------------- ;
;           Do not edit below this line
; --------------------------------------------------------------------------------------------------------------------------- ;
start($sPatchThisFile)
Exit

Func start($sPatchThis)
    If $sPatchThis Then
        If FileExists($sPatchThis) Then
            VerifyDllVersion($sPatchThis)
            Return
        EndIf
    EndIf
    If FileExists(@WindowsDir & '\system32\Macromed\Flash\NPSWF32.dll') Then
        VerifyDllVersion(@WindowsDir & '\system32\Macromed\Flash\NPSWF32.dll')
    ElseIf FileExists(@WindowsDir & '\SysWOW64\Macromed\Flash\NPSWF32.dll') Then
        VerifyDllVersion(@WindowsDir & '\SysWOW64\Macromed\Flash\NPSWF32.dll')
    Else
        VerifyDllVersion(FindDll('NPSWF32.dll'))
    EndIf
EndFunc
Func FindDll($sDll)
    If MsgBox(4,'FullScreen Fix - Error',$sDll & '      Does not exist' & @CRLF & '      Would you like to select the file manually?      ' & @CRLF & @CRLF) = 6 Then
        $sNewFileName = FileOpenDialog('Adobe FullScreen Fix', @SystemDir , 'Dll File (*.dll)' , 1 , 'NPSWF32.dll')
        If StringRight($sNewFileName,11) = $sDll Then Return $sNewFileName
    EndIf
EndFunc
Func VerifyDllVersion($sDll)
    Local $sVer,$oFSO
    $oFSO = ObjCreate("Scripting.FileSystemObject")
    $sVer = $oFSO.GetFileVersion( $sDll )
    $oFSO = ""
    ;MsgBox(0,'test message','File version = ' & $sVer & @CRLF &  'test.')
    For $i = 0 To UBound($vFlashVer) - 1
        If $sVer = $vFlashVer[$i] Then
            $ver = $sVer
            ;Return         ----------------- ERROR ---------------------------
            ExitLoop
        EndIf
    Next
    ;MsgBox(0,'test message','File = ' & $ver & @CRLF &  'test.')
    If Not $ver Then
        ;MsgBox(0,'test message','File = ' & $ver & @CRLF &  'unsupported version.')
        If WrongVersion($sVer) Then VersionIsBad_ScanForIt($sDll, $sVer)
    Else
        ;MsgBox(0,'test message','File = ' & $ver & @CRLF &  'supported version.')
        VersionIsGood_Openit($sDll,$sVer)
    EndIf
EndFunc
Func VersionIsGood_Openit($sDll, $sVer)
    Local $hDLL, $bFile
    $hDLL = FileOpen($sDll,16)
    If @error = -1 Then FileOpenFail()
    $bFile = FileRead($hDLL)
    If @error = 1 Then FileReadFail()
    FileClose($hDLL)
    For $i = 0 To UBound($vFlashVer) - 1
        If $sVer = $vFlashVer[$i] Then
            PatchIt($bFile,$sDll,$vFlashVer[$i],$vFlashSize[$i],$vFlashOffset[$i],Binary($vFlashOrig[$i]),Binary($vFlashNew[$i]))
            Return
        EndIf
    Next
EndFunc
Func VersionIsBad_ScanForIt($sDll, $sVer)
    Local $loc1,$loc2,$i,$nSize
    $ver = $sVer
    $nSize = FileGetSize($sDll)
    $hDLL = FileOpen($sDll,16)
    If @error Then FileOpenFail()
    $bFile = FileRead($hDLL)
    If @error Then FileReadFail()
    FileClose($hDLL)
    $loc1 = StringInStr(BinaryToString($bFile),BinaryToString($bSearchOrig),Default,1)
    If Not $loc1 Then
        $loc1 = StringInStr(BinaryToString($bFile),BinaryToString($bSearchReplaced),Default,1)
        If Not $loc1 Then
            MsgBox(0,'FullScreen Fix - Error','      Unable to locate the correct byte sequence in the dll file       ' & @CRLF & '      Version = ' & $ver & @CRLF & '      Critical failure...Exiting....'  & @CRLF & @CRLF)
            Return
        Else
            If MsgBox(1,'FullScreen Fix : Untested Version',"      Found a 'possible' location where an untested version was patched    " & @CRLF & '      Version = ' & $ver & '      Location = ' & $loc1 & @CRLF & @CRLF & '      DO NOT proceed unless you have previously patched an untested version.      ' & @CRLF ) <> 1 Then PatchIt($bFile,$sDll,$ver,$nSize,$loc1 - 1,Binary("0x9090"),Binary("0x7439"))
            Return
        EndIf
    Else
        $loc1 -= 1
        $sLocs = 'Location 1= ' & $loc1 & @CRLF
        $loc2 = StringInStr(BinaryToString($bFile),BinaryToString($bSearchOrig),Default,2)
        If $loc2 Then
            $loc2 -= 1
            $sLocs &= 'Location 2= ' & $loc2 & @CRLF
            $i = 3
            While $i <= 20
                $p = StringInStr(BinaryToString($bFile),BinaryToString($bSearchOrig),Default,$i)
                If Not $p Then ExitLoop
                $sLocs &= 'Location ' & $i & '= ' & $p & @CRLF
                $i += 1
            WEnd
            MsgBox(0,'FullScreen Fix - Error','      Found multiple possible locations to patch      ' & @CRLF & '      Version = ' & $ver & @CRLF & $sLocs & @CRLF & '      Critical failure...Exiting....'  & @CRLF & @CRLF)
            Return
        EndIf
        PatchIt($bFile,$sDll,$ver,$nSize,$loc1,Binary("0x7439"),Binary("0x9090"))
        Return
    EndIf
EndFunc
Func PatchIt(byref $bFile,$sDll,$sV,$nL,$nO,$bOrig,$bNew)
    If $ver <> $sV then return
    Local $bReplace, $bReplacement, $bPart1, $bPart2, $bTarget, $hDLL
    If BinaryLen($bFile) <> $nL Then
        If Not WrongSize(BinaryLen($bFile),$nL) Then Exit
    EndIf
    $bPart1 = BinaryMid($bFile, 1, $nO)
    $bTarget = BinaryMid($bFile, $nO + 1, 2)
    $bPart2 = BinaryMid($bFile, $nO + 3, BinaryLen($bFile))
   If $bTarget = $bOrig Then
        $bTarget = $bNew
        $ReplacementMsg = '      The NPSWF32.dll file is not currently patched.      ' & @CRLF & @CRLF & '      Would you like to patch it now?'
    ElseIf $bTarget = $bNew Then
        $bTarget = $bOrig
        $ReplacementMsg = '      The NPSWF32.dll file has been patched.      ' & @CRLF & @CRLF & '      Would you like to remove the patch?'
    Else
        MsgBox(0,'FullScreen Fix - Error','      The 2 bytes to patch are incorrect ' & @CRLF & '      they should be  ' & $bShouldbe & ',      ' & @CRLF & '      they are ' & $bIs & @CRLF & @CRLF & '       Critical failure...Exiting....'  & @CRLF)
        Return
    EndIf
    $bReplace = $bPart1 & $bTarget & $bPart2
    If BinaryLen($bReplace) <> BinaryLen($bFile) Then
        MsgBox(0,'FullScreen Fix - Error','      Critical error: the length of the original file' & @CRLF & '      and the length of the new file would have not been the same.      ' & @CRLF & '      Commit changes to file has beeen aborted. ' & @CRLF & @CRLF & '      Uknown reason how or why this would happen. ' & @CRLF & @CRLF & '      Exiting....' & @CRLF)
        Return
    EndIf
    If MsgBox(4,'FullScreen Fix - Patch','      Found the target dll file in , '  & @CRLF & '      ' & $sDll & '.' & @CRLF & _
        @CRLF & $ReplacementMsg & @CRLF ) = 6 Then
        $hDLL = FileOpen($sDll,18)
        If @error = -1 Then
            FileOpenFail()
            Exit
        EndIf
        If Not FileWrite($hDLL,$bReplace) Then
            FileClose($hDLL)
            FileWriteFail()
            Exit
        EndIf
        FileClose($hDLL)
    EndIf
    Exit
EndFunc
Func WrongVersion($sVerIs)
    If MsgBox(4,'FullScreen Fix - Error', "     Current NPSWF32.dll Version = " & $sVerIs & @CRLF & "      That version hasn't been added yet"  & @CRLF & @CRLF & '      Would you like to scan the file for the target bytes ?' & @CRLF & @CRLF) = 6 Then
        Return True
    Else
        Exit
    EndIf
EndFunc
Func WrongSize($nSizeIs, $nSizeShouldBe)
    If MsgBox(4,'FullScreen Fix - Error', 'The dll file size should be' & $nSizeShouldBe & ',' & @CRLF & "however it is " & $nSizeIs & @CRLF & "It's possible the patch may work still." & @CRLF & 'There are a number of additional checks to make sure the wrong file does not get patched' & @CRLF & @CRLF & 'Would you like to continue ?' & @CRLF & @CRLF) = 6 Then Return True
EndFunc
Func FileOpenFail()
    MsgBox(0,'FullScreen Fix - Error','      Unable to open the file NPSWF32.dll.' & @CRLF & '      File may be in use.      ' & @CRLF & '      Try the following' & @CRLF & '        Quit any applications that maybe using flash.' & @CRLF & '        Restart your system.' & @CRLF & '        Use an account with administrator privledges.' & @CRLF & '        Check permissions to make sure you have read & write privledges.' & @CRLF & @CRLF & '      Critical failure...Exiting....'  & @CRLF & @CRLF)
EndFunc
Func FileReadFail()
    MsgBox(0,'FullScreen Fix - Error','      Unable to read the file NPSWF32.dll.' & @CRLF & '      File may be in use.      ' & @CRLF & '      Try the following' & @CRLF & '        Quit any applications that maybe using flash.' & @CRLF & '        Restart your system.' & @CRLF & '        Use an account with administrator privledges.' & @CRLF & '        Check permissions to make sure you have read & write privledges.' & @CRLF & @CRLF & '      Critical failure...Exiting....'  & @CRLF & @CRLF)
EndFunc
Func FileWriteFail()
    MsgBox(0,'FullScreen Fix - Error','      Unable to write to the file NPSWF32.dll.' & @CRLF & '      File may be in use.      ' & @CRLF & '      Try the following' & @CRLF & '        Quit any applications that maybe using flash.' & @CRLF & '        Restart your system.' & @CRLF & '        Use an account with administrator privledges.' & @CRLF & '        Check permissions to make sure you have read & write privledges.' & @CRLF & @CRLF & '      Critical failure...Exiting....'  & @CRLF & @CRLF)
EndFunc

Hope this helps

AdobeFix.au3

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...