joyce8/EMBER2024-capa huggingface dataset:
Function at 0x449f70
Capabilities:
Get disk information

Disassembly:
push 0xffffffffffffffff
push 0x54d180
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
mov eax, dword [0x5b0630]
xor eax, esp
mov dword [esp + 0x38], eax
push ebx
push esi
mov eax, dword [0x5b0630]
xor eax, esp
push eax
lea eax, [esp + 0x48]
mov dword fs:[0], eax
xor esi, esi
push esi
push esi
push esi
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x24]
push ecx
push esi
push esi
push 0x5902c0
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], esi
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
mov ebx, dword [esp + 0x14]
xor eax, eax
lea esi, [esp + 0x1c]
mov dword [esp + 0x10], ebx
mov byte [esp + 0x1c], 0
mov dword [esp + 0x1d], eax
mov word [esp + 0x21], ax
mov byte [esp + 0x23], al
call fcn.00449e60
mov dl, byte [esp + 0x12]
add byte [esp + 0x1c], dl
mov cl, byte [esp + 0x21]
mov al, byte [esp + 0x1e]
add al, byte [esp + 0x13]
add byte [esp + 0x1f], bl
add cl, dl
movzx edx, bh
push edx
movzx edx, bl
push edx
movzx edx, byte [esp + 0x28]
movzx ecx, cl
push ecx
movzx ecx, byte [esp + 0x2b]
push edx
push ecx
movzx ecx, byte [esp + 0x30]
movzx edx, al
movzx eax, byte [esp + 0x31]
push edx
push eax
push ecx
push str._02X_02X_02X_02X_02X_02X_02X_02X
lea edx, [esp + 0x54]
push 0x11
push edx
call fcn.005293e2
add esp, 0x2c
lea eax, [esp + 0x30]
push eax
lea ebx, [esp + 0x14]
call fcn.0043c1d0
xor ebx, ebx
mov dword [esp + 0x50], ebx
mov esi, dword [eax]
cmp esi, ebx
je 0x44a06e
cmp dword [esi + 4], ebx
jne 0x44a069
mov ecx, dword [esi]
push ecx
call fcn.00546bf0
mov dword [esi + 4], eax
mov esi, dword [esi + 4]
jmp 0x44a070
xor esi, esi
push esi
lea ecx, [esp + 0x20]
call fcn.0042aa70
push eax
push str.MachId
mov ecx, edi
mov byte [esp + 0x58], 1
call fcn.0042bf30
mov ecx, eax
call fcn.0042af10
lea ecx, [esp + 0x1c]
mov byte [esp + 0x50], bl
call fcn.0042ae10
mov esi, dword [esp + 0x10]
cmp esi, ebx
je 0x44a0e0
lea edx, [esi + 8]
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x44a0e0
cmp esi, ebx
je 0x44a0e0
mov eax, dword [esi]
cmp eax, ebx
je 0x44a0c7
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x44a0d7
push eax
call fcn.00450c1b
add esp, 4
push esi
call fcn.00450c1b
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
mov ecx, dword [esp + 0x38]
xor ecx, esp
call fcn.00523c4c
add esp, 0x48
ret
Function at 0x44a100
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2c
mov eax, dword [0x5b0630]
xor eax, esp
mov dword [esp + 0x28], eax
push ebx
push esi
push edi
xor esi, esi
push esi
push esi
push esi
lea eax, [esp + 0x20]
push eax
mov edi, ecx
lea ecx, [esp + 0x20]
push ecx
push esi
push esi
push 0x5902c0
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], esi
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
mov ebx, dword [esp + 0x10]
xor eax, eax
lea esi, [esp + 0x18]
mov dword [esp + 0xc], ebx
mov byte [esp + 0x18], 0
mov dword [esp + 0x19], eax
mov word [esp + 0x1d], ax
mov byte [esp + 0x1f], al
call fcn.00449e60
mov dl, byte [esp + 0xe]
add byte [esp + 0x18], dl
mov cl, byte [esp + 0x1d]
mov al, byte [esp + 0x1a]
add al, byte [esp + 0xf]
add byte [esp + 0x1b], bl
add cl, dl
movzx edx, bh
push edx
movzx edx, bl
push edx
movzx edx, byte [esp + 0x24]
movzx ecx, cl
push ecx
movzx ecx, byte [esp + 0x27]
push edx
push ecx
movzx ecx, byte [esp + 0x2c]
movzx edx, al
movzx eax, byte [esp + 0x2d]
push edx
push eax
push ecx
push str._02X_02X_02X_02X_02X_02X_02X_02X
lea edx, [esp + 0x44]
push 0x11
push edx
call fcn.005293e2
add esp, 0x2c
call fcn.00413cb0
lea eax, [esp + 0x20]
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x44a1c4
sub eax, ecx
push eax
lea eax, [esp + 0x24]
push eax
mov eax, edi
call fcn.0040e300
mov ecx, dword [esp + 0x34]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00523c4c
mov esp, ebp
pop ebp
ret
Function at 0x44b3f0
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 0x44b409
pop edi
pop ebx
ret
push esi
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x44b444
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, dword [esp + 0x18]
add eax, esi
and ecx, 0xf
jbe 0x44b440
lea ebx, [ebx]
cmp esi, eax
jae 0x44b444
sub ecx, 1
movzx edx, word [esi]
lea esi, [esi + edx*2 + 2]
jne 0x44b430
cmp esi, eax
jb 0x44b44a
pop esi
pop edi
xor eax, eax
pop ebx
ret
movzx eax, word [esi]
neg eax
sbb eax, eax
and eax, esi
pop esi
pop edi
pop ebx
ret

Function at 0x44bb50
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x54a129
mov eax, dword fs:[0]
push eax
push ecx
push esi
mov eax, dword [0x5b0630]
xor eax, esp
push eax
lea eax, [esp + 0xc]
mov dword fs:[0], eax
mov esi, dword [esp + 0x1c]
mov ecx, 7
xor eax, eax
xor edx, edx
mov dword [esi + 0x18], ecx
mov dword [esi + 0x14], eax
mov word [esi + 4], dx
mov dword [esp + 0x14], eax
mov dword [esi + 0x34], ecx
mov dword [esi + 0x30], eax
mov word [esi + 0x20], dx
mov dword [esi + 0x50], ecx
mov dword [esi + 0x4c], eax
mov word [esi + 0x3c], ax
lea ecx, [esi + 0x54]
push ecx
mov byte [esp + 0x18], 2
call fcn.0043a3a0
lea edx, [esi + 0x6c]
push edx
mov byte [esp + 0x18], 3
call fcn.0044d120
mov eax, esi
mov ecx, dword [esp + 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
add esp, 0x10
ret 4
Function at 0x44ecde
Capabilities:
Check mutex on windows

Disassembly:
push esi
push str.SHENGQUGAMES_INSTALLER_CHECK_SINGLE
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x44ed19
push 0
push 0x55090c
push 0x5508f8
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
pop esi
ret

Function at 0x44f186
Capabilities:
Hide graphical window

Disassembly:
push esi
mov esi, ecx
mov ecx, dword [0x5b2f00]
push 0
call fcn.0045e01b
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
mov ecx, dword [esi + 0x2c8]
call fcn.00403670
pop esi
jmp dword [sym.imp.USER32.dll_PostQuitMessage]
Function at 0x450339
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
sub esp, 0x148
lea ebp, [esp - 4]
mov eax, dword [0x5b0630]
xor eax, ebp
mov dword [ebp + 0x148], eax
push 0xc
mov eax, 0x547465
call fcn.00523c5b
mov esi, ecx
mov eax, dword [esi]
push 0x551024
call dword [eax + 0x14]
push eax
call fcn.0045aa46
push eax
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov edi, eax
mov dword [ebp - 0x10], edi
test edi, edi
je 0x450487
push edi
call fcn.0045aa46
push eax
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x18], eax
push edi
test eax, eax
jne 0x4503a3
call dword [sym.imp.KERNEL32.dll_FreeResource]
jmp 0x450487
call fcn.0045aa46
push eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov edi, eax
test edi, edi
je 0x450487
push edi
call fcn.00450c26
pop ecx
mov dword [0x5b2f10], eax
test eax, eax
je 0x4503e2
push edi
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_LockResource]
push eax
push dword [0x5b2f10]
call fcn.00524680
add esp, 0xc
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_FreeResource]
push edi
push dword [0x5b2f10]
call fcn.0045aabd
pop ecx
pop ecx
push 0xfffffffffffffff0
mov ecx, esi
call fcn.0045e01b
push eax
call dword [sym.imp.USER32.dll_GetWindowLongW]
and eax, 0xff3fffff
or eax, 0x6000000
push eax
push 0xfffffffffffffff0
mov ecx, esi
call fcn.0045e01b
push eax
call dword [sym.imp.USER32.dll_SetWindowLongW]
push dword [esi + 4]
lea edi, [esi + 0x14]
mov ecx, edi
call fcn.0045a911
lea ecx, [ebp]
call fcn.00462810
and dword [ebp - 4], 0
push 0
push edi
lea eax, [ebp - 0x14]
push eax
push 0
push ecx
mov eax, esp
mov dword [ebp - 0x14], 0x550a54
lea ecx, [ebp]
mov dword [ebp - 0x10], esp
mov dword [eax], str.InstallFrame.xml
call fcn.00463038
push eax
mov ecx, edi
call fcn.0045dbd3
lea eax, [esi + 0x10]
push eax
mov ecx, edi
call fcn.0045b109
mov ecx, esi
call fcn.00450070
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp]
call fcn.0045e9b2
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x148]
xor ecx, ebp
call fcn.00523c4c
add ebp, 0x14c
leave
ret 0x10

Function at 0x45a8be
Capabilities:
Log keystrokes via polling

Disassembly:
push esi
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push edi
push 0x11
xor edi, edi
call esi
test ax, ax
jge 0x45a8d4
push 8
pop edi
push 2
call esi
test ax, ax
jge 0x45a8e0
or edi, 1
push 1
call esi
test ax, ax
jge 0x45a8ec
or edi, 2
push 0x10
call esi
test ax, ax
jge 0x45a8f8
or edi, 4
push 0x12
call esi
test ax, ax
jge 0x45a904
or edi, 0x20
mov eax, edi
pop edi
pop esi
ret
Function at 0x45c448
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
mov esi, ecx
call dword [sym.imp.USER32.dll_GetFocus]
mov ecx, dword [esi]
mov ebx, dword [ebp + 8]
cmp eax, ecx
je 0x45c46d
cmp ebx, dword [esi + 0x54]
je 0x45c46d
push ecx
call dword [sym.imp.USER32.dll_SetFocus]
mov eax, dword [esi + 0x54]
cmp ebx, eax
je 0x45c52f
push edi
test eax, eax
je 0x45c4c0
push 7
pop ecx
xor eax, eax
lea edi, [ebp - 0x1c]
rep stosd dword es:[edi], eax
mov dword [ebp - 0x20], 0x14
mov dword [ebp - 0x1c], ebx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esi + 0x54]
lea edx, [ebp - 0x20]
mov dword [ebp - 0x18], eax
mov eax, dword [ecx]
push edx
call dword [eax + pe_nt_image_headers32]
xor edi, edi
push edi
push edi
push edi
push str.killfocus
push dword [esi + 0x54]
mov ecx, esi
call fcn.0045bf7d
mov dword [esi + 0x54], edi
test ebx, ebx
je 0x45c52e
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x1c]
cmp eax, esi
jne 0x45c52e
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0xc8]
test al, al
je 0x45c52e
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0xd4]
test al, al
je 0x45c52e
push 7
pop ecx
xor eax, eax
lea edi, [ebp - 0x1c]
rep stosd dword es:[edi], eax
mov dword [esi + 0x54], ebx
mov dword [ebp - 0x20], 0x15
mov dword [ebp - 0x1c], ebx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esi + 0x54]
lea edx, [ebp - 0x20]
mov dword [ebp - 0x18], eax
mov eax, dword [ecx]
push edx
call dword [eax + pe_nt_image_headers32]
xor eax, eax
push eax
push eax
push eax
push str.setfocus
push dword [esi + 0x54]
mov ecx, esi
call fcn.0045bf7d
pop edi
pop esi
pop ebx
leave
ret 4
Function at 0x45c72c
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
push esi
mov esi, ecx
push edi
lea edi, [esi + 0xd0]
mov ecx, edi
xor ebx, ebx
call fcn.0045e01b
test eax, eax
jle 0x45c77b
push ebx
mov ecx, edi
mov byte [ebp - 1], 0
call fcn.0045fe8b
mov edx, dword [eax]
lea ecx, [ebp - 1]
push ecx
push dword [ebp + 0x10]
mov ecx, eax
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [edx]
cmp byte [ebp - 1], 0
jne 0x45c7dc
mov ecx, edi
inc ebx
call fcn.0045e01b
cmp ebx, eax
jl 0x45c74a
mov eax, dword [ebp + 8]
sub eax, 0x100
je 0x45c835
sub eax, 4
je 0x45c7e0
dec eax
dec eax
jne 0x45c82c
push dword [ebp + 0xc]
mov word [ebp + 8], ax
lea edi, [ebp + 0xa]
stosw word es:[edi], ax
call fcn.00527e47
pop ecx
mov ecx, dword [esi + 0x50]
push reloc.WS2_32.dll_ioctlsocket
lea edx, [ebp + 8]
push edx
mov word [ebp + 8], ax
mov eax, dword [ecx]
push 0x45ba04
call dword [eax + 0xfc]
mov esi, eax
test esi, esi
je 0x45c82c
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xf0]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov al, 1
jmp 0x45c82e
cmp dword [esi + 0x54], 0
je 0x45c82c
xor eax, eax
push 7
pop ecx
lea edi, [ebp - 0x20]
rep stosd dword es:[edi], eax
mov ax, word [ebp + 0xc]
mov word [ebp - 0x10], ax
mov eax, dword [esi + 0x64]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x68]
mov dword [ebp - 0x24], 6
mov dword [ebp - 0x14], eax
call fcn.0045a8be
mov word [ebp - 0xe], ax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esi + 0x54]
lea edx, [ebp - 0x24]
mov dword [ebp - 0x1c], eax
mov eax, dword [ecx]
push edx
call dword [eax + pe_nt_image_headers32]
xor al, al
pop edi
pop esi
pop ebx
leave
ret 0x10
cmp dword [ebp + 0xc], 9
jne 0x45c82c
cmp dword [esi + 0x54], 0
je 0x45c884
mov ecx, dword [esi + 0x54]
mov eax, dword [ecx]
call dword [eax + 0xc8]
test al, al
je 0x45c884
mov ecx, dword [esi + 0x54]
mov eax, dword [ecx]
call dword [eax + 0xd4]
test al, al
je 0x45c884
mov ecx, dword [esi + 0x54]
mov eax, dword [ecx]
push str.RichEditUI
call dword [eax + 0xc]
push eax
call fcn.00527cd0
pop ecx
pop ecx
test eax, eax
je 0x45c884
mov ecx, dword [esi + 0x54]
call fcn.0047059e
test al, al
jne 0x45c82c
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setge al
movzx eax, al
push eax
mov ecx, esi
call fcn.0045c5e0
jmp 0x45c7dc
Function at 0x45f10a
Capabilities:
Get file size
Read file on windows

Disassembly:
push ebp
sub esp, 0x2b4
lea ebp, [esp - 4]
mov eax, dword [0x5b0630]
xor eax, ebp
mov dword [ebp + 0x2b4], eax
push 0xc
mov eax, 0x547db8
call fcn.00523c5b
mov edi, dword [ebp + 0x2c0]
mov ebx, ecx
call fcn.0045e6f3
call fcn.0045aa55
push eax
lea ecx, [ebp + 0x230]
call fcn.00460271
xor esi, esi
mov dword [ebp - 4], esi
call fcn.0045aa5b
mov ecx, eax
call fcn.0045ffe4
test al, al
je 0x45f26c
push edi
lea ecx, [ebp + 0x230]
call fcn.00460074
push esi
push 0x80
push 3
push esi
push 1
push connect
lea ecx, [ebp + 0x230]
call fcn.0045fed6
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x18], eax
push esi
cmp eax, 0xffffffff
jne 0x45f1e0
push str.Error_opening_file
mov ecx, ebx
call fcn.0045e8c9
mov bl, al
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 0x230]
call fcn.0045febc
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x2b4]
xor ecx, ebp
call fcn.00523c4c
add ebp, 0x2b8
leave
ret 8
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
cmp edi, esi
jne 0x45f1f5
push esi
push str.File_is_empty
jmp 0x45f1a1
cmp edi, 0x400000
jbe 0x45f205
push esi
push 0x553084
jmp 0x45f1a1
push edi
mov dword [ebp - 0x14], esi
call fcn.00450c26
pop ecx
push esi
lea ecx, [ebp - 0x14]
push ecx
push edi
push eax
push dword [ebp - 0x18]
mov dword [ebp - 0x10], eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x14], edi
je 0x45f24b
push dword [ebp - 0x10]
call fcn.00450c1b
pop ecx
mov ecx, ebx
call fcn.0045e6f3
push esi
push str.Could_not_read_file
jmp 0x45f1a1
push dword [ebp + 0x2c4]
mov ecx, ebx
push edi
push dword [ebp - 0x10]
call fcn.0045efb9
push dword [ebp - 0x10]
mov bl, al
call fcn.00450c1b
pop ecx
jmp 0x45f1aa
call fcn.0045aa5b
push eax
lea ecx, [ebp + 0x230]
call fcn.0046005a
call fcn.0045aa61
test al, al
je 0x45f28d
call fcn.0045aa67
jmp 0x45f2a4
push 2
push esi
lea ecx, [ebp + 0x230]
call fcn.0045fed6
push eax
call fcn.0046aee9
add esp, 0xc
mov dword [ebp - 0x10], eax
cmp eax, esi
jne 0x45f2b6
push esi
push str.Error_opening_zip_file
jmp 0x45f1a1
lea eax, [ebp]
push eax
lea eax, [ebp - 0x18]
push eax
push 1
push edi
push dword [ebp - 0x10]
call fcn.004695e7
add esp, 0x14
test eax, eax
je 0x45f2db
push esi
push str.Could_not_find_ziped_file
jmp 0x45f1a1
mov eax, dword [ebp + 0x22c]
mov dword [ebp - 0x14], eax
cmp eax, esi
je 0x45f1ed
cmp eax, 0x400000
ja 0x45f1fd
push eax
call fcn.00450c26
push 3
push dword [ebp - 0x14]
mov edi, eax
push edi
push dword [ebp - 0x18]
push dword [ebp - 0x10]
call fcn.0046af46
add esp, 0x18
cmp eax, esi
je 0x45f342
cmp eax, 0x600
je 0x45f342
push edi
call fcn.00450c1b
pop ecx
call fcn.0045aa61
test al, al
jne 0x45f337
push dword [ebp - 0x10]
call fcn.0046af80
pop ecx
push esi
push str.Could_not_unzip_file
jmp 0x45f1a1
call fcn.0045aa61
test al, al
jne 0x45f354
push dword [ebp - 0x10]
call fcn.0046af80
pop ecx
push dword [ebp + 0x2c4]
mov ecx, ebx
push dword [ebp - 0x14]
push edi
call fcn.0045efb9
push edi
jmp 0x45f25f
Function at 0x4681c0
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
mov edx, dword [esp + 8]
test edx, edx
jne 0x4681cb
xor eax, eax
ret
mov eax, dword [esp + 4]
push esi
push edi
mov edi, dword [esp + 0x14]
not eax
mov ecx, 0xff
cmp edi, 8
jb 0x468286
mov esi, edi
shr esi, 3
push ebx
movzx ebx, byte [edx]
xor ebx, eax
and ebx, ecx
shr eax, 8
xor eax, dword [ebx*4 + 0x555a58]
inc edx
movzx ebx, byte [edx]
xor ebx, eax
and ebx, ecx
shr eax, 8
xor eax, dword [ebx*4 + 0x555a58]
inc edx
movzx ebx, byte [edx]
xor ebx, eax
and ebx, ecx
shr eax, 8
xor eax, dword [ebx*4 + 0x555a58]
inc edx
movzx ebx, byte [edx]
xor ebx, eax
and ebx, ecx
shr eax, 8
xor eax, dword [ebx*4 + 0x555a58]
inc edx
movzx ebx, byte [edx]
xor ebx, eax
and ebx, ecx
shr eax, 8
xor eax, dword [ebx*4 + 0x555a58]
inc edx
movzx ebx, byte [edx]
xor ebx, eax
and ebx, ecx
shr eax, 8
xor eax, dword [ebx*4 + 0x555a58]
inc edx
movzx ebx, byte [edx]
xor ebx, eax
and ebx, ecx
shr eax, 8
xor eax, dword [ebx*4 + 0x555a58]
inc edx
movzx ebx, byte [edx]
xor ebx, eax
and ebx, ecx
shr eax, 8
xor eax, dword [ebx*4 + 0x555a58]
inc edx
sub edi, 8
dec esi
jne 0x4681eb
pop ebx
test edi, edi
je 0x46829f
movzx esi, byte [edx]
xor esi, eax
and esi, ecx
shr eax, 8
xor eax, dword [esi*4 + 0x555a58]
inc edx
dec edi
jne 0x46828a
pop edi
not eax
pop esi
ret

Function at 0x468736
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 0x14]
push edi
mov edi, dword [ebp + 0xc]
imul edi, dword [ebp + 0x10]
cmp byte [esi], 0
je 0x46876a
push 0
lea eax, [ebp + 0x10]
push eax
push edi
push dword [ebp + 8]
push dword [esi + 4]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x468765
mov byte [esi + 8], 1
mov eax, dword [ebp + 0x10]
jmp 0x468792
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x14]
lea edx, [ecx + edi]
cmp edx, eax
jbe 0x46877b
sub eax, ecx
mov edi, eax
mov eax, dword [esi + 0x10]
push edi
add eax, ecx
push eax
push dword [ebp + 8]
call fcn.00524680
add esp, 0xc
add dword [esi + 0x18], edi
mov eax, edi
xor edx, edx
div dword [ebp + 0xc]
pop edi
pop esi
pop ebp
ret

Function at 0x46952f
Capabilities:
Create directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x414
mov eax, dword [0x5b0630]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x4695d9
movzx ecx, word [esi]
test cx, cx
je 0x4695d9
mov eax, esi
mov edx, esi
movzx ecx, cx
cmp cx, 0x2f
je 0x46956d
cmp cx, 0x5c
jne 0x46956f
mov eax, edx
inc edx
inc edx
movzx ecx, word [edx]
test cx, cx
jne 0x469561
cmp eax, esi
je 0x4695ad
push edi
sub eax, esi
mov edi, eax
sar edi, 1
push edi
lea eax, [ebp - 0x20c]
push esi
push eax
call fcn.005241a2
xor eax, eax
mov word [ebp + edi*2 - 0x20c], ax
lea eax, [ebp - 0x20c]
push eax
push ebx
call fcn.0046952f
add esp, 0x14
pop edi
lea eax, [ebp - 0x414]
push ebx
push eax
call fcn.00528753
lea eax, [ebp - 0x414]
push esi
push eax
call fcn.00528725
add esp, 0x10
push 0
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.00523c4c
leave
ret
Function at 0x46ab0a
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, ecx
cmp dword [esi], 0
jne 0x46ab85
cmp dword [esi + 4], 0xffffffff
jne 0x46ab85
push edi
lea edi, [esi + 0x138]
push edi
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push 0x5892a0
push edi
call fcn.00528725
cmp dword [ebp + 0x10], 1
pop ecx
pop ecx
pop edi
jne 0x46ab57
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetFileType]
cmp eax, 1
je 0x46ab57
mov eax, 0x2000000
jmp 0x46ab8a
lea eax, [ebp + 0x10]
push eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0046854c
add esp, 0x10
test eax, eax
jne 0x46ab75
mov eax, dword [ebp + 0x10]
jmp 0x46ab8a
push eax
call fcn.0046a706
mov dword [esi], eax
mov eax, dword [0x5b5340]
pop ecx
jmp 0x46ab8a
mov eax, 0x1000000
pop esi
pop ebp
ret 0xc
Function at 0x47075c
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
mov esi, ecx
xor ebx, ebx
cmp dword [esi + 0x4d4], ebx
je 0x4707c4
cmp dword [ebp + 8], 0x100
jne 0x4707b3
cmp word [ebp + 0xc], 0xd
jne 0x4707b3
cmp byte [esi + 0x4da], bl
je 0x47079a
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x4707b3
cmp byte [esi + 0x4db], bl
jne 0x4707b3
mov ecx, dword [esi + 0x40]
cmp ecx, ebx
je 0x4707af
push ebx
push ebx
push ebx
push 0x556418
push esi
call fcn.0045bf7d
xor eax, eax
jmp 0x4707c7
mov eax, dword [esi + 0x4d4]
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx]
pop esi
pop ebx
pop ebp
jmp dword [eax + 0xc]
xor eax, eax
inc eax
pop esi
pop ebx
pop ebp
ret 0x10

Function at 0x47b1f1
Capabilities:
Get graphical window text

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
mov eax, dword [0x5b0630]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, ecx
xor ebx, ebx
push edi
cmp byte [esi + 0x18], bl
je 0x47b262
cmp dword [esi + 0x10], ebx
je 0x47b262
push dword [esi + 4]
call dword [sym.imp.USER32.dll_GetWindowTextLengthW]
mov edi, eax
inc edi
lea eax, [edi + edi]
call fcn.00528780
mov dword [ebp - 8], esp
cmp esp, ebx
je 0x47b262
push edi
push dword [ebp - 8]
push dword [esi + 4]
call dword [sym.imp.USER32.dll_GetWindowTextW]
mov ecx, dword [esi + 0x10]
push dword [ebp - 8]
add ecx, 0x1b8
call fcn.00460038
mov ecx, dword [esi + 0x10]
mov eax, dword [ecx]
push ebx
push ebx
push ebx
push str.textchanged
push ecx
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0045bf7d
xor eax, eax
lea esp, [ebp - 0x14]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00523c4c
leave
ret 0x10
Function at 0x484c98
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 0x484cbd
cmp eax, edi
jge 0x484cb5
mov eax, esi
call fcn.0048464c
mov ecx, edi
shr dword [esi + 0xc], cl
sub dword [esi + 8], edi
xor ecx, ecx
cmp dword [esi + 8], ecx
jle 0x484cdf
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 0x484cc4
cmp ecx, 4
jge 0x484cfe
mov edi, dword [esi + 4]
mov eax, dword [esi]
cmp eax, edi
jb 0x484cec
xor eax, eax
jmp 0x484cf4
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 0x484ce2
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 0x484d30
mov eax, str.zlib_corrupt
call fcn.00482269
jmp 0x484d6b
mov eax, dword [esi]
add eax, edi
cmp eax, dword [esi + 4]
jbe 0x484d40
mov eax, str.read_past_buffer
jmp 0x484d29
mov eax, dword [esi + 0x10]
add eax, edi
cmp eax, dword [esi + 0x18]
jbe 0x484d55
mov ecx, edi
call fcn.00484677
test eax, eax
je 0x484d6b
push edi
push dword [esi]
push dword [esi + 0x10]
call fcn.00524680
add dword [esi], edi
add dword [esi + 0x10], edi
xor eax, eax
add esp, 0xc
inc eax
pop edi
pop esi
leave
ret