Skip to content
This repository has been archived by the owner on Jul 13, 2020. It is now read-only.

Commit

Permalink
Ensure exit if in console mode frees console and sends enter key
Browse files Browse the repository at this point in the history
  • Loading branch information
mrfearless committed Sep 11, 2019
1 parent 84b203b commit c18ee06
Show file tree
Hide file tree
Showing 12 changed files with 90 additions and 94 deletions.
97 changes: 34 additions & 63 deletions EEex/EEex.asm
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,10 @@ start:
Invoke GetCommandLine
mov CommandLine, eax
;Invoke ProcessCmdLine
Invoke ConsoleInit
Invoke WinMain, hInstance, NULL, CommandLine, SW_SHOWDEFAULT
Invoke ConsoleExit
Invoke ExitProcess, eax
ret

Expand Down Expand Up @@ -73,11 +74,11 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
; Check if we can attach a console or not, which helps determine if
; we started via explorer or via a command line (cmd)
;--------------------------------------------------------------------------
Invoke ConsoleAttach
Invoke ConsoleStarted
mov StartedMode, eax
; Invoke ConsoleAttach
; Invoke ConsoleStarted
; mov gConsoleStartedMode, eax
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke GetStdHandle, STD_OUTPUT_HANDLE
mov hConOutput, eax
Invoke ConsoleClearScreen
Expand All @@ -101,12 +102,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
mov dwEEGameRunning, FALSE
Invoke EnumWindows, Addr EnumWindowsProc, Addr dwEEGameRunning
.IF dwEEGameRunning == TRUE
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorEEGameRunning
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorEEGameRunning, 0
.ENDIF
Expand All @@ -129,12 +128,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF CHECK_EXE_FILEVERSION
Invoke CheckFileVersion, Addr szBeamdog_BGEE, Addr szBeamdog_ExeVersion ; "0, 1, 0, 0"
.IF eax == FALSE
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorBeamdog_BGEE
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorBeamdog_BGEE, 0
.ENDIF
Expand All @@ -161,12 +158,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF CHECK_EXE_FILEVERSION
Invoke CheckFileVersion, Addr szBeamdog_BG2EE, Addr szBeamdog_ExeVersion ; "0, 1, 0, 0"
.IF eax == FALSE
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorBeamdog_BG2EE
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorBeamdog_BG2EE, 0
.ENDIF
Expand Down Expand Up @@ -194,12 +189,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF CHECK_EXE_FILEVERSION
Invoke CheckFileVersion, Addr szBeamdog_BGSOD, Addr szBeamdog_ExeVersion ; "0, 1, 0, 0"
.IF eax == FALSE
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorBeamdog_BGSOD
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorBeamdog_BGSOD, 0
.ENDIF
Expand Down Expand Up @@ -227,12 +220,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF CHECK_EXE_FILEVERSION
Invoke CheckFileVersion, Addr szBeamdog_IWDEE, Addr szBeamdog_ExeVersion ; "0, 1, 0, 0"
.IF eax == FALSE
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorBeamdog_IWDEE
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorBeamdog_IWDEE, 0
.ENDIF
Expand Down Expand Up @@ -260,12 +251,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF CHECK_EXE_FILEVERSION
Invoke CheckFileVersion, Addr szBeamdog_PSTEE, Addr szBeamdog_ExeVersion ; "0, 1, 0, 0"
.IF eax == FALSE
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorBeamdog_PSTEE
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorBeamdog_PSTEE, 0
.ENDIF
Expand All @@ -290,12 +279,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF DEBUG32
PrintText 'No EE game'
ENDIF
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorEEGameEXE
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorEEGameEXE, 0
.ENDIF
Expand All @@ -317,12 +304,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF DEBUG32
PrintText 'No EEex.dll'
ENDIF
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorEEexDLLFind
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorEEexDLLFind, 0
.ENDIF
Expand Down Expand Up @@ -351,12 +336,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF DEBUG32
PrintText 'M__EEex.lua is missing in the override folder - cannot continue.'
ENDIF
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorM__EEexMissing
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorM__EEexMissing, 0
.ENDIF
Expand All @@ -380,12 +363,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF DEBUG32
PrintText 'EEex.db is missing - cannot continue.'
ENDIF
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorEEexDBMissing
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorEEexDBMissing, 0
.ENDIF
Expand Down Expand Up @@ -447,12 +428,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF DEBUG32
PrintText 'One of more override files appear to be missing: UI.menu, TRIGGER.ids, OBJECT.ids and ACTION.ids'
ENDIF
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorEEOverrideFiles
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorEEOverrideFiles, 0
.ENDIF
Expand All @@ -468,7 +447,7 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
;--------------------------------------------------------------------------
; Prepare Startup info for pipe redirection if EEex.exe started via console
;--------------------------------------------------------------------------
.IF StartedMode == TRUE ; started via Console
.IF gConsoleStartedMode == TRUE ; started via Console
IFDEF DEBUG32
PrintText 'Console mode - redirection of child process stdout'
ENDIF
Expand Down Expand Up @@ -506,44 +485,38 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
;--------------------------------------------------------------------------
Invoke IsEEGame64bit, lpszEEGame
.IF eax == -2 ; invalid PE
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorEEGame64invalid
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorEEGame64invalid, 0
.ENDIF
ret
.ELSEIF eax == -1 ; error opening PE
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorEEGame64error
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorEEGame64error, 0
.ENDIF
ret
.ELSEIF eax == 0
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szStatusEntry
Invoke ConsoleText, Addr szErrorEEGame64no
Invoke ConsoleText, Addr szCRLF
.ENDIF
; continue as normal as 32bit EE game is detected

.ELSEIF eax == 1
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorEEGame64yes
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke DisplayErrorMessage, Addr szErrorEEGame64yes, 0
.ENDIF
Expand All @@ -557,7 +530,7 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
IFDEF DEBUG32
PrintText 'Launching EE game executable'
ENDIF
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szStatusEntry
Invoke ConsoleText, Addr szStatusLaunchingEEGame
Invoke ConsoleText, lpszEEGame
Expand All @@ -574,7 +547,7 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
;
; call XXXEEgame:luaL_loadstring replaced with call EEex.dll:EEexLuaInit
;----------------------------------------------------------------------
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szStatusEntry
Invoke ConsoleText, Addr szStatusInjectingDLL
Invoke ConsoleText, Addr szCRLF
Expand All @@ -587,7 +560,7 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
mov dwExitCode, eax
Invoke ResumeThread, pi.hThread

.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
;------------------------------------------------------------------
; Redirect EE game output to our allocated console
;------------------------------------------------------------------
Expand All @@ -597,8 +570,8 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
Invoke ConsoleText, Addr szCRLF
Invoke ReadFromPipe
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
;Invoke ConsoleSendEnterKey
;Invoke FreeConsole
Invoke CloseHandle, hChildStd_OUT_Rd
Invoke CloseHandle, hChildStd_OUT_Wr
Invoke CloseHandle, hChildStd_IN_Rd
Expand All @@ -613,12 +586,10 @@ WinMain PROC USES EBX hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdSh
ret
.ENDIF
.ELSE ; CreateProcess failed
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorEEGameExecute
Invoke ConsoleText, Addr szCRLF
Invoke ConsoleSendEnterKey
Invoke FreeConsole
.ELSE
Invoke GetLastError
Invoke DisplayErrorMessage, Addr szErrorEEGameExecute, eax
Expand Down Expand Up @@ -713,7 +684,7 @@ InjectDLL PROC hProcess:HANDLE, szDLLPath:DWORD
Invoke VirtualAllocEx, hProcess, NULL, szLibPathSize, MEM_COMMIT, PAGE_READWRITE
mov lpLibAddress, eax
.IF eax == NULL
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorVirtualAllocEx
Invoke ConsoleText, Addr szCRLF
Expand All @@ -727,7 +698,7 @@ InjectDLL PROC hProcess:HANDLE, szDLLPath:DWORD
Invoke WriteProcessMemory, hProcess, lpLibAddress, szDLLPath, szLibPathSize, Addr BytesWritten
.IF eax == 0
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorWriteProcessMem
Invoke ConsoleText, Addr szCRLF
Expand All @@ -744,7 +715,7 @@ InjectDLL PROC hProcess:HANDLE, szDLLPath:DWORD
Invoke GetModuleHandle, Addr szKernel32Dll
mov hKernel32, eax
.IF eax == NULL
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorGetModuleHandle
Invoke ConsoleText, Addr szCRLF
Expand All @@ -759,7 +730,7 @@ InjectDLL PROC hProcess:HANDLE, szDLLPath:DWORD
Invoke GetProcAddress, hKernel32, Addr szLoadLibraryProc
mov lpStartRoutine, eax
.IF eax == NULL
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorGetProcAddress
Invoke ConsoleText, Addr szCRLF
Expand All @@ -774,7 +745,7 @@ InjectDLL PROC hProcess:HANDLE, szDLLPath:DWORD
Invoke CreateRemoteThread, hProcess, NULL, 0, lpStartRoutine, lpLibAddress, 0, Addr dwRemoteThreadID
mov hRemoteThread, eax
.IF eax == NULL
.IF StartedMode == TRUE
.IF gConsoleStartedMode == TRUE
Invoke ConsoleText, Addr szErrorEntry
Invoke ConsoleText, Addr szErrorRemoteThread
Invoke ConsoleText, Addr szCRLF
Expand Down
Binary file modified EEex/EEex.exe
Binary file not shown.
2 changes: 1 addition & 1 deletion EEex/EEex.inc
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ IMAGE_NT_OPTIONAL_HDR64_MAGIC EQU 020Bh ; The file is an executable image.
;------------------------------------------------------------------------------
AppName DB "EEex loader",0
szAppName DB "[EEex loader]",0
szAppVersion DB " v1.0.0.19",0
szAppVersion DB " v1.0.0.20",0
szEEexLoaderByfearless DB "EEex loader by fearless: github.com/mrfearless/EEexLoader",0
szEEexByBubb DB "EEex by Bubb: github.com/Bubb13/EEex",0
szCRLF DB 13,10,0
Expand Down
28 changes: 14 additions & 14 deletions EEex/EEex.rap
Original file line number Diff line number Diff line change
Expand Up @@ -57,20 +57,20 @@ Menu=1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
[VerInf]
Nme=VERINF1
ID=1
FV=1.0.0.19
PV=1.0.0.19
FV=1.0.0.20
PV=1.0.0.20
VerOS=0x00000004
VerFT=0x00000001
VerLNG=0x00000409
VerCHS=0x000004B0
ProductVersion=1.0.0.19
ProductVersion=1.0.0.20
ProductName=EEex.exe
OriginalFilename=EEex.exe
LegalTrademarks=fearless
LegalCopyright=fearless
InternalName=EEex.exe
FileDescription=EEex loader
FileVersion=1.0.0.19
FileVersion=1.0.0.20
CompanyName=fearless
[Group]
Group=Assembly,Resources,Misc
Expand All @@ -87,16 +87,16 @@ AutoLoad=2,1,4,3,5
3=
5=
[Find]
1="szErrorBeamdog_BGEE"
2="szStatusEntry"
3="szEntry"
4="ConsoleStdOut"
5="NtWVM"
6="szFileVersion"
7="lpFileVerInfo"
8=";-------------------------------------------------------------------------------------"
9=";-----------------------------------------------------------------------------------------"
10="dwFileVerInfoSize"
1="StartedMode"
2="szErrorBeamdog_BGEE"
3="szStatusEntry"
4="szEntry"
5="ConsoleStdOut"
6="NtWVM"
7="szFileVersion"
8="lpFileVerInfo"
9=";-------------------------------------------------------------------------------------"
10=";-----------------------------------------------------------------------------------------"
[Size]
4=0,0,0,0,0
5=0,0,0,0,3793
Expand Down
Loading

0 comments on commit c18ee06

Please sign in to comment.