joyce8/EMBER2024-capa huggingface dataset:
Function at 0x4413c0
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
cmp dword [ebp + 8], 0
je 0x4413e1
cmp dword [ebp + 0xc], 0
je 0x4413e1
mov eax, dword [ebp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp eax, 0x1e
jl 0x4413e6
jmp 0x441484
push 0x294
call fcn.00416fb6
add esp, 4
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 4], ecx
push 0x294
push 0
mov edx, dword [ebp - 4]
push edx
call fcn.004177b0
add esp, 0xc
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp - 4]
add eax, 0x190
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
cmp dword [ebp + 0x10], 0
je 0x441458
mov ecx, dword [ebp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp eax, 0x64
jge 0x441458
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp - 4]
add eax, 0x1cc
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
lea ecx, [ebp - 0xc]
push ecx
push 0
mov edx, dword [ebp - 4]
push edx
push 0x4412c0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x441484
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esp, ebp
pop ebp
ret
Function at 0x100028a0
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x2c], 0x4e52454b
mov dword [ebp - 0x28], 0x32334c45
mov dword [ebp - 0x24], 0x6c6c642e
mov byte [ebp - 0x20], 0
mov eax, dword [edi]
mov dword [ebp - 8], edi
movzx esi, word [eax + 0x14]
add esi, eax
mov dword [ebp - 0x1c], 0x74726956
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x18], 0x466c6175
push eax
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x14], 0x656572
push eax
call dword [0x10162de8]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, dword [edi]
xor ecx, ecx
mov dword [ebp - 0xc], eax
mov dword [ebp - 4], 0
cmp cx, word [edi + 6]
jae 0x100029da
add esi, 0x28
push ebx
mov edx, dword [esi + 0x14]
test edx, 0x2000000
je 0x10002930
push 0x4000
push dword [esi]
push dword [esi - 8]
call eax
jmp 0x100029bb
mov ecx, edx
mov eax, edx
shr eax, 0x1e
shr ecx, 0x1d
and eax, 1
and ecx, 1
lea ecx, [eax + ecx*2]
mov eax, edx
shr eax, 0x1f
lea eax, [eax + ecx*2]
mov ebx, dword [eax*4 + 0x10192324]
test edx, 0x4000000
je 0x10002960
or ebx, 0x200
mov eax, dword [esi]
test eax, eax
jne 0x1000297b
test dl, 0x40
je 0x10002970
mov eax, dword [edi + 0x20]
jmp 0x10002977
test dl, dl
jns 0x100029bb
mov eax, dword [edi + 0x24]
test eax, eax
je 0x100029bb
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x3c], 0x74726956
push eax
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x38], 0x506c6175
push eax
mov dword [ebp - 0x34], 0x65746f72
mov word [ebp - 0x30], 0x7463
mov byte [ebp - 0x2e], 0
call dword [0x10162de8]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
lea ecx, [ebp - 0x10]
push ecx
push ebx
push dword [esi]
push dword [esi - 8]
call eax
mov eax, dword [ebp - 8]
add esi, 0x28
mov ecx, dword [ebp - 4]
inc ecx
mov dword [ebp - 4], ecx
mov edi, dword [eax]
movzx eax, word [edi + 6]
cmp ecx, eax
mov eax, dword [ebp - 0xc]
jl 0x10002914
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
Function at 0x10006ac0
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10153580
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 8
push ebx
mov eax, ecx
push esi
push edi
push 8
mov dword [ebp - 0x10], eax
mov dword [eax], vtable.std::basic_streambuf_char__struct_std::char_traits_char__.0
call fcn.10008ce0
mov esi, eax
add esp, 4
test esi, esi
je 0x10006b0f
push 1
mov dword [ebp - 4], 0
call fcn.1014517a
add esp, 4
mov dword [esi + 4], eax
jmp 0x10006b11
xor esi, esi
mov eax, dword [ebp - 0x10]
lea edi, [eax + 0x14]
lea ecx, [eax + 0x18]
lea edx, [eax + 0x24]
mov dword [eax + 0x34], esi
lea ebx, [eax + 4]
mov dword [eax + 0xc], ebx
lea esi, [eax + 8]
mov dword [eax + 0x10], esi
mov dword [eax + 0x1c], edi
mov dword [eax + 0x20], ecx
mov dword [eax + 0x2c], edx
add eax, 0x28
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x10]
mov dword [ebx + 0x30], eax
mov ebx, dword [ebp - 0x14]
mov dword [esi], 0
mov dword [ecx], 0
mov ecx, dword [ebp - 0xc]
mov dword [eax], 0
mov eax, dword [ebp - 0x10]
mov dword [ebx], 0
mov dword [edi], 0
pop edi
pop esi
mov dword [edx], 0
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
Function at 0x10008a2d
Capabilities:
Get common file path

Disassembly:
sub esp, 0x214
xor eax, eax
push ebx
push ebp
push esi
push edi
mov edi, edx
mov ebx, ecx
xor esi, esi
lock cmpxchg dword [ebx], esi
test eax, eax
je 0x10008a5b
cmp eax, 0xffffffff
jne 0x10008a4e
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x214
ret 4
xor ebp, ebp
test byte [esp + 0x228], 1
mov dword [esp + 0x10], ebp
je 0x10008a77
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
jmp 0x10008b1a
call fcn.1000890a
mov esi, eax
test esi, esi
je 0x10008a4c
test byte [esp + 0x228], 2
je 0x10008a93
push 2
jmp 0x10008b16
test byte [esp + 0x228], 4
je 0x10008aa0
push ebp
jmp 0x10008b16
call fcn.10008862
test eax, eax
jne 0x10008b11
call fcn.100088c2
mov ebp, eax
test ebp, ebp
je 0x10008a4c
push 0x208
lea eax, [esp + 0x20]
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [esp + 0x1c]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
je 0x10008b0b
cmp eax, 0x104
jae 0x10008b0b
mov ecx, edi
call fcn.10008784
mov dword [esp + 0x14], eax
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x18]
mov dword [esp + 0x1c], edx
push eax
push 0
lea eax, [esp + 0x28]
push eax
call ebp
mov eax, dword [esp + 0x10]
jmp 0x10008b1e
push 0
push 0
jmp 0x10008b17
push 0x800
push ebp
push edi
call esi
mov dword [esp + 0x10], eax
test eax, eax
jne 0x10008b2c
or eax, 0xffffffff
xchg dword [ebx], eax
jmp 0x10008a4c
xchg dword [ebx], eax
test eax, eax
je 0x10008b3c
push dword [esp + 0x10]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, dword [esp + 0x10]
jmp 0x10008a4e

Function at 0x1000a868
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push esi
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x1000a8c1
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x1000a8c1
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov edx, dword [ebp + 0x10]
lea ecx, [esi + eax]
and edx, 0xf
jbe 0x1000a8b2
cmp esi, ecx
jae 0x1000a8c1
movzx eax, word [esi]
lea esi, [esi + eax*2]
add esi, 2
sub edx, 1
jne 0x1000a8a0
cmp esi, ecx
jae 0x1000a8c1
movzx eax, word [esi]
neg eax
sbb eax, eax
and eax, esi
jmp 0x1000a8c3
xor eax, eax
pop esi
pop ebp
ret
Function at 0x1000c180
Capabilities:
Query or enumerate registry value

Disassembly:
push 0x18
mov eax, 0x101539cf
call fcn.10144144
mov eax, ecx
mov dword [ebp - 0x18], eax
mov ebx, dword [ebp + 0x10]
xor edi, edi
mov esi, dword [ebp + 0x14]
push edi
mov dword [ebx], edi
mov dword [esi], edi
cmp dword [eax + 0x58], edi
je 0x1000c228
push dword [ebp + 8]
call fcn.1000c4ab
mov dword [ebp - 0x10], eax
test eax, eax
je 0x1000c2ba
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], edi
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], edi
push ecx
push edi
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x18], edi
push ecx
push edi
push dword [ebp + 0xc]
mov dword [ebp - 0x14], edi
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov ecx, dword [ebp - 0x14]
mov dword [esi], ecx
test eax, eax
jne 0x1000c211
push ecx
call fcn.1001d038
pop ecx
lea ecx, [ebp - 0x14]
mov dword [ebx], eax
push ecx
push eax
lea eax, [ebp - 0x18]
push eax
push edi
push dword [ebp + 0xc]
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x1000c211
xor edi, edi
inc edi
jmp 0x1000c21b
push dword [ebx]
call fcn.10008d18
pop ecx
mov dword [ebx], edi
lea ecx, [ebp - 0x24]
call fcn.1000c047
jmp 0x1000c2b8
mov eax, dword [eax]
push dword [ebp + 0xc]
push dword [ebp + 8]
mov esi, dword [eax + 0x84]
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
call dword [0x10162a70]
mov ecx, dword [ebp - 0x18]
call esi
mov eax, dword [ebp - 0x10]
mov dword [ebp - 4], 1
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x1000c2b0
mov esi, dword [ebp + 0x14]
shr ecx, 1
push ecx
mov dword [esi], ecx
call fcn.1001d038
mov dword [ebx], eax
pop ecx
cmp dword [esi], edi
jbe 0x1000c2aa
mov esi, dword [ebp + 0x10]
xor ecx, ecx
inc ecx
mov dword [ebp - 0x18], ecx
push ecx
lea ecx, [ebp - 0x10]
call fcn.1000c023
lea ecx, [edi + edi]
mov bl, al
push ecx
lea ecx, [ebp - 0x10]
call fcn.1000c023
mov ecx, dword [esi]
shl bl, 4
sub bl, 0x51
add al, bl
mov byte [edi + ecx], al
inc edi
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp - 0x18]
add ecx, 2
mov dword [ebp - 0x18], ecx
cmp edi, dword [eax]
jb 0x1000c275
mov eax, dword [ebp - 0x10]
xor edi, edi
inc edi
lea ecx, [eax - 0x10]
call fcn.1000a420
mov eax, edi
call fcn.10144112
ret 0x10

Function at 0x1000c2c2
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push esi
xor esi, esi
push edi
cmp dword [ecx + 0x58], esi
je 0x1000c315
push esi
push dword [ebp + 8]
call fcn.1000c4ab
mov edi, eax
test edi, edi
je 0x1000c310
lea eax, [ebp - 4]
mov dword [ebp - 4], 4
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0xc]
push eax
push esi
push dword [ebp + 0xc]
push edi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push edi
mov esi, eax
call dword [0x10162dec]
test esi, esi
jne 0x1000c310
mov eax, dword [ebp - 8]
jmp 0x1000c327
mov eax, dword [ebp + 0x10]
jmp 0x1000c327
push dword [ecx + 0x6c]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
pop edi
pop esi
leave
ret 0xc
Function at 0x1000c32d
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101539fc
mov eax, dword fs:[0]
push eax
mov eax, 0x201c
call fcn.10143ec0
mov eax, dword [0x101b0064]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
xor ebx, ebx
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0x201c], edi
mov dword [ebp - 0x2024], eax
cmp dword [ecx + 0x58], ebx
je 0x1000c45e
push ebx
push edx
call fcn.1000c4ab
mov ebx, eax
test ebx, ebx
jne 0x1000c395
push esi
jmp 0x1000c486
lea ecx, [ebp - 0x2014]
call fcn.10008e73
xor ecx, ecx
lea eax, [ebp - 0x2018]
push eax
push ecx
lea eax, [ebp - 0x2020]
mov dword [ebp - 4], ecx
push eax
push ecx
push dword [ebp - 0x2024]
mov dword [ebp - 0x2020], ecx
push ebx
mov dword [ebp - 0x2018], ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 0x201c], eax
test eax, eax
jne 0x1000c41d
mov eax, dword [ebp - 0x2018]
lea ecx, [ebp - 0x2014]
shr eax, 1
push eax
call fcn.1000a05c
lea ecx, [ebp - 0x2018]
push ecx
push eax
lea eax, [ebp - 0x2020]
push eax
push 0
push dword [ebp - 0x2024]
push ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push 0xffffffffffffffff
lea ecx, [ebp - 0x2014]
mov dword [ebp - 0x201c], eax
call fcn.1000c5e7
push ebx
call dword [0x10162dec]
cmp dword [ebp - 0x201c], 0
jne 0x1000c44b
mov esi, dword [ebp - 0x2014]
add esi, 0xfffffff0
push esi
call fcn.100096fa
pop ecx
add eax, 0x10
mov ecx, esi
mov dword [edi], eax
call fcn.1000a420
jmp 0x1000c48d
push esi
mov ecx, edi
call fcn.10008dc9
mov ecx, dword [ebp - 0x2014]
lea ecx, [ecx - 0x10]
jmp 0x1000c444
test esi, esi
jne 0x1000c467
mov esi, 0x10163418
push dword [ecx + 0x6c]
lea ecx, [ebp - 0x2010]
push 0x1000
push ecx
push esi
push eax
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x2010]
push eax
mov ecx, edi
call fcn.10008dc9
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10144104
leave
ret 0x10
Function at 0x1000e3a8
Capabilities:
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor ebx, ebx
xor eax, eax
mov dword [ebp - 8], ecx
inc eax
inc ebx
mov dword [ebp - 4], eax
cmp dword [edi + 8], ebx
jle 0x1000e41f
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x1000e3e5
mov eax, dword [ecx + 0x10]
cmp dword [eax + ebx*8 + 4], edx
je 0x1000e3e5
mov eax, dword [edi + 0xc]
cmp dword [eax + ebx*4], 0
je 0x1000e412
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x1000e415
mov eax, dword [edi + 0xc]
mov eax, dword [eax + ebx*4]
mov dword [ebp - 0xc], eax
test eax, eax
je 0x1000e40b
mov eax, dword [eax]
push 1
mov esi, dword [eax]
mov ecx, esi
call dword [0x10162a70]
mov ecx, dword [ebp - 0xc]
call esi
mov ecx, dword [ebp - 8]
mov edx, dword [ebp + 0xc]
mov eax, dword [edi + 0xc]
and dword [eax + ebx*4], 0
mov eax, dword [ebp - 4]
inc ebx
cmp ebx, dword [edi + 8]
jl 0x1000e3c8
test eax, eax
je 0x1000e466
lea esi, [ecx + 0x1c]
mov ebx, edi
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [ebp - 8]
push edi
add ecx, 0x14
call fcn.1000e697
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push dword [ebx + 0xc]
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, dword [edi]
push 1
mov esi, dword [eax]
mov ecx, esi
call dword [0x10162a70]
mov ecx, edi
call esi
mov eax, dword [ebp - 8]
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
pop edi
pop esi
pop ebx
leave
ret 8
Function at 0x1000e6ea
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push 0x10
mov eax, 0x10153c16
call fcn.101441ad
mov ebx, ecx
mov dword [ebp - 0x18], ebx
lea eax, [ebx + 0x1c]
push eax
mov dword [ebp - 0x14], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, dword [ebp + 8]
test edi, edi
jle 0x1000e7e1
cmp edi, dword [ebx + 0xc]
jge 0x1000e7e1
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
test esi, esi
je 0x1000e741
cmp edi, dword [esi + 8]
jl 0x1000e7cf
cmp dword [ebp + 0xc], 0
je 0x1000e7cf
xor edi, edi
jmp 0x1000e773
xor edi, edi
push 0x10
mov dword [ebp - 4], edi
call fcn.1000e146
mov esi, eax
test esi, esi
je 0x1000e75b
mov dword [esi], vtable.CThreadData.0
jmp 0x1000e75d
mov esi, edi
or dword [ebp - 4], 0xffffffff
mov dword [esi + 8], edi
mov dword [esi + 0xc], edi
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x14]
mov dword [esi + eax], ecx
mov dword [ebx + 0x14], esi
push 4
push dword [ebx + 0xc]
call fcn.1000e005
cmp dword [esi + 0xc], 0
pop ecx
pop ecx
jne 0x1000e78f
push eax
push edi
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
jmp 0x1000e79b
push 2
push eax
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_LocalReAlloc]
mov edx, eax
test edx, edx
je 0x1000e808
mov ecx, dword [esi + 8]
mov dword [esi + 0xc], edx
mov eax, dword [ebx + 0xc]
sub eax, ecx
shl eax, 2
push eax
lea eax, [edx + ecx*4]
push edi
push eax
call sub.msvcrt.dll_memset
mov eax, dword [ebx + 0xc]
add esp, 0xc
mov dword [esi + 8], eax
push esi
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov edi, dword [ebp + 8]
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x1000e7e1
cmp edi, dword [esi + 8]
jge 0x1000e7e1
mov eax, dword [ebp + 0xc]
mov dword [ecx + edi*4], eax
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.10144112
ret 8
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.1000dcdf
int3
Function at 0x1001dc55
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
cmp dword [ebp + 0xc], 0
push esi
mov esi, ecx
jne 0x1001dc66
xor eax, eax
jmp 0x1001dc82
push 0
lea eax, [ebp - 4]
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [esi + 4]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x1001dc87
mov eax, dword [ebp - 4]
pop esi
leave
ret 8
lea ecx, [esi + 0xc]
call fcn.100093b2
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
push eax
call fcn.1001ff2c
int3

Function at 0x1001dd25
Capabilities:
Clear file content

Disassembly:
push ebp
mov ebp, esp
push esi
push edi
mov edi, ecx
push 0
push dword [ebp + 0xc]
mov eax, dword [edi]
push dword [ebp + 8]
mov esi, dword [eax + 0x2c]
mov ecx, esi
call dword [0x10162a70]
mov ecx, edi
call esi
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
je 0x1001dd58
pop edi
pop esi
pop ebp
ret 8
lea ecx, [edi + 0xc]
call fcn.100093b2
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
push eax
call fcn.1001ff2c
int3

Function at 0x1001de31
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, ecx
test esi, esi
je 0x1001de5c
push 0
lea eax, [ebp - 4]
push eax
push esi
push dword [ebp + 8]
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x1001de62
cmp dword [ebp - 4], esi
jne 0x1001de79
pop edi
pop esi
leave
ret 8
lea ecx, [edi + 0xc]
call fcn.100093b2
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
push eax
call fcn.1001ff2c
lea ecx, [edi + 0xc]
call fcn.100093b2
push eax
push 0xffffffffffffffff
push 0xd
call fcn.1001fb82
int3
Function at 0x10020d52
Capabilities:
Get file attributes
Get file size

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50
mov eax, dword [0x101b0064]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
mov ebx, ecx
push edi
push 0x230
xor edi, edi
push edi
push esi
call sub.msvcrt.dll_memset
push 0xffffffffffffffff
push dword [ebx + 0xc]
lea eax, [esi + 0x24]
push 0x104
push eax
call sub.msvcrt.dll_wcsncpy_s
push eax
call fcn.1000941c
mov eax, dword [ebx + 4]
add esp, 0x20
cmp eax, dword [0x101678e8]
je 0x10020eb0
lea ecx, [ebp - 0x48]
push ecx
lea ecx, [ebp - 0x40]
push ecx
lea ecx, [ebp - 0x38]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileTime]
test eax, eax
je 0x10020ec4
lea eax, [ebp - 0x30]
push eax
push dword [ebx + 4]
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
je 0x10020ec4
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x2c]
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], ecx
mov eax, dword [ebx + 0xc]
cmp dword [eax - 0xc], edi
je 0x10020e0e
mov ecx, dword [ebx + 0x10]
test ecx, ecx
je 0x10020e02
lea edx, [ebp - 0x28]
push edx
push edi
push eax
call fcn.10020b03
neg eax
sbb eax, eax
and eax, dword [ebp - 0x28]
jmp 0x10020e09
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x10020e10
mov eax, edi
mov ecx, esi
mov dword [ecx + 0x20], eax
lea eax, [ebp - 0x38]
push eax
call fcn.10021003
test eax, eax
je 0x10020e37
push 0xffffffffffffffff
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x50]
call fcn.1002098a
mov ecx, dword [eax]
mov eax, dword [eax + 4]
jmp 0x10020e3b
mov ecx, edi
mov eax, edi
mov dword [esi], ecx
mov dword [esi + 4], eax
lea eax, [ebp - 0x40]
push eax
call fcn.10021003
test eax, eax
je 0x10020e62
push 0xffffffffffffffff
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x50]
call fcn.1002098a
mov ecx, dword [eax]
mov eax, dword [eax + 4]
jmp 0x10020e66
mov ecx, edi
mov eax, edi
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], eax
lea eax, [ebp - 0x48]
push eax
call fcn.10021003
test eax, eax
je 0x10020e8e
push 0xffffffffffffffff
lea eax, [ebp - 0x48]
push eax
lea ecx, [ebp - 0x50]
call fcn.1002098a
mov edi, dword [eax]
mov ecx, dword [eax + 4]
jmp 0x10020e90
mov ecx, edi
mov dword [esi + 8], edi
mov dword [esi + 0xc], ecx
mov eax, dword [esi]
or eax, dword [esi + 4]
jne 0x10020ea2
mov dword [esi], edi
mov dword [esi + 4], ecx
mov eax, dword [esi + 0x10]
or eax, dword [esi + 0x14]
jne 0x10020eb0
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], ecx
xor eax, eax
inc eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.10144104
leave
ret 4
xor eax, eax
jmp 0x10020eb3
Function at 0x10023ae6
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, ecx
push esi
push edi
cmp dword [ebx + 0x84], 0
mov esi, dword [ebx + 0x8c]
mov edi, dword [ebx + 0x88]
je 0x10023b2e
call fcn.1000ebcf
push 5
push dword [ebx + 0x84]
mov eax, dword [eax + 0xc]
push eax
mov dword [ebp - 4], eax
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
je 0x10023b2e
push eax
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov edi, eax
test edi, edi
je 0x10023b3b
push edi
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
xor eax, eax
inc eax
test esi, esi
je 0x10023b77
mov edx, 0xffff
lea ecx, [esi + 0xc]
cmp word [esi + 2], dx
jne 0x10023b5a
movzx edi, word [esi + 0x12]
movzx edx, word [esi + 0x14]
jmp 0x10023b63
movzx edx, word [ecx]
mov ecx, esi
movzx edi, word [esi + 0xa]
test dword [ecx], 0x1801
jne 0x10023b75
test di, di
jne 0x10023b75
test dx, dx
je 0x10023b77
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret

Function at 0x10023b7c
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
mov esi, ecx
push edi
mov edi, dword [ebp + 8]
mov dword [esi + 0x84], edi
test edi, 0xffff0000
jne 0x10023ba7
cmp dword [esi + 0x80], 0
jne 0x10023ba7
movzx eax, di
mov dword [esi + 0x80], eax
call fcn.1000ebcf
push 5
push edi
mov ebx, dword [eax + 0xc]
push ebx
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
je 0x10023bd7
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x10023bd7
push ebx
push dword [ebp + 0xc]
mov ecx, esi
push eax
call fcn.10023e43
jmp 0x10023bd9
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret 8

Function at 0x10023be0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push esi
push edi
mov edi, ecx
call fcn.1000ebcf
push 5
push dword [ebp + 8]
mov esi, dword [eax + 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
je 0x10023c20
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x10023c20
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
push esi
push dword [ebp + 0xc]
mov ecx, edi
push eax
call fcn.10023c28
jmp 0x10023c22
xor eax, eax
pop edi
pop esi
pop ebp
ret 8