Assembler ukrywanie okna przy komunikacie MessageBox

0

Jak ukryć konsolę tak aby było widać sam komunikat bez zbędnych okien
user image

Kompiluję w NASM a kod to ten

extern _MessageBoxA ;user32

section .data

hello:
	db	"Hello World!", 0xa, 0

section .text
	_WinMain@16
	;MessageBoxA 0, str, str, 0
	push 0
	push hello
	push hello
	push 0
	call _MessageBoxA

	xor eax, eax
	ret
0

Teraz zrobiłem inaczej odciąłem conhost.exe poprzez FreeConsole podczas uruchomienia programu mignie konsola może kto wie jak zrobić żeby nie migała przy włączaniu?

extern _MessageBoxA ;user32
extern _FreeConsole ;kernel32
 
section .data
 
hello:
    db    "Hello World!", 0xa, 0
 
section .text
    _WinMain@16
    call _FreeConsole
    ;MessageBoxA 0, str, str, 0
    push 0
    push hello
    push hello
    push 0
    call _MessageBoxA
 
    xor eax, eax
    ret
0

Jak tworzysz plik wykonywalny?
Wydaję mi się, że tworzysz aplikację konsolową.

0

Linker (lub sterownik kompilacji lub ewentualnie kompilator) powinien mieć opcję, czy chcesz wygenerować aplikację okienkową, czy konsolową.

Jeżeli nie znajdziesz, to ewentualnie możesz ręcznie spachować samą binarkę. W strukturze IMAGE_OPTIONAL_HEADER plików PE masz pole Subsystem, które musisz zmienić. :P
Jednak w razie możliwości polecam pierwszą metodę. Jest bardziej uniwersalna i przede wszystkim wygodna. :)

0

O dzięki zapomniałem właśnie o tym subsystem :)

0

Ja bym się tak szybko nie poddawał. Spróbuj znaleźć okno konsoli FindWindow() i spróbuj je ukryć :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1