joyce8/EMBER2024-capa huggingface dataset:
Function at 0x4ba3be
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
mov esi, eax
mov eax, dword [esi + 8]
push edi
mov edi, eax
and edi, 7
je 0x4ba3e3
cmp eax, edi
jge 0x4ba3db
mov eax, esi
call fcn.004b9db2
mov ecx, edi
shr dword [esi + 0xc], cl
sub dword [esi + 8], edi
xor ecx, ecx
cmp dword [esi + 8], ecx
jle 0x4ba405
mov al, byte [esi + 0xc]
shr dword [esi + 0xc], 8
add dword [esi + 8], 0xfffffff8
mov byte [ebp + ecx - 4], al
inc ecx
cmp dword [esi + 8], 0
jg 0x4ba3ea
cmp ecx, 4
jge 0x4ba424
mov edi, dword [esi + 4]
mov eax, dword [esi]
cmp eax, edi
jb 0x4ba412
xor eax, eax
jmp 0x4ba41a
mov dl, byte [eax]
inc eax
mov dword [esi], eax
movzx eax, dl
mov byte [ebp + ecx - 4], al
inc ecx
cmp ecx, 4
jl 0x4ba408
movzx edi, byte [ebp - 3]
movzx eax, byte [ebp - 4]
movzx ecx, byte [ebp - 2]
shl edi, 8
add edi, eax
movzx eax, byte [ebp - 1]
shl eax, 8
add eax, ecx
mov ecx, edi
xor ecx, 0xffff
cmp eax, ecx
je 0x4ba456
mov eax, str.zlib_corrupt
call fcn.004b79ec
jmp 0x4ba491
mov eax, dword [esi]
add eax, edi
cmp eax, dword [esi + 4]
jbe 0x4ba466
mov eax, str.read_past_buffer
jmp 0x4ba44f
mov eax, dword [esi + 0x10]
add eax, edi
cmp eax, dword [esi + 0x18]
jbe 0x4ba47b
mov ecx, edi
call fcn.004b9ddd
test eax, eax
je 0x4ba491
push edi
push dword [esi]
push dword [esi + 0x10]
call fcn.0043b140
add dword [esi], edi
add dword [esi + 0x10], edi
xor eax, eax
add esp, 0xc
inc eax
pop edi
pop esi
leave
ret

Function at 0x4be74a
Capabilities:
Check os version

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0x98
mov eax, dword [0x506550]
xor eax, ebp
mov dword [ebp + 0x74], eax
push esi
mov esi, ecx
call fcn.004be6df
mov eax, 0x400000
push 0x94
mov dword [esi + 8], eax
mov dword [esi + 4], eax
lea eax, [ebp - 0x20]
push 0
push eax
mov dword [esi], 0x3c
mov byte [esi + 0xc], 0
call fcn.0043b4c0
add esp, 0xc
lea eax, [ebp - 0x20]
push eax
mov dword [ebp - 0x20], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0x10], 2
jne 0x4be799
cmp dword [ebp - 0x1c], 5
jb 0x4be7b1
jmp 0x4be7ad
cmp dword [ebp - 0x10], 1
jne 0x4be7b1
cmp dword [ebp - 0x1c], 4
ja 0x4be7ad
jne 0x4be7b1
cmp dword [ebp - 0x18], 0
jbe 0x4be7b1
mov byte [esi + 0xc], 1
lea ecx, [esi + 0x18]
mov dword [esi + 0x10], 0x800
mov dword [esi + 0x14], 0x4df494
call fcn.00416406
test eax, eax
jge 0x4be7d2
mov byte [0x50eff0], 1
mov ecx, dword [ebp + 0x74]
mov eax, esi
xor ecx, ebp
pop esi
call fcn.0043b4a5
add ebp, 0x78
leave
ret

Function at 0x403d61
Capabilities:
Encode data using xor

Disassembly:
push eax
push ebx
mov eax, 0x499
mov ecx, 0x404498
mov bl, byte [ecx]
sub bl, 0xf2
rol bl, 2
sub bl, cl
ror bl, 1
mov byte [ecx], bl
dec ecx
dec eax
jne 0x403d6d
mov eax, 0x261d
mov ecx, 0x403764
mov bl, byte [ecx]
rol bl, 7
ror bl, 2
sub bl, cl
xor bl, 0x91
mov byte [ecx], bl
dec ecx
dec eax
jne 0x403d8a
pop ebx
pop eax
add ecx, 0x2c1a
jmp ecx
Function at 0x4011a0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebx
mov ebx, dword [esp + 8]
push edi
mov edi, dword [esp + 0x10]
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x4011b9
pop edi
pop ebx
ret
push esi
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
jne 0x4011cd
pop esi
pop edi
xor eax, eax
pop ebx
ret
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, dword [esp + 0x18]
add eax, esi
and ecx, 0xf
jbe 0x4011ee
cmp esi, eax
jae 0x4011c7
dec ecx
movzx edx, word [esi]
lea esi, [esi + edx*2 + 2]
jne 0x4011e0
cmp esi, eax
jae 0x4011c7
mov ax, word [esi]
neg ax
sbb eax, eax
and eax, esi
pop esi
pop edi
pop ebx
ret

Function at 0x402010
Capabilities:
Create thread

Disassembly:
mov eax, dword [ecx + 0x60]
add eax, 4
push eax
push 0
push 0x401de0
call dword [sym.imp.MSVCR71.dll__beginthread]
add esp, 0xc
ret

Function at 0x402170
Capabilities:
Persist via run registry key

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4916bb
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x688
mov eax, dword [0x4b5320]
push ebx
push esi
push edi
mov esi, ecx
mov dword [esp + 0x68c], eax
xor ebx, ebx
xor eax, eax
mov word [esp + 0x218], bx
mov ecx, 0x81
lea edi, [esp + 0x21a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov word [esp + 0x10], bx
xor eax, eax
mov ecx, 0x81
lea edi, [esp + 0x12]
rep stosd dword es:[edi], eax
push ebx
push str.SOFTWAREMicrosoftWindowsCurrentVersionRunOnce
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [esp + 0x42c]
stosw word es:[edi], ax
mov dword [esp + 0x18], ebx
call fcn.0043b3f0
push 0x104
lea eax, [esp + 0x21c]
push eax
push str.NEED_REBOOT
lea ecx, [esp + 0x42c]
mov dword [esp + 0x6a8], ebx
call fcn.0043b640
push 0x104
lea ecx, [esp + 0x14]
push ecx
push ebx
call dword [0x4b5430]
mov edi, dword [sym.imp.MSVCR71.dll_wcslen]
lea edx, [esp + 0x218]
push edx
call edi
add esp, 4
test eax, eax
jbe 0x4022dd
lea eax, [esp + 0x10]
push eax
call edi
add esp, 4
test eax, eax
jbe 0x4022dd
mov edi, dword [sym.imp.MSVCR71.dll__wcsupr]
lea ecx, [esp + 0x10]
push ecx
call edi
add esp, 4
push eax
lea edx, [esp + 0x21c]
push edx
call edi
add esp, 4
push eax
call dword [sym.imp.MSVCR71.dll_wcsstr]
add esp, 8
test eax, eax
je 0x4022dd
mov eax, dword [esi + 0x60]
cmp eax, ebx
je 0x402296
mov esi, eax
mov ecx, dword [esi + 0x50]
lea edx, [esp + 0xc]
lea eax, [esi + 0x50]
push edx
push eax
call dword [ecx + 0x14]
jmp 0x4022a0
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov ecx, dword [0x4b71c4]
push ebx
push 0x4020b0
push eax
push 0x23b
push ecx
call fcn.00437270
add esp, 0x14
lea ecx, [esp + 0x420]
mov dword [esp + 0x69c], 0xffffffff
call fcn.0043b4e0
mov eax, 1
jmp 0x4022f6
lea ecx, [esp + 0x420]
mov dword [esp + 0x69c], 0xffffffff
call fcn.0043b4e0
xor eax, eax
mov ecx, dword [esp + 0x694]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x68c]
call fcn.0048c3c7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x402530
Capabilities:
Enumerate processes

Disassembly:
push ebp
lea ebp, [esp - 0x3bc]
sub esp, 0x43c
mov eax, dword [0x4b5320]
push ebx
mov dword [ebp + 0x3b8], eax
push esi
push edi
xor eax, eax
xor ebx, ebx
mov word [ebp - 0x7c], bx
mov ecx, 0x81
lea edi, [ebp - 0x7a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
xor eax, eax
mov byte [ebp + 0x18c], bl
mov ecx, 0x40
lea edi, [ebp + 0x18d]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push ebx
lea eax, [ebp - 0x80]
push eax
push str.UI_ParentRestore
mov dword [ebp - 0x80], ebx
call fcn.0043add0
push 0x497f10
push 0x104
lea ecx, [ebp - 0x7c]
push ecx
push str.UI_ParentProcess
call fcn.0043afe0
mov eax, dword [ebp - 0x80]
add esp, 0x1c
cmp eax, ebx
jne 0x4025c1
lea edx, [ebp - 0x7c]
push edx
call dword [sym.imp.MSVCR71.dll_wcslen]
add esp, 4
test eax, eax
jbe 0x402646
lea eax, [ebp - 0x7c]
push eax
call dword [0x4b5480]
lea edi, [eax + eax + 2]
mov eax, edi
add eax, 3
and eax, 0xfffffffc
call fcn.0048c3e0
mov esi, esp
cmp esi, ebx
je 0x4025fe
push ebx
push ebx
push edi
push esi
push 0xffffffffffffffff
lea ecx, [ebp - 0x7c]
push ecx
push ebx
push ebx
mov byte [esi], bl
call dword [0x4b5468]
neg eax
sbb eax, eax
and eax, esi
jmp 0x402600
xor eax, eax
lea edx, [ebp + 0x18c]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
cmp cl, bl
jne 0x402606
push ebx
push 2
mov edi, 1
call sub.KERNEL32.dll_CreateToolhelp32Snapshot
mov esi, eax
cmp esi, 0xffffffff
je 0x402646
lea edx, [ebp + 0x290]
push edx
push esi
mov dword [ebp + 0x290], 0x128
call sub.KERNEL32.dll_Process32First
test eax, eax
jne 0x402650
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x4026b1
lea eax, [ebp + 0x2b4]
push str.PowerDVD.exe
push eax
call dword [sym.imp.MSVCR71.dll__stricmp]
add esp, 8
test eax, eax
jne 0x402671
mov ebx, dword [ebp + 0x2a8]
jmp 0x402692
lea ecx, [ebp + 0x18c]
push ecx
lea edx, [ebp + 0x2b4]
push edx
call dword [sym.imp.MSVCR71.dll__stricmp]
add esp, 8
test eax, eax
jne 0x402692
mov edi, dword [ebp + 0x298]
lea eax, [ebp + 0x290]
push eax
push esi
call sub.KERNEL32.dll_Process32Next
test eax, eax
jne 0x402650
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
cmp ebx, edi
sete al
lea esp, [ebp - 0x8c]
mov ecx, dword [ebp + 0x3b8]
call fcn.0048c3c7
pop edi
pop esi
pop ebx
add ebp, 0x3bc
mov esp, ebp
pop ebp
ret
Function at 0x407360
Capabilities:
Create thread

Disassembly:
push ecx
push esi
push edi
push 1
push 4
push 0x4b7220
mov esi, ecx
call fcn.00401b90
mov edi, eax
test edi, edi
jne 0x4073b4
mov al, byte [esi + 0x3c]
test al, al
je 0x4073b8
push edi
push edi
push edi
push edi
call dword [0x4b53f8]
test eax, eax
mov dword [esi + 0x30], eax
je 0x4073a9
lea eax, [esp + 8]
push eax
push edi
push esi
push 0x4048f0
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
jne 0x4073b8
pop edi
mov eax, 0x80004005
pop esi
pop ecx
ret 4
mov byte [esi + 0x3c], 0
mov eax, edi
pop edi
pop esi
pop ecx
ret 4

Function at 0x407b60
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4918e6
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x420
mov eax, dword [0x4b5320]
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x42c], ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x424], ecx
mov dword [ebp - 0x428], ebx
mov dword [ebp - 0x418], ebx
mov eax, dword [ebp + 8]
push 2
push ebx
push eax
mov byte [ebp - 4], 1
call dword [0x4b5454]
mov edi, eax
cmp edi, ebx
mov dword [ebp - 0x420], edi
jne 0x407bd2
call fcn.00401280
mov esi, eax
jmp 0x407cb8
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push ecx
push edx
push edi
call dword [0x4b5414]
mov esi, eax
cmp esi, ebx
jne 0x407bf1
call fcn.00401280
jmp 0x407caf
push esi
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov ebx, eax
test ebx, ebx
mov dword [ebp - 0x41c], ebx
jne 0x407c0f
call fcn.00401280
jmp 0x407caf
push esi
push edi
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov esi, eax
lea eax, [esi + esi + 2]
cmp eax, 0x400
mov dword [ebp + 8], esi
mov byte [ebp - 4], 2
jbe 0x407c3f
push eax
lea ecx, [ebp - 0x418]
call fcn.00403120
jmp 0x407c5c
lea eax, [ebp - 0x414]
mov dword [ebp - 0x418], eax
jmp 0x407c5c
mov eax, dword [ebp - 0x418]
test eax, eax
mov dword [ebp - 4], 1
jne 0x407c74
mov esi, 0x8007000e
jmp 0x407cb1
push esi
push eax
push esi
push ebx
push 0
push 0
call dword [0x4b545c]
test eax, eax
jne 0x407c8d
call fcn.00401280
jmp 0x407caf
mov ecx, dword [ebp - 0x418]
mov edx, dword [ebp + 0x14]
mov word [ecx + esi*2], 0
mov eax, dword [ebp - 0x418]
push edx
push eax
lea ecx, [ebp - 0x428]
call fcn.004076d0
mov esi, eax
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, dword [ebp - 0x418]
lea ecx, [ebp - 0x414]
cmp eax, ecx
je 0x407cd3
lea ecx, [ebp - 0x418]
call fcn.004030e0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x14]
mov eax, esi
call fcn.0048c3c7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
Function at 0x408d00
Capabilities:
Accept command line arguments

Disassembly:
push ecx
mov al, byte [0x4b5674]
test al, al
push esi
mov esi, ecx
je 0x408d17
mov eax, 0xffffffff
pop esi
pop ecx
ret 4
mov dword [esp + 4], 0
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
lea ecx, [esp + 4]
push ecx
push eax
mov ecx, esi
call fcn.00408140
cmp al, 1
jne 0x408d67
mov edx, dword [esp + 0xc]
push edx
mov ecx, esi
call fcn.00408420
test eax, eax
jne 0x408d59
mov ecx, esi
call fcn.00403160
mov ecx, esi
call fcn.00405230
pop esi
pop ecx
ret 4
jl 0x408d6b
mov ecx, esi
call fcn.00405230
pop esi
pop ecx
ret 4
mov eax, dword [esp + 4]
pop esi
pop ecx
ret 4

Function at 0x40a600
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x491a98
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x30
mov eax, 7
push ebx
xor ebx, ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x44]
cmp eax, ebx
push edi
mov edi, ecx
mov dword [esp + 8], 0x40
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], 1
mov dword [esp + 0x14], 0x20000
mov dword [esp + 0x18], ebx
mov dword [esp + 0x20], 0x4000020
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], 0x8000000
mov dword [esp + 0x30], ebx
jne 0x40a707
xor eax, eax
mov dword [esp + 0x48], eax
push ebp
mov ebp, dword [esp + 0x50]
push ebp
push eax
mov ecx, edi
mov dword [esp + 0x4c], ebx
call fcn.0040a5b0
push esi
lea esp, [esp]
mov edx, dword [esp + ebx + 0x10]
mov ecx, dword [ebp]
mov esi, dword [esp + ebx + 0x14]
mov eax, edx
and eax, ecx
mov ecx, esi
and ecx, dword [ebp + 4]
cmp eax, edx
jne 0x40a724
cmp ecx, esi
jne 0x40a724
mov eax, dword [edi + 0x10]
mov ecx, dword [eax]
mov dword [edi + 0x18], ecx
mov eax, dword [edi + 0x18]
cmp eax, dword [edi + 0x10]
je 0x40a724
mov esi, dword [eax + 8]
test esi, esi
mov edx, eax
mov eax, dword [edx]
mov dword [edi + 0x18], eax
je 0x40a724
mov ecx, dword [esi]
push esi
call dword [ecx + 0x28]
cmp eax, dword [esp + ebx + 0x18]
jne 0x40a6b4
push 1
push str.UIFileMode
call fcn.0043ada0
mov edx, dword [esp + 0x58]
add esp, 8
push edx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, esi
pop esi
pop ebp
pop edi
pop ebx
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
add esp, 0x3c
ret 8
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
cmp eax, ebx
mov dword [esp + 0x48], eax
jne 0x40a679
push 0x8007000e
call fcn.004010e0
add ebx, 0xc
cmp ebx, 0x30
jl 0x40a690
mov eax, dword [esp + 0x50]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov ecx, dword [esp + 0x40]
pop esi
pop ebp
pop edi
xor eax, eax
pop ebx
mov dword fs:[0], ecx
add esp, 0x3c
ret 8
Function at 0x40ab20
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
movzx eax, word [ebp + 8]
push ebx
push esi
mov esi, dword [0x4b71c4]
push edi
push 0xf0
push eax
mov edi, 1
push esi
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edi
call dword [0x4b5414]
test eax, eax
je 0x40ac84
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x40ac84
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x40ac84
xor eax, eax
mov ax, word [esi]
test ax, ax
mov dword [ebp + 8], eax
je 0x40ac84
mov ax, word [esi + 2]
add esi, 2
mov ecx, dword [esi + 2]
add esi, 2
add esi, 4
cmp ax, 0x403
mov dword [ebp - 0xc], ecx
jne 0x40abf4
test esi, esi
je 0x40abdc
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
inc edi
lea eax, [edi + edi]
add eax, 3
and eax, 0xfffffffc
call fcn.0048c3e0
mov ebx, esp
test ebx, ebx
je 0x40abdc
push edi
push ebx
push 0xffffffffffffffff
push esi
push 0
push 0
mov word [ebx], 0
call dword [0x4b545c]
neg eax
sbb eax, eax
and eax, ebx
jmp 0x40abde
xor eax, eax
movzx edx, word [ebp + 8]
push eax
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 4]
push 0
push 0x143
push edx
push ecx
jmp 0x40ac62
cmp ax, 0x1234
jne 0x40ac74
test esi, esi
mov dword [ebp - 0x30], 1
mov dword [ebp - 0x2c], 0xffffffff
je 0x40ac46
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
inc edi
lea eax, [edi + edi]
add eax, 3
and eax, 0xfffffffc
call fcn.0048c3e0
mov ebx, esp
test ebx, ebx
je 0x40ac46
push edi
push ebx
push 0xffffffffffffffff
push esi
push 0
push 0
mov word [ebx], 0
call dword [0x4b545c]
neg eax
sbb eax, eax
and eax, ebx
jmp 0x40ac48
xor eax, eax
mov ecx, dword [ebp - 8]
lea edx, [ebp - 0x30]
push edx
mov edx, dword [ecx + 4]
push 0
mov dword [ebp - 0x28], eax
movzx eax, word [ebp + 8]
push 0x40b
push eax
push edx
call dword [0x4b5534]
cmp eax, 0xffffffff
jne 0x40ac74
mov dword [ebp - 4], 0
mov ecx, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
add esi, ecx
test edi, edi
jne 0x40ab74
mov eax, edi
lea esp, [ebp - 0x3c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
Function at 0x40e7e0
Capabilities:
Enumerate pe sections

Disassembly:
push 0xffffffffffffffff
push 0x491b58
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x14
mov eax, dword [0x4b5320]
push ebp
mov ebp, dword [esp + 0x30]
test ebp, ebp
mov dword [esp + 0x14], eax
jne 0x40e814
mov eax, 0x80004003
jmp 0x40e9ab
push ebx
mov ebx, dword [esp + 0x38]
push esi
mov esi, dword [esp + 0x30]
test esi, esi
push edi
mov dword [ebp], 0
mov edi, 0x80004005
mov byte [ebx], 0
je 0x40e9a6
mov ax, word [esi]
test ax, ax
je 0x40e9a6
cmp ax, 0x4d
je 0x40e84e
cmp ax, 0x6d
jne 0x40e8c4
mov ax, word [esi + 2]
cmp ax, 0x53
je 0x40e85e
cmp ax, 0x73
jne 0x40e8c4
mov ax, word [esi + 4]
cmp ax, 0x48
je 0x40e86e
cmp ax, 0x68
jne 0x40e8c4
mov ax, word [esi + 6]
cmp ax, 0x54
je 0x40e87e
cmp ax, 0x74
jne 0x40e8c4
mov ax, word [esi + 8]
cmp ax, 0x4d
je 0x40e88e
cmp ax, 0x6d
jne 0x40e8c4
mov ax, word [esi + 0xa]
cmp ax, 0x4c
je 0x40e89e
cmp ax, 0x6c
jne 0x40e8c4
cmp word [esi + 0xc], 0x3a
jne 0x40e8c4
mov eax, dword [esp + 0x38]
push ebp
push eax
push 1
push 0
push str._i3_
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov byte [ebx], 1
mov edi, eax
jmp 0x40e9a8
push 0x49a208
push esi
call fcn.004014b0
add esp, 8
test eax, eax
je 0x40e8f5
mov ecx, dword [esp + 0x38]
push ebp
push ecx
push 1
push 0
push 0x49a1f8
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov byte [ebx], 1
mov edi, eax
jmp 0x40e9a8
push esi
call dword [0x4b5480]
cmp eax, 0xff
jge 0x40e9a2
cmp word [esi], 0x7b
jne 0x40e91b
lea edx, [esp + 0x10]
push edx
push esi
call dword [sym.imp.ole32.dll_CLSIDFromString]
jmp 0x40e927
lea eax, [esp + 0x10]
push eax
push esi
call dword [sym.imp.ole32.dll_CLSIDFromProgID]
mov edi, eax
xor ebx, ebx
cmp edi, ebx
jl 0x40e9a2
mov esi, dword [esp + 0x44]
cmp esi, ebx
je 0x40e98c
mov dword [esp + 0x3c], ebx
lea ecx, [esp + 0x3c]
push ecx
push 0x49a1e8
push ebx
push 1
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x40], ebx
call dword [sym.imp.ole32.dll_CoGetClassObject]
mov edi, eax
cmp edi, ebx
jl 0x40e972
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax]
push ebp
push esi
push edx
push ebx
push ebx
push eax
call dword [ecx + 0x1c]
mov edi, eax
mov eax, dword [esp + 0x3c]
cmp eax, ebx
mov dword [esp + 0x2c], 0xffffffff
je 0x40e9a2
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, edi
jmp 0x40e9a8
mov edx, dword [esp + 0x38]
push ebp
push edx
push 1
push ebx
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov edi, eax
mov eax, edi
jmp 0x40e9a8
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x14]
pop ebp
call fcn.0048c3c7
add esp, 0x20
ret
Function at 0x410e30
Capabilities:
Extract resource via kernel32 functions

Disassembly:
sub esp, 8
push ebx
push ebp
push esi
push edi
call fcn.00410cd0
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
mov ebx, dword [0x4b5414]
push 5
push edi
push esi
mov dword [esp + 0x20], 0xffffffff
call ebx
mov ebp, eax
test ebp, ebp
je 0x410f14
push 0xf0
push edi
push esi
call ebx
mov ebx, dword [sym.imp.KERNEL32.dll_LoadResource]
xor edi, edi
test eax, eax
je 0x410e84
push eax
push esi
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov edi, eax
push ebp
push esi
mov dword [esp + 0x18], 0
call ebx
test eax, eax
je 0x410eed
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov ebx, eax
test ebx, ebx
je 0x410eed
push edi
push ebx
call fcn.00409fa0
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
add esp, 8
mov edi, eax
mov eax, dword [esp + 0x2c]
push eax
push ecx
push edx
push edi
push esi
call dword [0x4b54c4]
mov esi, eax
test esi, esi
je 0x410ecf
cmp esi, 0xffffffff
jne 0x410ed9
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x10], eax
cmp edi, ebx
je 0x410efb
push edi
call dword [sym.imp.KERNEL32.dll_GlobalHandle]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFree]
jmp 0x410efb
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x410f0a
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
Function at 0x4121b0
Capabilities:
Log keystrokes via polling

Disassembly:
push ecx
push ebx
mov ebx, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push ebp
push esi
mov esi, ecx
mov eax, dword [esi]
cmp eax, 0xff99
push edi
jne 0x4121d0
mov dword [esp + 0x10], SysReAllocString
jmp 0x4121da
push eax
call ebx
movsx eax, ax
mov dword [esp + 0x10], eax
mov eax, dword [esi + 4]
cmp eax, 0xff99
jne 0x4121eb
mov ebp, SysReAllocString
jmp 0x4121f1
push eax
call ebx
movsx ebp, ax
mov eax, dword [esi + 8]
cmp eax, 0xff99
jne 0x412202
mov edi, SysReAllocString
jmp 0x412208
push eax
call ebx
movsx edi, ax
mov esi, dword [esi + 0xc]
cmp esi, 0xff99
jne 0x41222d
mov edx, dword [esp + 0x10]
mov eax, SysReAllocString
and eax, edi
pop edi
and eax, ebp
pop esi
and eax, edx
pop ebp
and eax, 0x80000000
pop ebx
pop ecx
ret
push esi
call ebx
mov edx, dword [esp + 0x10]
movsx eax, ax
and eax, edi
pop edi
and eax, ebp
pop esi
and eax, edx
pop ebp
and eax, 0x80000000
pop ebx
pop ecx
ret

Function at 0x4129b0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x14
mov eax, dword [0x4b55b8]
push esi
xor esi, esi
mov dword [esp + 8], esi
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], esi
mov eax, dword [eax + 0x1c]
cmp eax, esi
push edi
mov edi, ecx
je 0x412ae9
mov ecx, dword [eax]
push eax
call dword [ecx + 0x28]
cmp eax, 0xd
jne 0x412ae9
push 1
lea edx, [esp + 0xc]
push edx
push str.HD_HotkeyMappings
mov dword [esp + 0x14], 1
call fcn.0043acd0
mov eax, dword [esp + 0x14]
add esp, 0xc
cmp eax, esi
je 0x412ae9
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push ebx
push 0x41
call esi
push 0x12
movsx ebx, ax
call esi
movsx eax, ax
and ebx, eax
test ebx, ebx
jns 0x412a43
mov ecx, dword [edi]
lea edx, [esp + 0x10]
push edx
push 0x39
push edi
call dword [ecx + 0x28]
pop ebx
pop edi
xor eax, eax
pop esi
add esp, 0x14
ret 0x10
push 0x42
call esi
push 0x12
movsx ebx, ax
call esi
movsx eax, ax
and ebx, eax
test ebx, ebx
jns 0x412a6f
mov ecx, dword [edi]
lea edx, [esp + 0x10]
push edx
push 0x14
push edi
call dword [ecx + 0x28]
pop ebx
pop edi
xor eax, eax
pop esi
add esp, 0x14
ret 0x10
push 0x43
call esi
push 0x12
movsx ebx, ax
call esi
movsx eax, ax
and ebx, eax
test ebx, ebx
jns 0x412a9b
mov ecx, dword [edi]
lea edx, [esp + 0x10]
push edx
push 0x34
push edi
call dword [ecx + 0x28]
pop ebx
pop edi
xor eax, eax
pop esi
add esp, 0x14
ret 0x10
push 0x44
call esi
push 0x12
movsx ebx, ax
call esi
movsx eax, ax
and ebx, eax
test ebx, ebx
jns 0x412ac7
mov ecx, dword [edi]
lea edx, [esp + 0x10]
push edx
push 0x28
push edi
call dword [ecx + 0x28]
pop ebx
pop edi
xor eax, eax
pop esi
add esp, 0x14
ret 0x10
push 0x12
call esi
push 0xd
movsx ebx, ax
call esi
movsx eax, ax
and ebx, eax
test ebx, ebx
jns 0x412ae8
mov ecx, dword [edi]
lea edx, [esp + 0x10]
push edx
push 0xf
push edi
call dword [ecx + 0x28]
pop ebx
pop edi
xor eax, eax
pop esi
add esp, 0x14
ret 0x10