joyce8/EMBER2024-capa huggingface dataset:
Function at 0x490350
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
mov esi, eax
xor ebx, ebx
push edi
mov dword [ebp - 4], 0
mov dword [esi + 0x6af80], 2
cmp dword [esi + 0x6af90], ebx
je 0x49056f
lea ebx, [ebx]
cmp dword [esi + 0x6af90], 3
jb 0x4903d7
mov ecx, dword [esi + 0x6af84]
movzx eax, byte [ecx + esi + 0x1af72]
mov edx, dword [esi + 0x6af7c]
shl edx, 5
xor eax, edx
and eax, 0x7fff
mov dword [esi + 0x6af7c], eax
mov eax, dword [esi + eax*4 + 0x4af70]
and ecx, 0x7fff
mov dword [esi + ecx*4 + 0x2af70], eax
mov ecx, dword [esi + 0x6af84]
mov dword [ebp - 4], eax
mov eax, dword [esi + 0x6af7c]
mov dword [esi + eax*4 + 0x4af70], ecx
mov ecx, dword [ebp - 4]
test ecx, ecx
je 0x490417
mov edx, dword [esi + 0x6af84]
sub edx, ecx
cmp edx, 0x7efa
ja 0x490417
mov eax, dword [esi + 0x6af90]
cmp dword [esi + 0x6afa0], eax
jbe 0x490402
mov dword [esi + 0x6afa0], eax
mov eax, ecx
call fcn.00490060
mov ebx, eax
mov eax, dword [esi + 0x6af90]
cmp ebx, eax
jbe 0x490417
mov ebx, eax
mov eax, dword [esi + 0x6af84]
mov ecx, esi
cmp ebx, 3
jb 0x4904fc
sub eax, dword [esi + 0x6af88]
lea edx, [ebx - 3]
call fcn.0048f850
sub dword [esi + 0x6af90], ebx
mov ecx, dword [esi + 0x6af90]
mov dword [ebp - 8], eax
cmp ebx, dword [esi + 0x6af98]
ja 0x4904c4
cmp ecx, 3
jb 0x4904c4
mov edi, 1
sub ebx, edi
lea esp, [esp]
add dword [esi + 0x6af84], edi
mov edx, dword [esi + 0x6af84]
movzx ecx, byte [esi + edx + 0x1af72]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
xor ecx, eax
and ecx, 0x7fff
mov dword [esi + 0x6af7c], ecx
mov ecx, dword [esi + ecx*4 + 0x4af70]
and edx, 0x7fff
sub ebx, edi
mov dword [esi + edx*4 + 0x2af70], ecx
mov edx, dword [esi + 0x6af84]
mov dword [ebp - 4], ecx
mov ecx, dword [esi + 0x6af7c]
mov dword [esi + ecx*4 + 0x4af70], edx
jne 0x490460
add dword [esi + 0x6af84], edi
mov eax, dword [ebp - 8]
jmp 0x490517
add dword [esi + 0x6af84], ebx
mov ecx, dword [esi + 0x6af84]
lea edx, [ecx + esi]
movzx ecx, byte [edx + 0x1af70]
mov dword [esi + 0x6af7c], ecx
movzx edx, byte [edx + 0x1af71]
shl ecx, 5
xor edx, ecx
xor ebx, ebx
and edx, 0x7fff
mov dword [esi + 0x6af7c], edx
jmp 0x490517
movzx edx, byte [eax + esi + 0x1af70]
xor eax, eax
call fcn.0048f850
dec dword [esi + 0x6af90]
inc dword [esi + 0x6af84]
test eax, eax
je 0x490551
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
jl 0x49052e
lea edx, [ecx + esi + 0x1af70]
jmp 0x490530
xor edx, edx
mov eax, dword [esi + 0x6af84]
sub eax, ecx
push edx
xor edi, edi
mov ecx, esi
call fcn.0048f6b0
mov ecx, dword [esi + 0x6af84]
add esp, 4
mov dword [esi + 0x6af74], ecx
cmp dword [esi + 0x6af90], 0x106
jae 0x490562
call fcn.00490200
cmp dword [esi + 0x6af90], 0
jne 0x490380
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
jl 0x490582
lea edx, [ecx + esi + 0x1af70]
jmp 0x490584
xor edx, edx
mov eax, dword [esi + 0x6af84]
sub eax, ecx
push edx
mov edi, 1
mov ecx, esi
call fcn.0048f6b0
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x491230
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
test ecx, ecx
jne 0x491237
xor eax, eax
ret
push esi
not eax
cmp edx, 8
jb 0x491314
mov esi, edx
shr esi, 3
push edi
lea esp, [esp]
movzx edi, byte [ecx]
xor edi, eax
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4f6d18]
movzx edi, byte [ecx + 1]
xor edi, eax
and edi, 0xff
inc ecx
shr eax, 8
xor eax, dword [edi*4 + 0x4f6d18]
movzx edi, byte [ecx + 1]
xor edi, eax
and edi, 0xff
inc ecx
shr eax, 8
xor eax, dword [edi*4 + 0x4f6d18]
movzx edi, byte [ecx + 1]
xor edi, eax
inc ecx
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4f6d18]
movzx edi, byte [ecx + 1]
xor edi, eax
inc ecx
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4f6d18]
movzx edi, byte [ecx + 1]
xor edi, eax
inc ecx
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4f6d18]
movzx edi, byte [ecx + 1]
inc ecx
xor edi, eax
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4f6d18]
movzx edi, byte [ecx + 1]
inc ecx
xor edi, eax
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4f6d18]
inc ecx
sub edx, 8
sub esi, 1
jne 0x491250
pop edi
test edx, edx
je 0x49133b
jmp 0x491320
movzx esi, byte [ecx]
xor esi, eax
and esi, 0xff
shr eax, 8
xor eax, dword [esi*4 + 0x4f6d18]
inc ecx
sub edx, 1
jne 0x491320
not eax
pop esi
ret

Function at 0x491340
Capabilities:
Generate random numbers using the delphi lcg
Hash data with crc32

Disassembly:
mov eax, dword [edx]
movsx ecx, cl
xor ecx, eax
shr eax, 8
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x4f6d18]
xor ecx, eax
movzx eax, cl
add eax, dword [edx + 4]
mov dword [edx], ecx
mov ecx, dword [edx + 8]
imul eax, eax, 0x8088405
inc eax
mov dword [edx + 4], eax
shr eax, 0x18
xor eax, ecx
and eax, 0xff
shr ecx, 8
xor ecx, dword [eax*4 + 0x4f6d18]
mov dword [edx + 8], ecx
ret
Function at 0x4914d0
Capabilities:
Get file size
Parse pe header
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
push ebx
push esi
mov esi, eax
push edi
lea eax, [ebp - 0x4c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetFileInformationByHandle]
test eax, eax
jne 0x4914f6
mov eax, 0x200
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x4c]
mov edx, eax
xor edi, edi
and edx, 1
je 0x49150c
mov dword [ebp - 8], 1
mov edi, dword [ebp - 8]
test al, 2
je 0x491513
or edi, 2
test al, 4
je 0x49151a
or edi, 4
mov ecx, eax
and ecx, 0x10
je 0x491524
or edi, 0x10
test al, 0x20
je 0x49152b
or edi, 0x20
test ecx, ecx
je 0x491537
or edi, 0x40000000
jmp 0x49153d
or edi, 0x80000000
or edi, 0x1000000
mov dword [ebp - 8], edi
test edx, edx
jne 0x491553
or edi, 0x800000
mov dword [ebp - 8], edi
push 0
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0x10], eax
cmp eax, 0x28
jbe 0x4915fa
mov edi, dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0
push 0
push 0
push esi
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_ReadFile]
push 0
lea ecx, [ebp - 0xc]
push ecx
push 2
lea edx, [ebp - 4]
push edx
push esi
call ebx
push 0
push 0
push 0x24
push esi
call edi
push 0
lea eax, [ebp - 0xc]
push eax
push 4
lea ecx, [ebp - 0x14]
push ecx
push esi
call ebx
mov edx, 0x54ad
cmp word [ebp - 4], dx
jne 0x4915f7
mov eax, dword [ebp - 0x14]
lea ecx, [eax + 0x34]
cmp dword [ebp - 0x10], ecx
jbe 0x4915f7
push 0
push 0
push eax
push esi
call edi
push 0
lea edx, [ebp - 0xc]
push edx
push 4
lea eax, [ebp - 0x18]
push eax
push esi
call ebx
mov eax, dword [ebp - 0x18]
cmp eax, 0x5a4d
je 0x4915f0
cmp eax, 0x454e
je 0x4915f0
cmp eax, 0x454c
je 0x4915f0
cmp eax, 0x4550
jne 0x4915f7
or dword [ebp - 8], 0x400000
mov edi, dword [ebp - 8]
mov eax, dword [ebp + 8]
test eax, eax
je 0x491603
mov dword [eax], edi
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x49160f
mov ecx, dword [ebp - 0x10]
mov dword [eax], ecx
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x38]
test esi, esi
je 0x491689
mov edx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x3c]
push 0
sub edx, 0xd53e8000
push 0x989680
sbb eax, 0x19db1de
push eax
push edx
call fcn.004b5ef0
mov dword [esi + 4], edx
push 0
mov ecx, ebx
sub ecx, 0xd53e8000
mov edx, edi
push 0x989680
sbb edx, 0x19db1de
push edx
push ecx
mov dword [esi], eax
call fcn.004b5ef0
mov ecx, dword [ebp - 0x44]
mov dword [esi + 8], eax
mov eax, dword [ebp - 0x48]
push 0
sub eax, 0xd53e8000
push 0x989680
sbb ecx, 0x19db1de
push ecx
push eax
mov dword [esi + 0xc], edx
call fcn.004b5ef0
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], edx
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x4916b1
push edi
push ebx
lea edx, [ebp - 8]
push edx
lea eax, [ebp - 4]
push eax
call fcn.00491470
movzx ecx, word [ebp - 4]
movzx edx, word [ebp - 8]
shl ecx, 0x10
add esp, 0x10
or ecx, edx
mov dword [esi], ecx
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x491760
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg
Hash data with crc32
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, ecx
cmp byte [esi + 0x2d], 0
push edi
mov edi, dword [ebp + 0xc]
mov eax, ebx
je 0x49184b
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x491797
cmp dword [esi + 0x40], edi
jae 0x491797
push eax
call fcn.004a0ba9
add esp, 4
mov dword [esi + 0x3c], 0
cmp dword [esi + 0x3c], 0
jne 0x4917af
lea eax, [edi + edi]
push eax
call fcn.004a0bb4
add esp, 4
mov dword [esi + 0x3c], eax
mov dword [esi + 0x40], edi
mov ecx, dword [esi + 0x3c]
push edi
push ebx
push ecx
call fcn.004afc00
add esp, 0xc
xor ebx, ebx
test edi, edi
jbe 0x491848
mov edx, dword [esi + 0x3c]
mov cl, byte [ebx + edx]
mov edi, dword [esi + 0x30]
mov byte [ebp + 8], cl
movsx ecx, cl
xor ecx, edi
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x4f6d18]
mov dword [ebp - 4], ecx
mov eax, dword [esi + 0x38]
shr edi, 8
xor dword [ebp - 4], edi
mov ecx, dword [ebp - 4]
mov dword [esi + 0x30], ecx
movzx ecx, cl
add ecx, dword [esi + 0x34]
mov edx, eax
imul ecx, ecx, 0x8088405
inc ecx
mov dword [esi + 0x34], ecx
shr ecx, 0x18
xor ecx, eax
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x4f6d18]
and edx, 0xfffd
mov dword [esi + 0x38], eax
mov ecx, dword [esi + 0x3c]
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor al, byte [ebp + 8]
inc ebx
mov byte [ebx + ecx - 1], al
cmp ebx, dword [ebp + 0xc]
jb 0x4917c7
mov edi, dword [ebp + 0xc]
mov eax, dword [esi + 0x3c]
mov edx, dword [esi + 0x20]
test edx, edx
je 0x49188a
mov ecx, dword [esi + 0x24]
lea ebx, [ecx + edi]
cmp ebx, dword [esi + 0x28]
jb 0x49186f
pop edi
mov dword [esi + 0x14], 0x30000
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 8
push edi
push eax
add ecx, edx
push ecx
call fcn.004afc00
add esp, 0xc
add dword [esi + 0x24], edi
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4918ac
push 0
lea edx, [ebp + 0xc]
push edx
push edi
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
pop edi
mov dword [esi + 0x14], 0x1000000
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 8
Function at 0x491b60
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, dword [esi + 0x84]
push edi
test ecx, ecx
je 0x491bb3
mov eax, dword [esi + 0x8c]
mov edi, dword [esi + 0x88]
cmp eax, edi
jae 0x491bf0
sub edi, eax
cmp edi, edx
jbe 0x491b87
mov edi, edx
push edi
add eax, ecx
push eax
push ebx
call fcn.004afc00
mov eax, dword [esi + 0x78]
add dword [esi + 0x8c], edi
add dword [esi + 0x74], edi
add esp, 0xc
mov edx, edi
mov ecx, ebx
call fcn.00491230
mov dword [esi + 0x78], eax
mov eax, edi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x7c]
test eax, eax
je 0x491be9
push 0
lea ecx, [ebp - 4]
push ecx
push edx
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x491bf0
mov edi, dword [ebp - 4]
mov eax, dword [esi + 0x78]
add dword [esi + 0x74], edi
mov edx, edi
mov ecx, ebx
call fcn.00491230
mov dword [esi + 0x78], eax
mov eax, edi
pop edi
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x14], 0x1000000
xor eax, eax
pop edi
mov esp, ebp
pop ebp
ret
Function at 0x494a20
Capabilities:
Check http status code

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4cd638
mov eax, dword fs:[0]
push eax
sub esp, 0xc
push esi
push edi
mov eax, dword [0x50cc94]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
xor edi, edi
mov dword [ebp - 4], edi
mov eax, dword [esi + 0xc]
cmp eax, edi
jne 0x494a90
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x494a7b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp + 8]
push edi
push edi
push 0x84000000
push edi
push ecx
push eax
call dword [sym.imp.WININET.dll_InternetOpenUrlW]
push ecx
mov edx, esp
mov dword [ebp - 0x14], esp
push eax
mov dword [esi + 0x10], eax
mov eax, dword [ebp + 8]
push eax
push str.CHttpRemoteFile::SetLocation:_InternetOpenUrl__s__d
push edx
call fcn.00468c80
add esp, 0x10
call fcn.004949b0
mov esi, dword [esi + 0x10]
add esp, 4
cmp esi, edi
je 0x494b00
push edi
lea ecx, [ebp - 0x14]
push ecx
lea edx, [ebp - 0x10]
push edx
push 0x20000013
push esi
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x14], 4
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
test eax, eax
mov eax, dword [ebp - 0x10]
je 0x494b3b
cmp eax, 0xc8
jne 0x494b3b
mov edi, 1
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x494b26
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
push ecx
mov ecx, esp
mov dword [ebp - 0x18], esp
push eax
push str.CHttpRemoteFile::SetLocation:_return_code:__d
push ecx
call fcn.00468c80
add esp, 0xc
call fcn.004949b0
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x494a6f

Function at 0x494b80
Capabilities:
Get http content length

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 8]
push 0
lea edx, [ebp - 4]
push edx
push eax
mov dword [eax], 0
mov eax, dword [ecx + 0x10]
push 0x20000005
push eax
mov dword [ebp - 4], 4
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
test eax, eax
je 0x494bb9
mov eax, 1
mov esp, ebp
pop ebp
ret 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor eax, eax
mov esp, ebp
pop ebp
ret 4
Function at 0x494c70
Capabilities:
Read data from internet
Receive data

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
xor edi, edi
push 0x4000
mov ebx, ecx
mov dword [ebp - 4], edi
call fcn.004b01e2
mov ecx, dword [ebx + 0x10]
add esp, 4
mov esi, eax
lea eax, [ebp - 4]
push eax
push 0x4000
push esi
push ecx
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x494cfe
mov eax, dword [ebp - 4]
add edi, eax
cmp eax, 0x4000
jne 0x494cee
lea edx, [edi + 0x4000]
push edx
push esi
call fcn.004b044e
mov edx, dword [ebx + 0x10]
add esp, 8
mov esi, eax
lea eax, [ebp - 4]
push eax
push 0x4000
lea ecx, [esi + edi]
push ecx
push edx
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
jne 0x494ca5
mov eax, dword [ebp + 8]
mov dword [eax], esi
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp + 8]
mov eax, edi
pop edi
mov dword [ecx], esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, dword [ebp + 8]
mov eax, edi
pop edi
mov dword [edx], esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
Function at 0x495180
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4cdb48
mov eax, dword fs:[0]
push eax
sub esp, 0xc
push esi
mov eax, dword [0x50cc94]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 4], 0
mov eax, dword [ebp + 8]
mov ecx, dword [ecx + 0xc]
push 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x4951fb
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4951e7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret 4
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x14]
push ecx
lea edx, [ebp - 0x10]
push edx
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x18], esp
mov esi, esp
push eax
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
call fcn.004242ab
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.0046cba0
add esp, 0xc
or edx, 0xffffffff
mov dword [ebp - 4], 0xffffffff
test eax, eax
mov eax, dword [ebp + 8]
jne 0x495271
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4951e7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret 4
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49528a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret 4
Function at 0x497cc0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [esi + 0x30]
mov ecx, 0x5a4d
mov dword [esi + 0xc], eax
push edi
cmp word [eax], cx
je 0x497d12
mov eax, dword [esi + 4]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x497ce5
push eax
call edi
mov eax, dword [esi]
test eax, eax
je 0x497cf3
cmp eax, 0xffffffff
je 0x497cf3
push eax
call edi
mov edx, dword [esi + 0x30]
push edx
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push 0x4ff4d4
lea eax, [ebp - 4]
push eax
mov dword [ebp - 4], str.Incorrect_PE_file__e_magic___IMAGE_DOS_SIGNATURE_
call fcn.004b5a3c
mov ecx, dword [eax + 0x3c]
xor edx, edx
lea edi, [ecx + 0xf8]
cmp edx, dword [esi + 0x2c]
jb 0x497d6c
ja 0x497d29
cmp edi, dword [esi + 0x28]
jb 0x497d6c
mov eax, dword [esi + 4]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x497d39
push eax
call edi
mov eax, dword [esi]
test eax, eax
je 0x497d47
cmp eax, 0xffffffff
je 0x497d47
push eax
call edi
cmp dword [esi + 0x34], 0
je 0x497d57
mov ecx, dword [esi + 0x30]
push ecx
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push 0x4ff4d4
lea edx, [ebp - 4]
push edx
mov dword [ebp - 4], str.Incorrect_PE_file__header___filesize_
call fcn.004b5a3c
add ecx, eax
mov dword [esi + 0x40], ecx
cmp dword [ecx], 0x4550
je 0x497dbc
mov eax, dword [esi + 4]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x497d89
push eax
call edi
mov eax, dword [esi]
test eax, eax
je 0x497d97
cmp eax, 0xffffffff
je 0x497d97
push eax
call edi
cmp dword [esi + 0x34], 0
je 0x497da7
mov eax, dword [esi + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push 0x4ff4d4
lea ecx, [ebp - 4]
push ecx
mov dword [ebp - 4], str.Incorrect_PE_file__incorrect_signature_
call fcn.004b5a3c
add ecx, 0x18
push ebx
xor ebx, ebx
mov dword [esi + 0x14], ecx
mov edx, 0x20b
cmp word [ecx], dx
sete bl
mov ecx, ebx
mov dword [esi + 0x3c], ecx
pop ebx
test ecx, ecx
je 0x497ded
mov ecx, dword [eax + 0x3c]
add eax, ecx
mov dword [esi + 0x44], eax
mov edx, dword [esi + 0x44]
add eax, 0x18
mov dword [esi + 0x18], eax
jmp 0x497df0
mov edx, dword [esi + 0x40]
mov ax, word [edx + 6]
mov ecx, edx
add ecx, 4
cmp dword [esi + 0x3c], 0
mov dword [esi + 0x10], ecx
mov word [esi + 8], ax
pop edi
je 0x497e14
mov eax, dword [esi + 0x18]
add eax, 0x70
mov dword [esi + 0x1c], eax
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x14]
add eax, 0x60
mov dword [esi + 0x1c], eax
mov esp, ebp
pop ebp
ret
Function at 0x498180
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov ebx, dword [edi + 0x3c]
mov ecx, dword [edi + 0xc]
mov eax, dword [edi + 0x30]
mov edx, dword [edi + 0x1c]
mov esi, dword [edx + 0x10]
neg ebx
sbb ebx, ebx
and ebx, 0x10
add ebx, 0xf8
add ebx, dword [ecx + 0x3c]
add ebx, eax
mov eax, dword [edi + 0x34]
test eax, eax
jne 0x4981b8
mov eax, esi
jmp 0x4981c6
mov di, word [edi + 8]
mov ecx, ebx
call fcn.00497a70
mov edi, dword [ebp + 8]
xor ecx, ecx
cmp ecx, dword [edi + 0x2c]
jb 0x4981d4
ja 0x498213
cmp eax, dword [edi + 0x28]
jae 0x498213
cmp dword [edi + 0x34], 0
jne 0x4981de
mov eax, esi
jmp 0x4981ec
mov di, word [edi + 8]
mov ecx, ebx
call fcn.00497a70
mov edi, dword [ebp + 8]
mov ecx, dword [edi + 0x30]
movzx edx, word [ecx + eax + 0xe]
add ecx, eax
movzx eax, word [ecx + 0xc]
add edx, eax
mov eax, 0
je 0x498213
mov esi, 0x18
cmp dword [ecx + eax*8 + 0x10], esi
je 0x49821e
inc eax
cmp eax, edx
jb 0x498208
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ecx + eax*8 + 0x14]
and eax, 0x7fffffff
mov dx, word [eax + ecx + 0xe]
add dx, word [eax + ecx + 0xc]
add eax, ecx
movzx ebx, dx
lea edx, [eax + 0x10]
mov eax, dword [edx + 4]
test eax, eax
jns 0x498249
and eax, 0x7fffffff
lea edx, [eax + ecx + 0x10]
mov esi, dword [edx + 4]
movzx eax, bx
add esi, ecx
mov dword [ebp - 4], esi
test eax, eax
jle 0x4982d1
mov dword [ebp - 8], eax
cmp dword [edi + 0x34], 0
mov ebx, dword [esi]
mov ecx, dword [edi + 0xc]
jne 0x49826a
mov eax, ebx
jmp 0x4982b0
mov eax, dword [ecx + 0x3c]
movzx edi, word [eax + ecx + 6]
add eax, ecx
movzx ecx, word [eax + 0x14]
lea edx, [ecx + eax + 0x18]
xor ecx, ecx
mov dword [ebp - 0xc], edx
test edi, edi
jle 0x4982ab
lea eax, [edx + 8]
mov edx, dword [eax]
mov esi, edx
test edx, edx
jne 0x498293
mov esi, dword [eax + 8]
mov edx, dword [eax + 4]
cmp ebx, edx
jb 0x4982a0
add edx, esi
cmp ebx, edx
jb 0x4982df
inc ecx
add eax, 0x28
cmp ecx, edi
jl 0x498288
mov esi, dword [ebp - 4]
mov edi, dword [ebp + 8]
xor eax, eax
lea edx, [ebp - 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 0xc]
push edx
push eax
call fcn.00498300
mov ecx, dword [esi + 4]
add esi, 0x10
sub dword [ebp - 8], 1
mov dword [eax], ecx
mov dword [ebp - 4], esi
jne 0x49825b
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
lea edx, [ecx + ecx*4]
lea ecx, [eax + edx*8]
mov eax, dword [ecx + 0x14]
sub eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 8]
add eax, dword [ecx + 0xc]
mov edi, ecx
add eax, ebx
jmp 0x4982b0
Function at 0x4992d0
Capabilities:
Encode data using xor

Disassembly:
or edx, 0xffffffff
cmp dword [0x511ecc], 0
jne 0x4992e1
call fcn.00499230
xor eax, eax
test esi, esi
jle 0x49930b
jmp 0x4992f0
movzx ecx, byte [eax + edi]
xor ecx, edx
and ecx, 0xff
shr edx, 8
xor edx, dword [ecx*4 + 0x511a48]
inc eax
cmp eax, esi
jl 0x4992f0
mov eax, edx
ret
Function at 0x49d7f0
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x118
mov eax, dword [0x50cc94]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push 0x110
xor esi, esi
lea eax, [ebp - 0x114]
push esi
push eax
call fcn.004b02b0
add esp, 0xc
lea ecx, [ebp - 0x118]
push ecx
mov dword [ebp - 0x118], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x49d842
cmp dword [ebp - 0x114], 6
lea eax, [esi + 1]
jae 0x49d844
mov eax, esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.004af011
mov esp, ebp
pop ebp
ret
Function at 0x49fc80
Capabilities:
Write clipboard data

Disassembly:
push ebx
push esi
xor ebx, ebx
call dword [sym.imp.USER32.dll_EmptyClipboard]
mov eax, edi
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x49fc90
sub eax, edx
sar eax, 1
lea eax, [eax + eax + 2]
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov esi, eax
test esi, esi
je 0x49fce7
push esi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
test eax, eax
je 0x49fce7
mov edx, eax
mov ecx, edi
sub edx, edi
movzx eax, word [ecx]
mov word [edx + ecx], ax
add ecx, 2
test ax, ax
jne 0x49fcc3
push esi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push esi
push 0xd
call dword [sym.imp.USER32.dll_SetClipboardData]
mov ebx, 1
call dword [sym.imp.USER32.dll_CloseClipboard]
pop esi
mov eax, ebx
pop ebx
ret