Dokumentacja Zadań z Praktyk

Kacper Kociszewski

8 stycznia 2026

  1. 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
  1. 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

  1. 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"