joyce8/EMBER2024-capa huggingface dataset:
Function at 0x414cb6
Capabilities:
Create directory

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
push edi
mov ebx, 0x4dcd58
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
and dword [ebp - 8], 0
lea eax, [ebp - 8]
push eax
call fcn.00403ecc
mov edi, dword [sym.imp.SHLWAPI.dll_StrChrW]
pop ecx
push 0x5c
push dword [ebp + 8]
mov byte [ebp - 4], al
jmp 0x414d0e
push dword [ebp + 8]
and word [esi], 0
call fcn.004ad0f1
test eax, eax
pop ecx
jne 0x414d03
push eax
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov word [esi], 0x5c
push 0x5c
add esi, 2
push esi
call edi
mov esi, eax
test esi, esi
jne 0x414ce8
cmp byte [ebp - 4], al
je 0x414d24
push dword [ebp - 8]
call fcn.00403edd
pop ecx
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
xor eax, eax
pop esi
inc eax
pop ebx
leave
ret

Function at 0x414e8f
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, ecx
mov eax, dword [esi + 0x14]
movzx ecx, word [eax + 6]
mov eax, dword [eax + 0x54]
push edi
mov edi, dword [ebp + 8]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*8]
push eax
push dword [ebp + 0xc]
push edi
call fcn.004143bf
mov eax, dword [esi + 0x14]
xor ebx, ebx
add esp, 0xc
cmp word [eax + 6], bx
mov dword [ebp - 4], ebx
jbe 0x414f32
mov eax, dword [esi + 0x18]
add eax, ebx
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x414f20
mov edx, dword [eax + 0x10]
test edx, edx
je 0x414f20
mov eax, dword [eax + 0x14]
add eax, dword [ebp + 0xc]
push edx
add edi, ecx
push eax
push edi
call fcn.004143bf
mov eax, dword [esi + 0x18]
add esp, 0xc
add eax, ebx
push str..rsrc
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
jne 0x414f1d
mov eax, dword [ebp + 0xc]
mov ecx, dword [esi + 0x18]
sub edi, eax
lea ecx, [ecx + ebx + 0xc]
lea edx, [edi + eax]
add dword [ecx], edx
mov ecx, dword [esi + 0x18]
lea ecx, [ecx + ebx + 0x14]
add edi, eax
add dword [ecx], edi
mov edi, dword [ebp + 8]
mov eax, dword [esi + 0x14]
movzx eax, word [eax + 6]
inc dword [ebp - 4]
add ebx, 0x28
cmp dword [ebp - 4], eax
jl 0x414ec6
mov dword [esi + 0x10], edi
mov eax, dword [edi + 0x3c]
add eax, edi
mov dword [esi + 0x14], eax
add eax, 0xf8
pop edi
mov dword [esi + 0x18], eax
pop esi
pop ebx
leave
ret 8

Function at 0x415219
Capabilities:
Get memory capacity

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
push 0x40
lea eax, [ebp - 0x40]
push 0
push eax
call fcn.004adaa0
add esp, 0xc
lea eax, [ebp - 0x40]
push eax
mov dword [ebp - 0x40], 0x40
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatusEx]
cmp dword [ebp + 8], 0
je 0x41524e
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
leave
ret
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
leave
ret
Function at 0x4153c9
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
mov esi, dword [ebp + 0x18]
test esi, esi
push edi
mov dword [ebp - 0xc], 0x20
je 0x4153e5
mov dword [ebp - 8], esi
jmp 0x4153ed
lea eax, [ebp - 0xc]
mov dword [ebp - 8], eax
mov esi, eax
push dword [ebp + 0x10]
mov ax, word [esi + 2]
push dword [ebp + 0xc]
mov word [ebp - 4], ax
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov ebx, eax
test ebx, ebx
je 0x415418
push ebx
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov edi, eax
jmp 0x41541a
xor edi, edi
test ebx, ebx
je 0x41542a
push ebx
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_LoadResource]
jmp 0x41542c
xor eax, eax
xor cl, cl
test byte [esi], 1
mov byte [ebp + 0x1b], cl
je 0x415448
test eax, eax
je 0x415529
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov cl, byte [ebp + 0x1b]
mov ebx, eax
test ebx, ebx
je 0x415529
test edi, edi
jle 0x415529
test byte [esi], 0x40
jne 0x4154b8
push 0
push edi
push ebx
call fcn.00441af6
add esp, 0xc
test al, al
mov byte [ebp + 0x1b], al
je 0x4154b8
test byte [esi], 0x20
je 0x415482
test al, 2
je 0x415482
xor eax, eax
jmp 0x415532
push 0
lea ecx, [ebp - 0x18]
call fcn.0044e631
movzx eax, word [ebp - 4]
mov esi, dword [ebp + 0x14]
push eax
lea eax, [ebp - 0x18]
push esi
push eax
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x14], edi
call fcn.00448fc2
and dword [ebp - 0x18], 0
add esp, 0xc
lea ecx, [ebp - 0x18]
call fcn.0043e679
jmp 0x4154f5
mov esi, dword [ebp + 0x14]
lea eax, [edi + 0x410]
push eax
mov ecx, esi
call fcn.0040f840
push edi
push ebx
push dword [esi]
mov dword [esi + 8], edi
mov dword [esi + 4], edi
call fcn.00414409
add esp, 0xc
cmp word [ebp - 4], 0
je 0x4154f5
movzx eax, word [ebp - 4]
inc edi
shr edi, 1
push edi
push eax
push dword [esi]
call fcn.00412b0d
add esp, 0xc
mov eax, dword [esi + 4]
mov edi, dword [esi]
lea ecx, [eax + 0x10]
push 0x10
add eax, edi
push 0
push eax
mov dword [esi + 8], ecx
call fcn.004adaa0
movzx eax, word [ebp - 4]
push 0xc
push eax
mov eax, dword [esi + 4]
add eax, edi
push eax
call fcn.004adaa0
mov esi, dword [ebp - 8]
mov cl, byte [ebp + 0x1b]
add esp, 0x18
jmp 0x41552b
xor edi, edi
and ecx, 2
or dword [esi], ecx
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret
Function at 0x415537
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
xor ebx, ebx
push ebx
push ebx
push 3
push ebx
push 3
push 0x80000000
push dword [ebp + 8]
lea ecx, [ebp - 8]
mov dword [ebp - 8], ebx
call fcn.00405bea
cmp dword [ebp - 8], ebx
jne 0x415568
push 0xfffffffffffffffe
pop esi
jmp 0x415628
push edi
push dword [ebp - 8]
call fcn.0049b450
push ebx
push ebx
push ebx
push dword [ebp - 8]
mov esi, eax
mov dword [ebp - 0x10], esi
call fcn.0043f9d0
add esp, 0x14
add esi, 0xc
push esi
mov esi, dword [ebp + 0xc]
mov ecx, esi
call fcn.00444d00
mov edi, dword [esi]
push ebx
lea eax, [ebp - 0xc]
push eax
push dword [ebp - 0x10]
mov dword [ebp - 0xc], ebx
push edi
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, dword [ebp - 0xc]
push 6
add eax, edi
push ebx
push eax
call fcn.004adaa0
mov eax, dword [ebp - 0xc]
push dword [ebp + 0x10]
mov dword [esi + 8], eax
push eax
push edi
mov dword [esi + 4], eax
call fcn.00441af6
add esp, 0x18
cmp al, 1
mov byte [ebp - 1], al
pop edi
jne 0x415611
push dword [0x4dc0a4]
lea ecx, [ebp - 0x1c]
push esi
call fcn.0040f88e
mov eax, dword [ebp - 0xc]
push ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x1c]
push esi
push eax
call fcn.00448fc2
mov eax, dword [esi + 4]
add esp, 0xc
add eax, 0xc
push eax
mov ecx, esi
call fcn.00444d00
lea ecx, [ebp - 0x1c]
call fcn.0043e679
push 1
push esi
call fcn.0049d75e
cmp byte [ebp - 1], bl
pop ecx
pop ecx
jge 0x415625
or esi, 0xffffffff
jmp 0x415628
mov esi, dword [esi + 4]
lea ecx, [ebp - 8]
call fcn.00402cb0
mov eax, esi
pop esi
pop ebx
leave
ret
Function at 0x416d86
Capabilities:
Create thread

Disassembly:
push ebx
push ebp
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, 0x4dcd58
push esi
mov ebp, ecx
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
add dword [0x4dc4ac], 1
push esi
call ebx
push 0x4dbc2c
mov eax, 0x10000
push eax
push ebp
push 0x416d23
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
je 0x416dd1
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x416dde
push esi
call edi
sub dword [0x4dc4ac], 1
push esi
call ebx
pop edi
pop esi
pop ebp
pop ebx
ret
Function at 0x4174d3
Capabilities:
Delete directory
Delete file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x264
and dword [ebp - 4], 0
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
and dword [ebp + 0xc], 0xfffffffe
and edi, 1
cmp word [ebx], 0
mov dword [ebp - 0x14], edi
je 0x4176aa
push esi
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenW]
jmp 0x417508
mov edi, dword [ebp - 0x14]
push ebx
mov dword [ebp - 0x10], ebx
call esi
add eax, edi
mov edi, dword [ebp - 0x10]
push edi
lea ebx, [ebx + eax*2]
call esi
and dword [ebp - 8], 0
lea eax, [edi + eax*2 - 2]
cmp word [eax], 0x5c
jne 0x417534
and word [eax], 0
mov dword [ebp - 8], 2
jmp 0x417546
push edi
call fcn.004ad0f1
test eax, eax
pop ecx
je 0x417546
mov dword [ebp - 8], 1
push edi
lea ecx, [ebp + 8]
call fcn.0044e66d
cmp dword [ebp - 8], 0
je 0x417562
push 0x4c41b4
lea ecx, [ebp + 8]
call fcn.00444e9e
and dword [ebp - 0xc], 0
lea eax, [ebp - 0x264]
push eax
push dword [ebp + 8]
lea eax, [ebp - 0xc]
push eax
call fcn.004ad1e9
push dword [ebp + 8]
call fcn.00410152
add esp, 0x10
push dword [ebp + 8]
call esi
inc eax
lea edi, [eax + eax]
mov eax, dword [ebp + 8]
mov word [edi + eax - 2], 0x5c
mov eax, dword [ebp + 8]
and word [edi + eax], 0
cmp dword [ebp - 0xc], 0
je 0x41764d
mov eax, dword [ebp + 8]
and word [edi + eax], 0
lea eax, [ebp - 0x238]
push eax
lea ecx, [ebp + 8]
call fcn.00444e9e
test byte [ebp - 0x264], 0x10
jne 0x4175f8
cmp dword [ebp + 0xc], 0
push dword [ebp + 8]
je 0x4175ec
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x417634
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x4175e7
inc eax
mov dword [ebp - 4], eax
jmp 0x417634
call fcn.00411c9a
test eax, eax
pop ecx
je 0x417634
jmp 0x4175e7
cmp word [ebp - 0x238], 0x2e
jne 0x417620
cmp word [ebp - 0x236], 0
je 0x417634
cmp word [ebp - 0x236], 0x2e
jne 0x417620
cmp word [ebp - 0x234], 0
je 0x417634
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.004174d3
test eax, eax
pop ecx
pop ecx
jne 0x417634
and dword [ebp - 4], eax
lea eax, [ebp - 0x264]
push eax
lea ecx, [ebp - 0xc]
call fcn.00405c60
test eax, eax
jne 0x4175a9
jmp 0x41765b
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x417658
inc eax
mov dword [ebp - 4], eax
lea ecx, [ebp - 0xc]
call fcn.00402ce5
xor edi, edi
cmp dword [ebp - 8], edi
je 0x417698
cmp dword [ebp + 0xc], edi
push dword [ebp - 0x10]
je 0x41768b
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
jne 0x417698
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jne 0x417695
xor eax, eax
inc eax
jmp 0x417695
call fcn.00411c9a
cmp eax, edi
pop ecx
je 0x417698
mov dword [ebp - 4], eax
lea ecx, [ebp + 8]
call fcn.0043e679
cmp word [ebx], di
jne 0x417505
pop esi
mov eax, dword [ebp - 4]
pop edi
pop ebx
leave
ret
Function at 0x418acb
Capabilities:
Check mutex on windows

Disassembly:
test byte [0x4dbc16], 1
je 0x418ae3
push str.UCallBackhWnd
call fcn.004123f6
test eax, eax
pop ecx
jne 0x418ae6
xor eax, eax
ret
push edi
push str.GlobalPECMD:main_u
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov edi, eax
test edi, edi
je 0x418b21
push esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
sub esi, 0xb7
neg esi
sbb esi, esi
push edi
inc esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
pop esi
jne 0x418b21
xor eax, eax
inc eax
pop edi
ret
xor eax, eax
pop edi
ret

Function at 0x419635
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
and dword [ebp - 4], 0
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
cmp word [edi], 0x2d
jne 0x419662
inc edi
inc edi
lea ecx, [ebp + 8]
mov dword [ebp - 4], 1
mov dword [ebp + 8], edi
call fcn.0040f904
mov edi, dword [ebp + 8]
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
add esi, 0x84
lea eax, [esi + 0x325]
push eax
lea ecx, [ebp - 0x10]
call fcn.00444e50
cmp word [edi], 0x5c
mov ebx, dword [ebp - 0x10]
push 2
pop eax
mov dword [ebp - 8], ebx
lea ebx, [ebx + esi*2]
mov dword [ebp - 0xc], eax
jne 0x419732
and dword [ebp + 8], 0
push 0x2c
add edi, eax
push 0
push edi
call dword [sym.imp.SHLWAPI.dll_StrRChrW]
mov esi, eax
test esi, esi
je 0x4196c5
and word [esi], 0
inc esi
inc esi
push esi
call dword [sym.imp.USER32.dll_CharUpperW]
movzx esi, word [esi]
test si, si
jne 0x4196c8
mov esi, dword [ebp + 8]
push edi
call fcn.0041310a
pop ecx
push ebx
push 0x324
mov dword [ebp + 8], eax
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
jmp 0x41972a
cmp word [ebx], si
jb 0x41971f
push dword [ebp + 8]
mov edi, dword [ebp - 8]
push ebx
push str._s_sFonts
push edi
call dword [sym.imp.USER32.dll_wsprintfW]
push edi
call fcn.004ad0f1
add esp, 0x14
test eax, eax
je 0x41971f
push 0x4c41b4
push edi
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push dword [ebp - 4]
push edi
call fcn.00419570
pop ecx
pop ecx
mov dword [ebp - 0xc], eax
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea ebx, [ebx + eax*2 + 2]
cmp word [ebx], 0
jne 0x4196e0
jmp 0x41979d
push edi
call fcn.0041310a
and dword [ebp + 8], 0
mov esi, eax
push esi
call fcn.004ad0f1
test eax, eax
pop ecx
pop ecx
je 0x419763
push esi
lea ecx, [ebp + 8]
call fcn.0044e731
push 0x4c41b4
lea ecx, [ebp + 8]
call fcn.00444e9e
mov esi, dword [ebp + 8]
push esi
push 0x4c4420
push dword [ebp - 8]
call dword [sym.imp.USER32.dll_wsprintfW]
push esi
call fcn.00410152
push esi
call fcn.004ad0f1
add esp, 0x14
test eax, eax
je 0x419795
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.00419570
pop ecx
pop ecx
mov dword [ebp - 0xc], eax
lea ecx, [ebp + 8]
call fcn.0043e679
lea ecx, [ebp - 0x10]
call fcn.0043e679
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
leave
ret
Function at 0x41ad41
Capabilities:
Check for time delay via gettickcount
Log keystrokes via application hook

Disassembly:
sub esp, 0x1c
push ebx
push esi
push edi
mov edi, 0x4dcd58
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xor ebx, ebx
test byte [esp + 0x32], 1
jne 0x41ad6a
cmp dword [0x4dc054], ebx
jne 0x41ad6a
mov dword [0x4dc050], ebx
movzx eax, byte [esp + 0x30]
add dword [0x4dc054], 1
cmp dword [0x4dc04c], ebx
mov dword [esp + 0x30], eax
jne 0x41adaf
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
push 0x41ac42
push 0xd
call dword [sym.imp.USER32.dll_SetWindowsHookExW]
cmp eax, ebx
mov dword [0x4dc04c], eax
jne 0x41adaf
sub dword [0x4dc054], 1
xor esi, esi
jmp 0x41aea0
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ebp, dword [sym.imp.KERNEL32.dll_GetTickCount]
call ebp
mov esi, dword [esp + 0x30]
mov edi, eax
add edi, esi
cmp esi, 0x4e20
jb 0x41add7
push 1
call fcn.004404d2
pop ecx
cmp dword [esp + 0x34], 2
jne 0x41ae6d
cmp esi, ebx
jne 0x41ae6d
push 0xa
pop esi
jmp 0x41ae6d
cmp dword [esp + 0x34], 2
je 0x41ae00
call ebp
mov esi, edi
sub esi, eax
cmp esi, ebx
jle 0x41ae79
cmp byte [0x4da2ec], bl
jle 0x41ae79
push 0xa
pop eax
cmp esi, eax
ja 0x41ae11
mov eax, esi
push 0x4ff
push eax
push ebx
push ebx
push ebx
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
jmp 0x41ae65
cmp dword [0x4dc050], ebx
jne 0x41ae79
cmp dword [esp + 0x34], 2
je 0x41ae3b
call ebp
mov esi, edi
sub esi, eax
cmp esi, ebx
jle 0x41ae6d
push 1
push ebx
push ebx
push ebx
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x41ae6d
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
cmp byte [0x4da2ec], bl
jg 0x41ae22
cmp dword [0x4dc050], ebx
je 0x41adef
push 0x4dcd58
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [0x4dc050]
sub dword [0x4dc054], 1
pop ebp
jne 0x41ae99
mov dword [0x4dc050], ebx
mov esi, eax
mov edi, 0x4dcd58
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
mov eax, esi
pop esi
pop ebx
add esp, 0x1c
ret
Function at 0x41ccbf
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
push esi
mov esi, ecx
cmp dword [esi + 0xc], 0
jne 0x41cce6
push dword [esp + 0xc]
push dword [esp + 0xc]
call fcn.0041092d
test eax, eax
je 0x41cce6
call fcn.004109be
test eax, eax
mov dword [esp + 0xc], eax
jne 0x41cced
xor eax, eax
jmp 0x41cdfc
mov ecx, dword [esi + 0x14]
mov ecx, dword [ecx + 0x34]
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push ebp
push edi
push 0x40
mov ebp, 0x3000
push ebp
push eax
push ecx
call ebx
mov edi, eax
test edi, edi
jne 0x41cd25
push 0x40
push ebp
push dword [esp + 0x20]
push eax
call ebx
mov edi, eax
test edi, edi
jne 0x41cd25
xor eax, eax
jmp 0x41cdf9
push dword [esp + 0x14]
mov ecx, esi
push edi
call fcn.00414e8f
mov eax, dword [esi + 0x14]
xor ebx, ebx
cmp dword [eax + 0xa0], ebx
jbe 0x41cd52
cmp dword [eax + 0xa4], ebx
jbe 0x41cd52
push edi
mov ecx, esi
call fcn.00410685
test eax, eax
je 0x41cd1e
push edi
mov ecx, esi
call fcn.004107a7
test eax, eax
jne 0x41cd6d
push 0x8000
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
jmp 0x41cd1e
mov eax, dword [esi + 0x14]
mov dword [eax + 0x34], edi
mov eax, dword [esi + 0x14]
test byte [eax + 0x17], 0x20
je 0x41cd86
mov eax, dword [eax + 0x28]
add eax, edi
mov dword [esi + 4], eax
jmp 0x41cdbd
mov ebx, dword [esi]
mov ebp, dword [esi + 0xc]
push str.DllMain
mov ecx, esi
mov dword [esi], 0x200
mov dword [esi + 0xc], edi
call fcn.004105bb
test eax, eax
mov dword [esi + 4], eax
jne 0x41cdb6
push str._dllMain_12
mov ecx, esi
call fcn.004105bb
mov dword [esi + 4], eax
mov dword [esi], ebx
mov dword [esi + 0xc], ebp
xor ebx, ebx
mov eax, dword [esi + 4]
xor ebp, ebp
inc ebp
cmp eax, ebx
je 0x41cdeb
push ebx
push ebp
push edi
call eax
test eax, eax
jne 0x41cdeb
push ebx
push ebx
push edi
call dword [esi + 4]
push 0x8000
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov dword [esi + 4], ebx
jmp 0x41cd1e
mov dword [esi + 0xc], edi
mov dword [esi], ebp
mov dword [0x4dbf98], esi
mov eax, dword [esi + 0xc]
pop edi
pop ebp
pop ebx
pop esi
ret 8
Function at 0x421db8
Capabilities:
Get common file path

Disassembly:
push ebp
lea ebp, [esp - 0x6c]
sub esp, 0xa4
push ebx
push esi
mov esi, dword [ebp + 0x7c]
push edi
push 0x4c459c
lea ecx, [ebp + 0x64]
sar esi, 0x10
call fcn.0044e66d
mov ebx, dword [ebp + 0x74]
push esi
push dword [ebx]
call fcn.00412a99
pop ecx
pop ecx
push 0x20a
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x74], eax
call fcn.00444e50
push dword [ebp + 0x68]
push 0x208
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov edi, dword [ebp + 0x78]
push edi
lea ecx, [ebp - 0x38]
call fcn.0041035a
push edi
lea ecx, [ebp - 0x38]
call fcn.00410b5c
push dword [ebp + 0x68]
mov eax, dword [edi + 0x14]
push 0x4c4474
mov dword [ebp - 0x24], eax
call fcn.0044451e
movzx eax, si
push eax
lea ecx, [ebp - 0x38]
mov word [ebp - 0xc], si
call fcn.0044348d
mov ecx, dword [ebp + 0x7c]
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp + 0x64]
push eax
push dword [ebp + 0x74]
push 0
push ebx
call fcn.00421675
movzx esi, ax
or esi, dword [ebp + 0x7c]
add esp, 0x14
mov edi, 0x4dcd58
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
and dword [ebp + 0xc], 0
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0
lea ecx, [ebp - 0x38]
call fcn.00435ea3
lea ecx, [ebp + 8]
call fcn.0043e679
lea ecx, [ebp + 0x68]
call fcn.0043e679
lea ecx, [ebp + 0x64]
call fcn.0043e679
pop edi
mov eax, esi
pop esi
pop ebx
add ebp, 0x6c
leave
ret
Function at 0x42a27b
Capabilities:
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
push edi
push 0x20a
lea ecx, [ebp - 4]
call fcn.00444e50
mov eax, dword [ebp - 4]
mov word [eax], 0x20
mov eax, dword [ebp - 4]
and word [eax + 2], 0
mov eax, dword [ebp - 4]
push 0x208
add eax, 2
push eax
push str.SystemRoot
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
push str.System32OnShutdown.wcs
lea ecx, [ebp - 4]
call fcn.00444e9e
mov bl, byte [ebp + 0xc]
test bl, 0x20
mov esi, str.unknown
je 0x42a2d6
mov esi, 0x4c1924
test bl, 0x10
je 0x42a2e0
mov esi, str.reboot
test bl, 2
je 0x42a2ea
mov esi, str.logout
test bl, 4
je 0x42a2f4
mov esi, str.suspend
test bl, 8
je 0x42a2fe
mov esi, str.hiber
test bl, 0x40
je 0x42a308
mov esi, str.poweroff
test bl, bl
jns 0x42a311
mov esi, str.lock
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
lea ecx, [ebp - 4]
mov edi, eax
call fcn.00444e9e
push 0x4c1548
lea ecx, [ebp - 4]
call fcn.00444e9e
cmp dword [ebp + 8], 0
je 0x42a343
push dword [ebp + 8]
lea ecx, [ebp - 4]
call fcn.00444e9e
push dword [ebp - 4]
mov esi, 0x4dc0f8
mov ecx, esi
call fcn.004221d9
push str._25INDATA
lea ecx, [ebp - 8]
call fcn.0044e66d
mov eax, dword [ebp - 4]
lea eax, [eax + edi*2]
push eax
lea ecx, [ebp - 8]
call fcn.00444e9e
test bl, 0x70
je 0x42a37d
push dword [ebp - 8]
mov ecx, esi
call fcn.004221d9
lea ecx, [ebp - 8]
call fcn.0043e679
lea ecx, [ebp - 4]
call fcn.0043e679
pop edi
pop esi
pop ebx
leave
ret
Function at 0x430257
Capabilities:
Check for time delay via gettickcount
Create thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 8]
push ebx
push esi
xor ebx, ebx
push edi
mov byte [ebp - 1], bl
jmp 0x430272
inc byte [ebp - 1]
inc eax
inc eax
mov dword [ebp + 8], eax
cmp word [eax], 0x2a
je 0x43026a
lea eax, [ebp + 8]
push eax
call fcn.00405b6e
mov al, byte [ebp - 1]
mov byte [0x4dbff2], al
mov eax, dword [ebp + 8]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 2]
push eax
lea eax, [ebp - 6]
push eax
lea eax, [ebp - 5]
push eax
lea edi, [ebp - 3]
lea esi, [ebp - 4]
lea eax, [ebp + 8]
mov byte [ebp - 3], 0x2a
mov byte [ebp - 5], bl
mov byte [ebp - 4], 1
mov byte [ebp - 2], bl
call fcn.0041aeb0
mov eax, dword [ebp + 8]
add esp, 0x10
cmp word [eax], bx
je 0x43039b
mov esi, 0x4dcd58
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp byte [ebp - 1], bl
je 0x4302eb
cmp dword [0x4dbfa8], ebx
je 0x4302eb
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x4303f7
mov eax, dword [ebp + 8]
movsx ecx, byte [ebp - 3]
mov byte [0x4da2d9], 0xff
movzx edx, word [eax]
cmp ecx, edx
mov byte [0x4dbfe5], 1
jne 0x430315
movzx eax, word [eax + 2]
cmp ecx, eax
jne 0x430315
mov byte [0x4da2d9], bl
mov edi, dword [ebp - 0x10]
push 0x4dbc2c
push 0x10000
push edi
push 0x42c77e
push 0x100000
push ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
mov dword [ebp - 0x10], eax
cmp word [edi], bx
jne 0x43035a
cmp byte [0x4dbfe5], bl
je 0x430376
call esi
sub eax, dword [ebp - 0x10]
cmp eax, 0x30d40
jae 0x430376
push ebx
push 1
push ebx
mov ecx, 0x4dc0f8
call fcn.00415ff0
jmp 0x43034d
cmp byte [ebp - 2], bl
je 0x4303f7
test byte [ebp - 4], 0x40
je 0x4303f7
jmp 0x430391
push ebx
push ebx
push 1
mov ecx, 0x4dc0f8
call fcn.00415ff0
cmp dword [0x4dbfa8], ebx
jne 0x430383
jmp 0x4303f7
movsx eax, byte [ebp - 2]
push eax
movsx eax, byte [ebp - 5]
push eax
lea esi, [ebp - 0xc]
mov eax, esi
push eax
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x10], 0xbb8
call fcn.00412fd3
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
add esp, 0xc
call edi
cmp byte [ebp - 2], bl
mov dword [ebp - 0x14], eax
je 0x4303f3
mov esi, 0x4dbfa8
mov dword [ebp - 0x10], 0xfa0
jmp 0x4303f3
call edi
sub eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x10]
jae 0x4303f7
push ebx
push ebx
push 0xa
mov ecx, 0x4dc0f8
call fcn.00415ff0
cmp dword [esi], ebx
jne 0x4303db
pop edi
pop esi
xor eax, eax
pop ebx
leave
ret