joyce8/EMBER2024-capa huggingface dataset:
Function at 0x4f33d0
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x154
mov eax, dword [0x56d370]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, ecx
mov ecx, dword [ebp + 8]
cmp byte [esi + 0x58], 0
jne 0x4f3459
lea eax, [esi + 0x40]
push eax
push 0
push dword [ebp + 0xc]
push ecx
push dword [esi + 0x38]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x4f343f
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e5
jne 0x4f3476
cmp byte [esi + 0x30], 0
mov byte [esi + 0x58], 1
je 0x4f3430
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0047fc61
mov esp, ebp
pop ebp
ret 8
push dword [esi + 0x2c]
lea ecx, [esi + 0x54]
call fcn.004f1e00
test al, al
je 0x4f3481
push 1
mov ecx, esi
call fcn.004f3210
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.0047fc61
mov esp, ebp
pop ebp
ret 8
push 0x43
push str.c:ent_slave_rootworkspace_vncconnect_buildsclients_vnc_7.12.xlabelcon_windows_64_rvcore_baseoswinhandleinstream.cxx
push str._pending
lea ecx, [ebp - 0x154]
call fcn.00428e20
push eax
call fcn.00428ea0
push eax
push 0x54ab60
call fcn.004f3540
push str.Timed_out
lea ecx, [ebp - 0x148]
call fcn.004f3030
push 0x569c14
lea eax, [ebp - 0x148]
push eax
call fcn.00481150
int3

Function at 0x4f3d80
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x15c
mov eax, dword [0x56d370]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, ecx
test edi, edi
je 0x4f3e88
cmp dword [esi + 0x58], 0
jne 0x4f3e88
xor eax, eax
mov dword [ebp - 0x158], ebx
test edi, edi
lea ecx, [esi + 0x4c]
push 0
cmovg eax, edi
mov dword [ebp - 0x15c], eax
lea eax, [ebp - 0x15c]
push eax
call fcn.00417f40
lea eax, [esi + 0x34]
push eax
push 0
push edi
push ebx
push dword [esi + 0x2c]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x4f3e70
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
cmp eax, 0x3e5
je 0x4f3e70
push 0x148
call fcn.0047f514
mov edi, eax
add esp, 4
mov dword [ebp - 0x158], edi
test edi, edi
je 0x4f3e26
call ebx
push eax
push 0x54ace4
mov ecx, edi
call fcn.00402910
jmp 0x4f3e28
xor eax, eax
mov ecx, dword [esi + 0x5c]
mov dword [esi + 0x5c], eax
test ecx, ecx
je 0x4f3e38
mov eax, dword [ecx]
push 1
call dword [eax]
push dword [ebp + 0x10]
mov ecx, esi
call fcn.004f3b20
mov eax, dword [esi + 0x5c]
add eax, 4
push eax
push 0x5299c0
push 0x57400c
call fcn.004172b0
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0047fc61
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [ebp - 4]
mov eax, edi
mov dword [esi + 0x58], edi
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.0047fc61
mov esp, ebp
pop ebp
ret 0xc
push 0x67
push str.c:ent_slave_rootworkspace_vncconnect_buildsclients_vnc_7.12.xlabelcon_windows_64_rvcore_baseoswinhandleoutstream.cxx
push str.length___outstandingWrite__
lea ecx, [ebp - 0x154]
call fcn.00428e20
push eax
call fcn.00428ea0
int3
Function at 0x4f5780
Capabilities:
Hash data using sha1

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0x67452301
mov dword [eax + 0xc], 0xefcdab89
mov dword [eax + 0x10], 0x98badcfe
mov dword [eax + 0x14], 0x10325476
mov dword [eax + 0x18], 0xc3d2e1f0
xor eax, eax
pop ebp
ret
Function at 0x4f6610
Capabilities:
Hash data using sha224
Hash data using sha256

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
mov eax, dword [ebp + 8]
mov edx, 0x367cd507
mov ecx, dword [ebp + 0xc]
test ecx, ecx
push ebx
push esi
mov dword [eax], 0
mov ebx, 0x1f83d9ab
mov dword [eax + 4], 0
mov esi, 0x510e527f
mov eax, 0xbb67ae85
mov dword [ebp - 4], 0xc1059ed8
cmovne eax, edx
mov ecx, 0xa54ff53a
mov dword [ebp - 8], eax
mov edx, 0x3070dd17
mov eax, 0x3c6ef372
cmovne eax, edx
mov edx, 0x5be0cd19
mov dword [ebp - 0xc], eax
mov eax, 0x64f98fa7
cmovne ebx, eax
mov eax, 0x68581511
push edi
mov edi, 0x9b05688c
mov dword [ebp - 0x10], ebx
mov ebx, dword [ebp + 0xc]
cmovne edi, eax
mov eax, 0xffc00b31
cmovne esi, eax
mov eax, 0xbefa4fa4
cmovne edx, eax
test ebx, ebx
mov ebx, dword [ebp + 8]
mov eax, 0xf70e5939
cmovne ecx, eax
mov eax, 0x6a09e667
cmovne eax, dword [ebp - 4]
mov dword [ebx + 8], eax
mov eax, dword [ebp - 8]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 0xc]
mov dword [ebx + 0x10], eax
mov eax, ebx
mov ebx, dword [ebp - 0x10]
mov dword [eax + 0x14], ecx
mov ecx, dword [ebp + 0xc]
mov dword [eax + 0x18], esi
mov dword [eax + 0x1c], edi
mov dword [eax + 0x20], ebx
pop edi
mov dword [eax + 0x24], edx
pop esi
mov dword [eax + 0x68], ecx
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x4f80c0
Capabilities:
Hash data using sha224
Hash data using sha256

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
sub esp, 0x28
cmp dword [ebp + 0xc], 0
push ebx
mov dword [eax], 0
mov dword [eax + 4], 0
push esi
mov dword [eax + 8], 0
push edi
mov dword [eax + 0xc], 0
jne 0x4f8157
mov edx, 0x137e2179
mov dword [ebp - 0x1c], 0x2b3e6c1f
mov esi, 0x5be0cd19
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], esi
mov edi, 0xfb41bd6b
mov ebx, 0x1f83d9ab
mov dword [ebp - 0x20], 0x9b05688c
mov dword [ebp - 0x18], 0x510e527f
mov ecx, 0xade682d1
mov dword [ebp - 0x10], 0x5f1d36f1
mov esi, 0xfe94f82b
mov dword [ebp - 0x14], 0xa54ff53a
mov edx, 0xf3bcc908
mov dword [ebp - 0xc], 0x3c6ef372
mov dword [ebp - 4], 0x84caa73b
mov dword [ebp - 8], 0xbb67ae85
mov dword [ebp + 8], 0x6a09e667
jmp 0x4f81bf
mov edx, 0xbefa4fa4
mov dword [ebp - 0x1c], 0x68581511
mov esi, 0x47b5481d
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], esi
mov edi, 0x64f98fa7
mov ebx, 0xdb0c2e0d
mov dword [ebp - 0x20], 0x8eb44a87
mov ecx, 0xffc00b31
mov dword [ebp - 0x18], 0x67332667
mov dword [ebp - 0x10], 0xf70e5939
mov esi, 0x3070dd17
mov dword [ebp - 0x14], 0x152fecd8
mov edx, 0xc1059ed8
mov dword [ebp - 0xc], 0x9159015a
mov dword [ebp - 4], 0x367cd507
mov dword [ebp - 8], 0x629a292a
mov dword [ebp + 8], 0xcbbb9d5d
mov dword [eax + 0x10], edx
mov edx, dword [ebp + 8]
mov dword [eax + 0x14], edx
mov edx, dword [ebp - 4]
mov dword [eax + 0x18], edx
mov edx, dword [ebp - 8]
mov dword [eax + 0x1c], edx
mov dword [eax + 0x20], esi
mov esi, dword [ebp - 0xc]
mov edx, dword [ebp - 0x24]
mov dword [eax + 0x24], esi
mov esi, dword [ebp - 0x10]
mov dword [eax + 0x28], esi
mov esi, dword [ebp - 0x14]
mov dword [eax + 0x2c], esi
mov esi, dword [ebp - 0x28]
mov dword [eax + 0x30], ecx
mov ecx, dword [ebp - 0x18]
mov dword [eax + 0x34], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 0x38], ecx
mov ecx, dword [ebp - 0x20]
mov dword [eax + 0x3c], ecx
mov ecx, dword [ebp + 0xc]
mov dword [eax + 0x40], edi
mov dword [eax + 0x44], ebx
mov dword [eax + 0x48], edx
mov dword [eax + 0x4c], esi
pop edi
pop esi
mov dword [eax + 0xd0], ecx
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x50eef0
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
pop ebp
jmp fcn.0050f000

Function at 0x50f280
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
pop ebp
jmp fcn.0050f350
Function at 0x511850
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 8]
push esi
call fcn.00511c10
add esp, 4
test eax, eax
je 0x51186c
mov eax, 0xfffffffe
pop esi
pop ebp
ret
push edi
mov edi, dword [esi + 0x1c]
mov dword [esi + 0x14], 0
mov dword [esi + 8], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x2c], 2
mov ecx, dword [edi + 0x18]
mov eax, dword [edi + 8]
mov dword [edi + 0x14], 0
mov dword [edi + 0x10], eax
test ecx, ecx
jns 0x5118a5
neg ecx
mov dword [edi + 0x18], ecx
cmp ecx, 2
mov eax, 0x2a
push 0
mov edx, 0x39
cmove eax, edx
push 0
mov dword [edi + 4], eax
push 0
jne 0x5118c7
call fcn.0050f280
jmp 0x5118cc
call fcn.0050eef0
add esp, 0xc
mov dword [esi + 0x30], eax
mov dword [edi + 0x28], 0xfffffffe
push edi
call fcn.00513590
mov esi, dword [esi + 0x1c]
xor edx, edx
mov eax, dword [esi + 0x2c]
mov ecx, dword [esi + 0x4c]
add eax, eax
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x44]
mov word [eax + ecx*2 - 2], dx
mov eax, dword [esi + 0x4c]
lea eax, [eax*2 - 2]
push eax
push edx
push dword [esi + 0x44]
call fcn.00481640
mov eax, dword [esi + 0x84]
add esp, 0x10
lea ecx, [eax + eax*2]
movzx eax, word [ecx*4 + 0x54fbc2]
mov dword [esi + 0x80], eax
movzx eax, word [ecx*4 + 0x54fbc0]
mov dword [esi + 0x8c], eax
movzx eax, word [ecx*4 + 0x54fbc4]
mov dword [esi + 0x90], eax
xor eax, eax
movzx ecx, word [ecx*4 + 0x54fbc6]
pop edi
mov dword [esi + 0x7c], ecx
mov dword [esi + 0x6c], 0
mov dword [esi + 0x5c], 0
mov dword [esi + 0x74], 0
mov dword [esi + 0x16b4], 0
mov dword [esi + 0x78], 2
mov dword [esi + 0x60], 2
mov dword [esi + 0x68], 0
mov dword [esi + 0x48], 0
pop esi
pop ebp
ret
Function at 0x100011f2
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
xor ecx, ecx
push edi
mov edi, dword [ebp + 8]
mov edx, ecx
movzx eax, byte [edi + edx]
shl eax, 8
push 8
xor ecx, eax
pop ebx
lea eax, [ecx + ecx]
mov esi, eax
xor esi, 0x8005
test ecx, 0x8000
cmove esi, eax
mov ecx, esi
sub ebx, 1
jne 0x1000120b
inc edx
cmp edx, 0x14
jb 0x100011ff
pop edi
mov ax, si
pop esi
pop ebx
pop ebp
ret

Function at 0x100012c5
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
push edi
push 5
lea edi, [ebp - 0x18]
pop ebx
call sub.msvcrt.dll_rand
movzx esi, al
shl esi, 8
call sub.msvcrt.dll_rand
movzx eax, al
or eax, esi
mov dword [edi], eax
lea edi, [edi + 4]
sub ebx, 1
jne 0x100012d4
mov eax, dword [ebp - 0x18]
lea edi, [ebp - 0x18]
and eax, 0xfff
or eax, 0x3000
xor bl, bl
mov dword [ebp - 0x18], eax
mov esi, dword [edi]
mov ecx, esi
shr ecx, 0xc
mov edx, esi
and cl, 0xf
shr edx, 8
mov al, cl
and dl, 0xf
and al, 7
shr cl, 3
add al, al
add al, cl
movzx ecx, al
mov al, dl
and al, 1
shr dl, 1
shl al, 3
add al, dl
movzx eax, al
xor ecx, eax
mov eax, esi
shr eax, 4
and esi, 0xfff0
and eax, 0xf
xor ecx, eax
movzx eax, bl
xor ecx, eax
or ecx, esi
inc bl
mov dword [edi], ecx
lea edi, [edi + 4]
cmp bl, 5
jb 0x10001308
pop edi
pop esi
lea eax, [ebp - 0x18]
pop ebx
push eax
call fcn.100011f2
movzx eax, ax
push eax
push dword [ebp - 8]
push dword [ebp - 0xc]
push dword [ebp - 0x10]
push dword [ebp - 0x14]
push dword [ebp - 0x18]
push str._04X__04X__04X__04X__04X__04X
push dword [ebp + 8]
call sub.msvcrt.dll_sprintf
add esp, 0x24
leave
ret

Function at 0x1000142a
Capabilities:
Hash data using sha1

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [eax + 8], 0x67452301
mov dword [eax + 0xc], 0xefcdab89
mov dword [eax + 0x10], 0x98badcfe
mov dword [eax + 0x14], 0x10325476
mov dword [eax + 0x18], 0xc3d2e1f0
mov dword [eax + 0x1c], ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
xor eax, eax
pop ebp
ret
Function at 0x401020
Capabilities:
Create directory

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, eax
push ebx
sub esp, 0x1c
mov dword [esp], eax
call sym._PathSkipRootW_4
mov edi, dword [sym.imp.kernel32.dll_CreateDirectoryW]
sub esp, 4
test eax, eax
je 0x401098
mov ebx, eax
movzx eax, word [eax]
mov edi, dword [sym.imp.kernel32.dll_CreateDirectoryW]
test ax, ax
jne 0x401064
jmp 0x401098
movzx eax, word [ebx + 2]
add ebx, 2
test ax, ax
je 0x401098
cmp ax, 0x5c
jne 0x401058
xor eax, eax
add ebx, 2
mov word [ebx - 2], ax
mov dword [esp + 4], 0
mov dword [esp], esi
call edi
mov edx, 0x5c
mov word [ebx - 2], dx
movzx eax, word [ebx]
sub esp, 8
test ax, ax
jne 0x401064
lea esi, [esi]
mov dword [esp + 4], 0
mov dword [esp], esi
call edi
mov edx, eax
sub esp, 8
mov eax, 1
test edx, edx
jne 0x4010c6
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0xb7
sete al
movzx eax, al
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret

Function at 0x401590
Capabilities:
Get process heap flags
Terminate process

Disassembly:
push ebp
mov edx, eax
mov eax, dword fs:[0x18]
mov ebp, esp
sub esp, 0x18
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
sub esp, 0xc
test eax, eax
je 0x4015c2
leave
ret
test byte [0x40c000], 2
jne 0x4015d8
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]
mov dword [esp + 0xc], str.out_of_memory_n
mov dword [esp + 8], global___func__.3
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x4015cb
Function at 0x401a20
Capabilities:
Check if process is running under wine
Set registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, edx
push ebx
mov ebx, eax
lea eax, [ebp - 0x1c]
sub esp, 0x3c
mov dword [esp + 8], eax
mov dword [esp + 4], str.SoftwareWineMenuFiles
mov dword [esp], 0x80000001
call sym._RegCreateKeyW_12
sub esp, 0xc
test eax, eax
jne 0x401ab0
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x401aba
cmp word [esi], 0
mov eax, esi
je 0x401acd
nop
add eax, 2
cmp word [eax], 0
jne 0x401a60
sub eax, esi
add eax, 2
mov dword [esp + 0x10], esi
mov dword [esp + 4], ebx
mov dword [esp], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
call sym._RegSetValueExW_24
sub esp, 0x18
mov ebx, eax
mov dword [esp], edi
call sym._RegCloseKey_4
mov eax, ebx
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword fs:[0x18]
mov dword [edx + 0x34], eax
mov eax, dword fs:[0x18]
mov ebx, dword [eax + 0x34]
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 2
jmp 0x401a6e

Function at 0x401b90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, eax
push esi
xor esi, esi
push ebx
mov ebx, edx
sub esp, 0x3c
movzx edx, word [edx]
test dx, dx
je 0x401bf2
mov dword [ebp - 0x20], edi
lea esi, [ebx + 2]
xor eax, eax
mov edi, ebx
lea esi, [esi]
mov dword [ebp - 0x1c], esi
mov ecx, 0x10
mov esi, eax
shr ax, 1
xor esi, edx
mov ebx, eax
xor bx, 0xa001
and esi, 1
cmovne eax, ebx
shr dx, 1
sub ecx, 1
jne 0x401bc0
mov esi, dword [ebp - 0x1c]
movzx edx, word [esi]
add esi, 2
test dx, dx
jne 0x401bb8
mov ebx, edi
mov edi, dword [ebp - 0x20]
movzx esi, ax
mov edx, dword [sym.imp.ucrtbase.dll_wcsrchr]
mov dword [esp], ebx
mov dword [esp + 4], 0x5c
mov dword [ebp - 0x1c], edx
call edx
mov dword [esp + 4], 0x2e
test eax, eax
lea ecx, [eax + 2]
cmovne ebx, ecx
mov dword [esp], ebx
mov edx, dword [ebp - 0x1c]
call edx
mov edx, eax
sub edx, ebx
sar edx, 1
test eax, eax
je 0x401c4e
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], ebx
mov dword [esp + 4], esi
mov dword [esp + 8], edx
mov dword [esp], str._04X__.s._d
call dbg.heap_wprintf
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp word [ebx], 0
je 0x401c71
mov eax, ebx
lea esi, [esi]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x401c60
sub eax, ebx
sar eax, 1
mov edx, eax
jmp 0x401c2a
xor edx, edx
jmp 0x401c2a
Function at 0x401d30
Capabilities:
Get process heap flags

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x2c
call dbg.wchars_to_utf8_chars
mov dword [ebp - 0x1c], eax
mov edi, eax
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_strlen]
lea eax, [eax + eax*2]
lea eax, [eax + eax + 1]
call dbg.xmalloc
movzx edx, byte [edi]
mov esi, eax
test dl, dl
je 0x401e60
add edi, 1
xor ebx, ebx
lea esi, [esi]
lea eax, [edx - 0x22]
lea ecx, [esi + ebx]
cmp al, 0x1c
ja case.0x401d7d.1
movzx eax, al
jmp dword [eax*4 + 0x40d160]
mov byte [ecx], dl
add ebx, 1
lea esi, [esi]
movzx edx, byte [edi]
add edi, 1
test dl, dl
jne 0x401d70
add ebx, esi
mov ecx, dword [ebp - 0x1c]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [esp + 8], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov byte [ebx], 0
mov eax, esi
sub esp, 0xc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 4], str.gt_
mov dword [esp], ecx
call sym._sprintf
add ebx, eax
jmp 0x401d90
mov dword [esp + 4], str.lt_
mov dword [esp], ecx
call sym._sprintf
add ebx, eax
jmp 0x401d90
mov dword [esp + 4], str.apos_
mov dword [esp], ecx
call sym._sprintf
add ebx, eax
jmp 0x401d90
mov dword [esp + 4], str.amp_
mov dword [esp], ecx
call sym._sprintf
add ebx, eax
jmp 0x401d90
mov dword [esp + 4], str.quot_
mov dword [esp], ecx
call sym._sprintf
add ebx, eax
jmp 0x401d90
mov ebx, eax
jmp 0x401d9c

Function at 0x401e70
Capabilities:
Get process heap flags
Query or enumerate registry key

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, eax
mov eax, 0x800
push ebx
mov edi, dword fs:[0x18]
mov ebx, edi
sub esp, 0x4c
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x1c], 0x800
jmp 0x401ec7
cmp eax, 0xea
jne 0x401f20
shl dword [ebp - 0x1c], 1
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [ebp - 0x1c]
sub esp, 0xc
call dbg.xmalloc
mov dword [esp + 0x1c], 0
mov edi, eax
lea eax, [ebp - 0x1c]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], edi
mov eax, dword [ebp - 0x2c]
mov dword [esp], esi
mov dword [esp + 4], eax
call sym._RegEnumKeyExW_32
sub esp, 0x20
test eax, eax
jne 0x401e98
lea esp, [ebp - 0xc]
mov ebx, edi
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 8], edi
xor ebx, ebx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, ebx
sub esp, 0xc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x401f50
Capabilities:
Get process heap flags

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, eax
push ebx
sub esp, 0x2c
cmp word [eax], 0
je 0x4020c0
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x401f68
sub eax, esi
sar eax, 1
lea eax, [eax*8 + 2]
call dbg.xmalloc
mov ebx, eax
movzx eax, word [esi]
test ax, ax
je 0x4020e0
add esi, 2
xor edx, edx
jmp 0x401fc7
lea ecx, [eax - 9]
cmp cx, 1
jbe 0x401ff8
lea esi, [esi]
add esi, 2
mov word [ebx + edx*2], ax
add edx, 1
movzx eax, word [esi - 2]
test ax, ax
je 0x40207e
lea ecx, [edx + edx]
lea edi, [ebx + ecx]
mov dword [ebp - 0x1c], edi
lea edi, [ebx + ecx + 2]
mov dword [ebp - 0x20], edi
cmp ax, 0x5c
je 0x402040
ja 0x402018
cmp ax, 0x3c
ja 0x402030
cmp ax, 0x1f
jbe 0x401fa0
lea ecx, [eax - 0x20]
mov edi, 0x180007dd
bt edi, ecx
jae 0x401fb0
mov edi, dword [ebp - 0x1c]
mov ecx, 0x5c
add edx, 2
mov word [edi], cx
mov edi, dword [ebp - 0x20]
mov ecx, 0x5c
mov word [edi], cx
jmp 0x401fb0
lea ecx, [eax - 0x60]
cmp cx, 0x1e
ja 0x401fb0
mov edi, 0x50000001
bt edi, ecx
jae 0x401fb0
jmp 0x401ff8
lea ecx, [eax - 0x3e]
cmp cx, 1
ja 0x401fb0
jmp 0x401ff8
mov eax, dword [ebp - 0x1c]
mov edi, 0x5c
add esi, 2
add edx, 4
mov word [eax], di
lea eax, [ebx + ecx + 2]
mov edi, 0x5c
mov word [eax], di
mov eax, 0x5c
mov word [ebx + ecx + 4], ax
mov eax, 0x5c
mov word [ebx + ecx + 6], ax
movzx eax, word [esi - 2]
test ax, ax
jne 0x401fc7
lea eax, [ebx + edx*2]
xor edx, edx
mov word [eax], dx
mov eax, ebx
call dbg.wchars_to_utf8_chars
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov esi, eax
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, esi
sub esp, 0xc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 2
call dbg.xmalloc
mov ebx, eax
movzx eax, word [esi]
test ax, ax
jne 0x401f8f
lea esi, [esi]
nop
mov eax, ebx
jmp 0x402081
Function at 0x402320
Capabilities:
Get process heap flags
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0x1c]
mov esi, ecx
push ebx
mov ebx, edx
sub esp, 0x4c
mov dword [ebp - 0x2c], eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 2
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._RegGetValueW_28
sub esp, 0x1c
test eax, eax
jne 0x4023e4
mov eax, dword [ebp - 0x1c]
call dbg.xmalloc
mov dword [ebp - 0x34], eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], eax
mov dword [ebp - 0x30], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 2
mov dword [esp + 8], esi
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call sym._RegGetValueW_28
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub esp, 0x1c
test eax, eax
jne 0x4023c0
lea esp, [ebp - 0xc]
mov eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
lea esp, [ebp - 0xc]
xor ecx, ecx
pop ebx
mov eax, ecx
pop esi
pop edi
pop ebp
ret
Function at 0x402e90
Capabilities:
Get process heap flags

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0x1c]
mov esi, ecx
push ebx
mov ebx, edx
sub esp, 0x4c
mov dword [ebp - 0x1c], 0
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [ebp - 0x2c], eax
mov dword [esp + 4], eax
mov dword [esp], 0
call sym._AssocQueryStringW_24
sub esp, 0x18
test eax, eax
js 0x402f48
mov ecx, dword [ebp - 0x1c]
lea eax, [ecx + ecx]
call dbg.xmalloc
mov dword [ebp - 0x34], eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
mov dword [ebp - 0x30], eax
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebx
mov eax, dword [ebp - 0x2c]
mov dword [esp], 0
mov dword [esp + 4], eax
call sym._AssocQueryStringW_24
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub esp, 0x18
test eax, eax
js 0x402f20
lea esp, [ebp - 0xc]
mov eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
lea esi, [esi]
xor ecx, ecx
jmp 0x402f16
Function at 0x40ab60
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0x10
mov esi, dword [ebp + 8]
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_strlen]
mov ebx, eax
xor eax, eax
test ebx, ebx
je 0x40abbb
cmp byte [esi + ebx - 1], 0xa
je 0x40ab8f
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x24]
xchg dword [0x4172a4], eax
mov dword [esp], 2
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_fwrite]
lea esp, [ebp - 8]
pop ebx
pop esi
pop ebp
ret