mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[misc] fix an issue with Far Manager
* Closes #161 * Also fix a couple warnings from MinGW and VS
This commit is contained in:
parent
70d2784165
commit
ae08fe3ac2
11 changed files with 263 additions and 45 deletions
85
res/hogger/hogger.asm
Normal file
85
res/hogger/hogger.asm
Normal file
|
@ -0,0 +1,85 @@
|
|||
; Rufus: The Reliable USB Formatting Utility
|
||||
; Commandline hogger, assembly version (NASM)
|
||||
; Copyright © 2014 Pete Batard <pete@akeo.ie>
|
||||
;
|
||||
; This program is free software: you can redistribute it and/or modify
|
||||
; it under the terms of the GNU General Public License as published by
|
||||
; the Free Software Foundation, either version 3 of the License, or
|
||||
; (at your option) any later version.
|
||||
;
|
||||
; This program is distributed in the hope that it will be useful,
|
||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
; GNU General Public License for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU General Public License
|
||||
; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
global _main
|
||||
extern _GetStdHandle@4
|
||||
extern _OpenMutexA@12
|
||||
extern _WaitForSingleObject@8
|
||||
extern _WriteFile@20
|
||||
extern _ExitProcess@4
|
||||
|
||||
section .text
|
||||
_main:
|
||||
; DWORD size;
|
||||
mov ebp, esp
|
||||
sub esp, 4
|
||||
|
||||
; register HANDLE mutex [-> ecx], stdout [-> ebx];
|
||||
|
||||
; stdout = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
push -11
|
||||
call _GetStdHandle@4
|
||||
mov ebx, eax
|
||||
|
||||
; mutex = OpenMutexA(SYNCHRONIZE, FALSE, "Global/Rufus_CmdLine");
|
||||
push mutex_name
|
||||
push 0
|
||||
push 1048576 ; 0x00100000
|
||||
call _OpenMutexA@12
|
||||
mov ecx, eax
|
||||
|
||||
; if (mutex == NULL)
|
||||
test eax, eax
|
||||
|
||||
; goto error
|
||||
je error
|
||||
|
||||
; WaitForSingleObject(mutex, INFINITE);
|
||||
push -1
|
||||
push ecx
|
||||
call _WaitForSingleObject@8
|
||||
|
||||
; goto out;
|
||||
jmp out;
|
||||
|
||||
; error:
|
||||
error:
|
||||
|
||||
; WriteFile(stdout, error_msg, sizeof(error_msg), &size, 0);
|
||||
push 0
|
||||
lea eax, [ebp-4]
|
||||
push eax
|
||||
push (error_msg_end - error_msg)
|
||||
push error_msg
|
||||
push ebx
|
||||
call _WriteFile@20
|
||||
|
||||
; out:
|
||||
out:
|
||||
|
||||
; ExitProcess(0)
|
||||
push 0
|
||||
call _ExitProcess@4
|
||||
|
||||
; Just in case...
|
||||
hlt
|
||||
|
||||
mutex_name:
|
||||
db "Global/Rufus_CmdLine",0
|
||||
error_msg:
|
||||
db "Unable to synchronize with GUI application.",0
|
||||
error_msg_end:
|
Loading…
Add table
Add a link
Reference in a new issue