Dokumentacja Zadań z Praktyk¶
Kacper Kociszewski¶
8 stycznia 2026¶
Zerowanie
.386
.model flat, stdcall
option casemap:none
.code
start:
xor RAX, RAX
xor EAX, EAX
xor AX, AX
xor AH, AH
xor AL, AL
end start
Jak To Działa?
.386 - określa użycie instrukcji 32-bitowych.
.model flat, stdcall - definiuje model pamięci.
.code - rozpoczyna sekcję kodu.
start: - etykieta początkowa programu.
xor RAX, RAX - zeruje rejestr RAX (64-bitowy).
xor EAX, EAX - zeruje rejestr EAX (32-bitowy).
xor AX, AX - zeruje rejestr AX (16-bitowy).
xor AH, AH - zeruje górną część rejestru AX (8-bitowy).
xor AL, AL - zeruje dolną część rejestru AX (8-bitowy).
end start - definiuje punkt startowy programu.
9 stycznia 2026¶
Algorytm decryptujący hash z pliku “przykład_1.exe”
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
.data
hash db 0D6h,81h,0D2h,0E5h,0C5h,0A2h,81h,0E5h,0D0h,0ACh,0CAh,0B1h,0DCh,0ADh,0C2h,0F9h,0DCh,0B3h,0CDh,0FFh,0B7h,0A2h,0A3h,91h,0
hash_len = ($-hash)-1
bytesWritten dd ?
.code
start:
mov edi, offset hash
mov ecx, hash_len
shr ecx, 2 ; DWORD count
decrypt_loop:
mov eax, [edi]
ror eax, 3
xchg ah, al
xor eax, 12345678h
rol eax, 3
mov [edi], eax
add edi, 4
loop decrypt_loop
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov ebx, eax ; save stdout handle
invoke WriteConsoleA, ebx, addr hash, hash_len, addr bytesWritten, 0
invoke Sleep, 5000
invoke ExitProcess, 0
end start
Hasło odszyfrowane:
"Faster Than Lightning"