joyce8/EMBER2024-capa huggingface dataset:
Function at 0x477988
Capabilities:
Query environment variable

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ecx
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetEnvironmentStringsW]
mov esi, eax
test esi, esi
je 0x477a25
push ebx
push esi
call fcn.00477951
xor ebx, ebx
sub eax, esi
push ebx
push ebx
push ebx
push ebx
sar eax, 1
push eax
push esi
push ebx
push ebx
mov dword [ebp - 8], eax
call fcn.004778e5
add esp, 0x24
mov dword [ebp - 4], eax
test eax, eax
jne 0x4779d2
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
xor eax, eax
jmp 0x477a24
push edi
push eax
call fcn.004764d8
mov edi, eax
pop ecx
push ebx
test edi, edi
jne 0x4779f2
call fcn.004750a0
pop ecx
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
xor eax, eax
jmp 0x477a23
push ebx
push dword [ebp - 4]
push edi
push dword [ebp - 8]
push esi
push ebx
push ebx
call fcn.004778e5
add esp, 0x20
test eax, eax
jne 0x477a11
push edi
call fcn.004750a0
jmp 0x477a19
push ebx
call fcn.004750a0
mov ebx, edi
pop ecx
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
mov eax, ebx
pop edi
pop ebx
pop esi
leave
ret

Function at 0x478be7
Capabilities:
Allocate thread local storage

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x480b60
push 0x480b58
push str.FlsAlloc
push 0x1f
call fcn.00478aa6
mov esi, eax
add esp, 0x10
test esi, esi
je 0x478c1b
push dword [ebp + 8]
mov ecx, esi
call dword [0x47e130]
call esi
jmp 0x478c21
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
pop esi
pop ebp
ret 4

Function at 0x478c65
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x480b70
push 0x480b68
push str.FlsGetValue
push 0x21
call fcn.00478aa6
mov esi, eax
add esp, 0x10
test esi, esi
je 0x478c9c
push dword [ebp + 8]
mov ecx, esi
call dword [0x47e130]
call esi
pop esi
pop ebp
ret 4
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsGetValue]

Function at 0x478ca4
Capabilities:
Set thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x480b78
push 0x480b70
push str.FlsSetValue
push 0x22
call fcn.00478aa6
mov esi, eax
add esp, 0x10
test esi, esi
je 0x478cde
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [0x47e130]
call esi
pop esi
pop ebp
ret 8
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsSetValue]
Function at 0x47b745
Capabilities:
Clear file content

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
mov ebx, dword [ebp + 8]
lea ecx, [ebp - 0x2c]
push esi
push edi
push dword [ebp + 0x10]
mov edi, dword [ebp + 0x14]
push dword [ebp + 0xc]
push ebx
call fcn.0047b6c1
mov eax, dword [ebp - 0x2c]
and eax, dword [ebp - 0x28]
cmp eax, 0xffffffff
je 0x47b8b4
mov eax, dword [ebp - 0x24]
and eax, dword [ebp - 0x20]
cmp eax, 0xffffffff
je 0x47b8b4
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
test ecx, ecx
jl 0x47b869
jg 0x47b7a1
test eax, eax
je 0x47b85f
push 1
push 0x1000
call fcn.00476526
mov esi, eax
pop ecx
pop ecx
test esi, esi
jne 0x47b7c4
push 0xc
pop ebx
mov byte [edi + 0x1c], 1
mov dword [edi + 0x18], ebx
jmp 0x47b856
push 0x8000
push ebx
call fcn.004727f3
pop ecx
pop ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x18]
test eax, eax
jl 0x47b7ed
jg 0x47b7e8
cmp ecx, 0x1000
jb 0x47b7ed
mov ecx, 0x1000
push edi
push ecx
push esi
push ebx
call fcn.00475c08
add esp, 0x10
cmp eax, 0xffffffff
je 0x47b832
mov ecx, dword [ebp - 4]
cdq
sub ecx, eax
mov eax, dword [ebp - 8]
mov dword [ebp - 4], ecx
sbb eax, edx
mov dword [ebp - 8], eax
test eax, eax
jg 0x47b7e8
jl 0x47b819
test ecx, ecx
jne 0x47b7da
push dword [ebp - 0xc]
push ebx
call fcn.004727f3
push esi
call fcn.004750a0
add esp, 0xc
xor ebx, ebx
jmp 0x47b8c2
cmp byte [edi + 0x24], 0
je 0x47b849
cmp dword [edi + 0x20], 5
jne 0x47b849
mov byte [edi + 0x1c], 1
mov dword [edi + 0x18], 0xd
cmp byte [edi + 0x1c], 0
je 0x47b854
mov ebx, dword [edi + 0x18]
jmp 0x47b856
xor ebx, ebx
push esi
call fcn.004750a0
pop ecx
jmp 0x47b8c2
test ecx, ecx
jg 0x47b82b
jl 0x47b869
test eax, eax
jae 0x47b82b
push 0
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ebx
call fcn.00473a36
and eax, edx
add esp, 0x10
cmp eax, 0xffffffff
jne 0x47b889
cmp byte [edi + 0x1c], 0
je 0x47b82b
jmp 0x47b8ba
push ebx
call fcn.004781c8
pop ecx
push eax
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
jne 0x47b82b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0xd
mov byte [edi + 0x24], 1
mov dword [edi + 0x20], eax
pop ebx
mov byte [edi + 0x1c], 1
mov dword [edi + 0x18], ebx
jmp 0x47b8c2
cmp byte [edi + 0x1c], 0
je 0x47b8bf
mov ebx, dword [edi + 0x18]
jmp 0x47b8c2
push 0x16
pop ebx
push 0
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
push dword [ebp - 0x14]
call fcn.00473a36
add esp, 0x10
mov eax, ebx
pop edi
pop esi
pop ebx
leave
ret

Function at 0x47d8b0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x47d8dd
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x47d8dd
mov edx, 0x10b
xor eax, eax
cmp word [ecx + 0x18], dx
sete al
pop ebp
ret
xor eax, eax
pop ebp
ret
Function at 0x407f80
Capabilities:
Packed with generic packer

Disassembly:
pushal
mov esi, section.UPX1
lea edi, [esi - 0x6000]
push edi
or ebp, 0xffffffff
jmp 0x407fa2
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
add ebx, ebx
jne 0x407fa9
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x407f98
mov eax, 1
add ebx, ebx
jne 0x407fbb
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
add ebx, ebx
jae 0x407fb0
jne 0x407fcc
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jae 0x407fb0
xor ecx, ecx
sub eax, 3
jb 0x407fe0
shl eax, 8
mov al, byte [esi]
inc esi
xor eax, 0xffffffff
je 0x408052
mov ebp, eax
add ebx, ebx
jne 0x407feb
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jne 0x407ff8
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
jne 0x40801c
inc ecx
add ebx, ebx
jne 0x408008
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jae 0x407ffd
jne 0x408019
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jae 0x407ffd
add ecx, 2
cmp ebp, 0xfffff300
adc ecx, 1
lea edx, [edi + ebp]
cmp ebp, 0xfffffffc
jbe 0x40803c
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
dec ecx
jne 0x40802d
jmp 0x407f9e
mov eax, dword [edx]
add edx, 4
mov dword [edi], eax
add edi, 4
sub ecx, 4
ja 0x40803c
add edi, ecx
jmp 0x407f9e
pop esi
mov edi, esi
mov ecx, 0x8f
mov al, byte [edi]
inc edi
sub al, 0xe8
cmp al, 1
ja 0x40805a
cmp byte [edi], 0
jne 0x40805a
mov eax, dword [edi]
mov bl, byte [edi + 4]
shr ax, 8
rol eax, 0x10
xchg ah, al
sub eax, edi
sub bl, 0xe8
add eax, esi
mov dword [edi], eax
add edi, 5
mov al, bl
loop 0x40805f
lea edi, [esi + 0x5000]
mov eax, dword [edi]
or eax, eax
je 0x4080d7
mov ebx, dword [edi + 4]
lea eax, [eax + esi + 0x8d64]
add ebx, esi
push eax
add edi, 8
call dword [esi + 0x8ddc]
xchg ebp, eax
mov al, byte [edi]
inc edi
or al, al
je 0x40808c
mov ecx, edi
jns 0x4080bb
movzx eax, word [edi]
inc edi
push eax
inc edi
mov ecx, 0xaef24857
push edi
dec eax
repne scasb al, byte es:[edi]
push ebp
call dword [esi + 0x8de4]
or eax, eax
je 0x4080d1
mov dword [ebx], eax
add ebx, 4
jmp 0x4080a9
call dword [esi + 0x8de0]
mov ebp, dword [esi + 0x8de8]
lea edi, [esi - 0x1000]
mov ebx, 0x1000
push eax
push esp
push 4
push ebx
push edi
call ebp
lea eax, [edi + 0x217]
and byte [eax], 0x7f
and byte [eax + 0x28], 0x7f
pop eax
push eax
push esp
push eax
push ebx
push edi
call ebp
pop eax
popal
lea eax, [esp - 0x80]
push 0
cmp esp, eax
jne 0x40810b
sub esp, 0xffffff80
jmp 0x402130

Function at 0x430006
Capabilities:
Encode data using xor

Disassembly:
call 0x43000c
pop eax
nop
nop
nop
nop
nop
add eax, 0x403daa
nop
sub eax, 0x403d50
nop
mov ebx, dword [eax]
nop
nop
nop
nop
nop
nop
mov ecx, dword [eax + 4]
nop
nop
nop
mov edx, dword [eax + 8]
nop
nop
nop
nop
nop
xor dword [ebx], edx
nop
add ebx, 4
nop
nop
cmp ebx, ecx
nop
nop
nop
nop
nop
nop
jl 0x430030
nop
nop
nop
nop
add eax, 0xc
nop
nop
cmp dword [eax], 0
nop
nop
nop
jne 0x43001e
nop
nop
nop
nop
nop
nop
nop
popal
nop
jmp loc.00401219
Function at 0x401ec8
Capabilities:
Query environment variable

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff004
push eax
add esp, 0xfffffffc
push ebx
push esi
mov dword [ebp - 4], ecx
mov ebx, eax
cmp dword [ebp + 8], 0
je 0x401ee8
mov eax, dword [ebp + 8]
mov byte [eax], 0
test ebx, ebx
je 0x401ef1
cmp byte [ebx], 0
jne 0x401ef5
xor eax, eax
jmp 0x401f74
xor esi, esi
jmp 0x401f36
inc ebx
xor ecx, ecx
mov cl, al
cmp ecx, 0x3d
jne 0x401f1d
cmp dword [ebp - 4], 0
je 0x401f1d
test esi, esi
jne 0x401f1d
cmp dword [ebp + 8], 0
je 0x401f19
mov eax, dword [ebp + 8]
mov byte [eax], 1
mov esi, edx
jmp 0x401f36
xor ecx, ecx
mov cl, al
cmp ecx, 0xd
je 0x401f2b
cmp ecx, 0xa
jne 0x401f33
cmp ecx, 0xd
jne 0x401f3c
inc ebx
jmp 0x401f3c
mov byte [edx], al
inc edx
mov al, byte [ebx]
test al, al
jne 0x401ef9
mov byte [edx], 0
cmp dword [ebp - 4], 0
je 0x401f72
mov edx, dword [ebp - 4]
test esi, esi
mov byte [edx], 0
je 0x401f72
push 0x1000
lea eax, [ebp - 0x1004]
push eax
push esi
call sub.KERNEL32.DLL_ExpandEnvironmentStringsA
lea edx, [ebp - 0x1004]
mov eax, dword [ebp - 4]
call fcn.0040c590
mov byte [esi], 0
mov eax, ebx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
Function at 0x401f7c
Capabilities:
Create process on windows

Disassembly:
push ebx
push esi
add esp, 0xfffff7c0
mov esi, eax
mov al, byte [0x413370]
test al, al
mov byte [esp], dl
je 0x401fb3
xor edx, edx
mov dl, al
cmp edx, 0x20
je 0x401fa7
mov edx, 0x4121dd
mov eax, esi
call fcn.0040c664
mov edx, 0x413370
mov eax, esi
call fcn.0040c664
lea eax, [esp + 4]
mov ecx, 0x3c
xor edx, edx
call fcn.0040c490
mov dword [esp + 4], 0x3c
mov dword [esp + 8], 0x5c0
xor eax, eax
mov al, byte [esi]
cmp eax, 0x22
jne 0x401fe1
lea edx, [esi + 1]
jmp 0x401fe3
mov edx, esi
mov dword [esp + 0x14], edx
xor eax, eax
jmp 0x402036
xor ecx, ecx
mov cl, dl
cmp ecx, 0x22
jne 0x40200d
jmp 0x402006
xor edx, edx
mov dl, byte [esi + eax]
cmp edx, 0x22
jne 0x402006
mov byte [esi + eax], 0x20
jmp 0x40200d
inc eax
cmp byte [esi + eax], 0
jne 0x401ff6
xor edx, edx
mov dl, byte [esi + eax]
cmp edx, 0x20
je 0x402022
xor ecx, ecx
mov cl, byte [esi + eax + 1]
cmp ecx, 0x2f
jne 0x402035
cmp edx, 0x20
jne 0x40202b
mov byte [esi + eax], 0
lea eax, [eax + esi + 1]
mov dword [esp + 0x18], eax
jmp 0x40203d
inc eax
mov dl, byte [esi + eax]
test dl, dl
jne 0x401feb
mov dword [esp + 0x20], 1
mov eax, dword [esp + 0x14]
call fcn.0040c510
cmp eax, 4
jle 0x402070
mov edx, str..inf
add eax, dword [esp + 0x14]
add eax, 0xfffffffc
call fcn.0040c618
test eax, eax
jne 0x402070
mov dword [esp + 0x10], 0x4121e4
xor edx, edx
mov eax, dword [esp + 0x14]
call fcn.004055b8
mov ebx, eax
test bl, bl
je 0x402096
lea edx, [esp + 0x40]
mov eax, dword [esp + 0x14]
call fcn.00405684
lea ecx, [esp + 0x40]
mov dword [esp + 0x14], ecx
cmp byte [esp], 0
je 0x4020d7
test bl, bl
jne 0x4020d7
lea eax, [esp + 0x440]
mov edx, dword [esp + 0x14]
call fcn.0040c590
mov edx, str..exe
lea eax, [esp + 0x440]
call fcn.0040c664
lea eax, [esp + 0x440]
xor edx, edx
call fcn.004055b8
test al, al
je 0x402165
lea ecx, [esp + 4]
push ecx
call sub.SHELL32.DLL_ShellExecuteExA
test eax, eax
setne al
and eax, 1
test al, al
jne 0x40210b
and dword [esp + 8], 0xfffffbff
mov dword [esp + 0x14], esi
lea edx, [esp + 4]
push edx
call sub.SHELL32.DLL_ShellExecuteExA
test eax, eax
setne al
and eax, 1
test al, al
je 0x402165
cmp byte [0x412041], 0
jne 0x40211e
cmp byte [esp], 0
je 0x402129
push 0xffffffffffffffff
push dword [esp + 0x40]
call sub.KERNEL32.DLL_WaitForSingleObject
push dword [esp + 0x3c]
call sub.KERNEL32.DLL_CloseHandle
cmp byte [0x412041], 0
je 0x40214d
cmp byte [esp], 0
jne 0x40214d
push 0x1b58
call sub.KERNEL32.DLL_Sleep
jmp 0x402165
cmp byte [esp], 0
je 0x40215a
mov edx, 0xc8
jmp 0x40215f
mov edx, 0x3e8
push edx
call sub.KERNEL32.DLL_Sleep
add esp, 0x840
pop esi
pop ebx
ret
Function at 0x40216e
Capabilities:
Delete file
Get common file path
Set current directory

Disassembly:
add esp, 0xfffff7e0
lea eax, [esp + 0x400]
push eax
push 0x400
call sub.KERNEL32.DLL_GetTempPathA
push esp
push 0x400
call sub.KERNEL32.DLL_GetCurrentDirectoryA
lea eax, [esp + 0x400]
call fcn.0040c510
mov ecx, eax
mov edx, esp
lea eax, [esp + 0x400]
call fcn.0040c5e4
test eax, eax
jne 0x402205
push 0x4121f1
call sub.KERNEL32.DLL_SetCurrentDirectoryA
mov eax, esp
call fcn.0040c510
mov byte [esp + eax + 1], 0
lea eax, [esp + 0x800]
mov ecx, 0x1e
xor edx, edx
call fcn.0040c490
mov dword [esp + 0x804], 3
mov word [esp + 0x810], 0x14
mov eax, esp
mov dword [esp + 0x808], eax
lea edx, [esp + 0x800]
push edx
call sub.SHELL32.DLL_SHFileOperationA
add esp, 0x820
ret

Function at 0x402380
Capabilities:
Get geographical location

Disassembly:
add esp, 0xffffff9c
push 0x64
lea eax, [esp + 4]
push eax
push 0xf
push 0x400
call sub.KERNEL32.DLL_GetLocaleInfoA
xor eax, eax
mov al, byte [esp]
add esp, 0x64
ret

Function at 0x4024c4
Capabilities:
Create shortcut via ishelllink

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff9ec
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 4], edx
mov esi, eax
xor ebx, ebx
push 0
call sub.OLE32.DLL_OleInitialize
lea eax, [ebp - 8]
push eax
push 0x412690
push 1
push 0
push 0x4126a0
call sub.OLE32.DLL_CoCreateInstance
test eax, eax
jl 0x4025c3
push esi
mov edx, dword [ebp - 8]
push edx
mov ecx, dword [edx]
call dword [ecx + 0x50]
push edi
mov eax, dword [ebp - 8]
push eax
mov edx, dword [eax]
call dword [edx + 0x1c]
cmp dword [ebp + 0xc], 0
je 0x402527
push 0
push dword [ebp + 0xc]
mov ecx, dword [ebp - 8]
push ecx
mov eax, dword [ecx]
call dword [eax + 0x44]
cmp dword [ebp + 8], 0
je 0x402539
push dword [ebp + 8]
mov edx, dword [ebp - 8]
push edx
mov ecx, dword [edx]
call dword [ecx + 0x2c]
lea eax, [ebp - 0x40c]
mov edx, esi
call fcn.0040c590
lea eax, [ebp - 0x40c]
call fcn.0040518c
cmp byte [ebp - 0x40c], 0
je 0x40256a
lea edx, [ebp - 0x40c]
push edx
mov ecx, dword [ebp - 8]
push ecx
mov eax, dword [ecx]
call dword [eax + 0x24]
lea edx, [ebp - 0xc]
push edx
push 0x4126b0
mov ecx, dword [ebp - 8]
push ecx
mov eax, dword [ecx]
call dword [eax]
test eax, eax
jl 0x4025ba
push 0x104
lea edx, [ebp - 0x614]
push edx
push 0xffffffffffffffff
push dword [ebp - 4]
push 0
push 0
call sub.KERNEL32.DLL_MultiByteToWideChar
push 1
lea ecx, [ebp - 0x614]
push ecx
mov eax, dword [ebp - 0xc]
push eax
mov edx, dword [eax]
call dword [edx + 0x18]
test eax, eax
jl 0x4025b1
mov bl, 1
mov eax, dword [ebp - 0xc]
push eax
mov edx, dword [eax]
call dword [edx + 8]
mov ecx, dword [ebp - 8]
push ecx
mov eax, dword [ecx]
call dword [eax + 8]
call sub.OLE32.DLL_OleUninitialize
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
Function at 0x4025d4
Capabilities:
Get common file path

Disassembly:
push ebx
push esi
add esp, 0xfffffff8
mov esi, edx
mov ebx, eax
push esp
call sub.SHELL32.DLL_SHGetMalloc
lea eax, [esp + 4]
push eax
push esi
push 0
call sub.SHELL32.DLL_SHGetSpecialFolderLocation
push ebx
push dword [esp + 8]
call sub.SHELL32.DLL_SHGetPathFromIDListA
push dword [esp + 4]
mov edx, dword [esp + 4]
push edx
mov ecx, dword [edx]
call dword [ecx + 0x14]
pop ecx
pop edx
pop esi
pop ebx
ret

Function at 0x4033d0
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd4
mov eax, 0x412308
push ebx
push esi
mov esi, 0x413370
call fcn.0040c6bc
call sub.KERNEL32.DLL_GetCommandLineA
mov ebx, eax
test ebx, ebx
je 0x40340a
xor eax, eax
mov al, byte [ebx]
cmp eax, 0x22
jne 0x40340a
lea eax, [ebx + 1]
mov edx, 0x22
call fcn.0040c520
mov ebx, eax
test ebx, ebx
je 0x40345f
mov edx, 0x412109
mov eax, ebx
call fcn.0040c564
mov ebx, eax
test eax, eax
je 0x403429
mov eax, esi
mov edx, ebx
call fcn.0040c590
xor eax, eax
jmp 0x403459
xor edx, edx
mov dl, byte [esi + eax]
cmp edx, 0x2d
je 0x40343c
cmp edx, 0x2f
jne 0x403458
xor edx, edx
mov dl, byte [esi + eax + 1]
cmp edx, 0x73
je 0x40344c
cmp edx, 0x53
jne 0x403458
mov dword [0x41204c], 1
jmp 0x40345f
inc eax
cmp byte [esi + eax], 0
jne 0x40342d
push 0
call sub.KERNEL32.DLL_GetModuleHandleA
mov ebx, eax
push 0x64
mov dword [0x413eec], ebx
mov dword [0x413ee8], ebx
push ebx
call sub.USER32.DLL_LoadIconA
mov dword [0x413770], eax
mov word [ebp - 0x1c], 8
lea eax, [ebp - 8]
call fcn.0040480c
inc dword [ebp - 0x10]
mov word [ebp - 0x1c], 0x14
push 0x400
push 0x412f70
push 0
call sub.KERNEL32.DLL_GetModuleFileNameA
mov edx, 0x412f70
mov eax, 0x413ef0
call fcn.00403ec0
call fcn.0040100c
cmp dword [0x412048], 0
jle 0x4034d0
mov eax, dword [0x412044]
call fcn.0040c414
push dword [0x413770]
call sub.GDI32.DLL_DeleteObject
dec dword [ebp - 0x10]
lea eax, [ebp - 8]
mov edx, 2
call fcn.004048c4
mov word [ebp - 0x1c], 0
cmp dword [0x413edc], 0
jne 0x403512
cmp dword [0x4126c8], 0
je 0x403512
mov eax, 0x413edc
mov edx, 0xff
call fcn.00407434
mov dword [0x4126c8], 2
push dword [0x413edc]
call sub.KERNEL32.DLL_ExitProcess
mov ecx, dword [ebp - 0x2c]
mov dword fs:[0], ecx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x404474
Capabilities:
Get graphical window text

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff7ac
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
lea eax, [ebp - 0x10]
push eax
mov esi, edx
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
lea ecx, [ebp - 0xc]
call fcn.00404670
mov ebx, eax
lea eax, [ebp - 0x34]
push eax
push esi
call sub.USER32.DLL_GetWindowRect
lea edx, [ebp - 0x44]
push edx
push esi
call sub.USER32.DLL_GetClientRect
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [ebp - 0x34]
inc ecx
sub ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x14], ecx
mov eax, dword [ebp - 0x28]
sub eax, dword [ebp - 0x30]
inc eax
sub eax, dword [ebp - 0x38]
test bl, bl
mov dword [ebp - 0x18], eax
je 0x40450b
cmp byte [ebp + 8], 0
jne 0x40450b
mov eax, dword [ebp - 0x3c]
mov ecx, 0x64
imul dword [ebp - 0xc]
cdq
idiv ecx
mov ecx, eax
mov eax, dword [ebp - 0x38]
imul dword [ebp - 0x10]
cdq
mov edi, 0x64
idiv edi
add ecx, dword [ebp - 0x14]
add eax, dword [ebp - 0x18]
push 0x206
push eax
push ecx
push 0
push 0
push 0
push esi
call main
cmp byte [ebp + 8], 0
jne 0x404549
push 0x400
lea eax, [ebp - 0x444]
push eax
push esi
call sub.USER32.DLL_GetWindowTextA
push 1
push dword [ebp - 8]
lea ecx, [ebp - 0x444]
lea edx, [ebp - 0x444]
mov eax, dword [ebp - 4]
call fcn.004042f8
lea edx, [ebp - 0x444]
push edx
push esi
call sub.USER32.DLL_SetWindowTextA
push 8
call sub.USER32.DLL_GetSystemMetrics
sub dword [ebp - 0x18], eax
push 5
push esi
call sub.USER32.DLL_GetWindow
mov edi, eax
mov dword [ebp - 0x1c], edi
xor esi, esi
jmp 0x404657
push 0x400
lea eax, [ebp - 0x844]
push eax
push edi
call sub.USER32.DLL_GetWindowTextA
cmp byte [ebp - 0x844], 0
je 0x4045a8
push 1
push dword [ebp - 8]
lea ecx, [ebp - 0x844]
lea edx, [ebp - 0x844]
mov eax, dword [ebp - 4]
call fcn.004042f8
lea edx, [ebp - 0x844]
push edx
push edi
call sub.USER32.DLL_SetWindowTextA
test bl, bl
je 0x404647
lea ecx, [ebp - 0x854]
push ecx
push edi
call sub.USER32.DLL_GetWindowRect
mov eax, dword [ebp - 0x854]
sub eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x14]
sar edx, 1
jns 0x4045d0
adc edx, 0
sub eax, edx
mov ecx, 0x64
imul dword [ebp - 0xc]
cdq
idiv ecx
mov ecx, eax
mov eax, dword [ebp - 0x850]
sub eax, dword [ebp - 0x30]
sub eax, dword [ebp - 0x18]
imul dword [ebp - 0x10]
cdq
push ecx
mov ecx, 0x64
idiv ecx
pop ecx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x84c]
sub eax, dword [ebp - 0x854]
inc eax
imul dword [ebp - 0xc]
cdq
push ecx
mov ecx, 0x64
idiv ecx
pop ecx
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x848]
sub eax, dword [ebp - 0x850]
inc eax
imul dword [ebp - 0x10]
cdq
push ecx
mov ecx, 0x64
idiv ecx
pop ecx
push 0x204
push eax
push dword [ebp - 0x24]
push dword [ebp - 0x20]
push ecx
push 0
push edi
call main
push 2
push edi
call sub.USER32.DLL_GetWindow
mov edi, eax
cmp edi, dword [ebp - 0x1c]
je 0x404667
inc esi
test edi, edi
je 0x404667
cmp esi, 0x200
jl 0x404567
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
Function at 0x405410
Capabilities:
Check if file exists
Create directory

Disassembly:
push ebx
push esi
push edi
mov edi, ecx
mov ebx, edx
mov esi, eax
call fcn.00404764
test eax, eax
je 0x405436
test ebx, ebx
je 0x405436
cmp word [ebx], 0
je 0x405436
push 0
push ebx
call sub.KERNEL32.DLL_CreateDirectoryW
jmp 0x40543e
push 0
push esi
call sub.KERNEL32.DLL_CreateDirectoryA
test eax, eax
je 0x405451
mov ecx, edi
mov edx, ebx
mov eax, esi
call fcn.00405644
xor eax, eax
jmp 0x40546c
call sub.KERNEL32.DLL_GetLastError
cmp eax, 2
je 0x405460
cmp eax, 3
jne 0x405467
mov eax, 2
jmp 0x40546c
mov eax, 1
pop edi
pop esi
pop ebx
ret

Function at 0x4055b8
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebx
push esi
mov ebx, edx
mov esi, eax
call fcn.00404764
test eax, eax
je 0x4055e3
test ebx, ebx
je 0x4055e3
cmp word [ebx], 0
je 0x4055e3
push ebx
call sub.KERNEL32.DLL_GetFileAttributesW
cmp eax, 0xffffffff
setne al
and eax, 1
pop esi
pop ebx
ret
push esi
call sub.KERNEL32.DLL_GetFileAttributesA
cmp eax, 0xffffffff
setne al
and eax, 1
pop esi
pop ebx
ret

Function at 0x405618
Capabilities:
Get file attributes

Disassembly:
push ebx
push esi
mov ebx, edx
mov esi, eax
call fcn.00404764
test eax, eax
je 0x40563a
test ebx, ebx
je 0x40563a
cmp word [ebx], 0
je 0x40563a
push ebx
call sub.KERNEL32.DLL_GetFileAttributesW
pop esi
pop ebx
ret
push esi
call sub.KERNEL32.DLL_GetFileAttributesA
pop esi
pop ebx
ret

Function at 0x405644
Capabilities:
Set file attributes

Disassembly:
push ebx
push esi
push edi
mov esi, ecx
mov ebx, edx
mov edi, eax
call fcn.00404764
test eax, eax
je 0x405671
test ebx, ebx
je 0x405671
cmp word [ebx], 0
je 0x405671
push esi
push ebx
call sub.KERNEL32.DLL_SetFileAttributesW
test eax, eax
setne al
and eax, 1
jmp 0x405680
push esi
push edi
call sub.KERNEL32.DLL_SetFileAttributesA
test eax, eax
setne al
and eax, 1
pop edi
pop esi
pop ebx
ret

Function at 0x406d10
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
mov esi, 0x4137f8
push edi
push ebp
mov ebp, edx
cmp dword [esi + 4], 0
mov edi, ecx
mov ebx, eax
jne 0x406d2a
call fcn.00406cd8
mov eax, ebp
cmp edi, 8
jb 0x406db5
xor ebx, dword [eax]
xor edx, edx
mov dl, bl
sub edi, 8
shr ebx, 8
mov ecx, dword [esi + edx*4]
xor ecx, ebx
xor edx, edx
mov ebx, ecx
mov dl, bl
shr ebx, 8
mov ecx, dword [esi + edx*4]
xor ecx, ebx
xor edx, edx
mov ebx, ecx
mov dl, bl
shr ebx, 8
mov ecx, dword [esi + edx*4]
xor ecx, ebx
xor edx, edx
mov ebx, ecx
mov dl, bl
shr ebx, 8
mov ecx, dword [esi + edx*4]
xor ecx, ebx
xor edx, edx
mov ebx, ecx
xor ebx, dword [eax + 4]
add eax, 8
mov dl, bl
shr ebx, 8
mov ecx, dword [esi + edx*4]
xor ecx, ebx
xor edx, edx
mov ebx, ecx
mov dl, bl
shr ebx, 8
mov ecx, dword [esi + edx*4]
xor ecx, ebx
xor edx, edx
mov ebx, ecx
mov dl, bl
shr ebx, 8
mov ecx, dword [esi + edx*4]
xor ecx, ebx
xor edx, edx
mov ebx, ecx
mov dl, bl
shr ebx, 8
mov ecx, dword [esi + edx*4]
xor ecx, ebx
cmp edi, 8
mov ebx, ecx
jae 0x406d35
xor edx, edx
jmp 0x406dcf
mov ecx, ebx
xor cl, byte [eax + edx]
and ecx, 0xff
shr ebx, 8
mov ecx, dword [esi + ecx*4]
xor ecx, ebx
mov ebx, ecx
inc edx
cmp edi, edx
ja 0x406db9
mov eax, ebx
pop ebp
pop edi
pop esi
pop ebx
ret