joyce8/EMBER2024-capa huggingface dataset:
Function at 0x1000d740
Capabilities:
Get number of processors

Disassembly:
push 0xffffffffffffffff
push 0x1001a0ce
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x44
mov eax, dword [esp + 0x54]
push ebx
push ebp
push esi
push edi
mov esi, ecx
push eax
mov dword [esp + 0x14], esi
call fcn.1000bda0
mov dword [esp + 0x5c], 0
mov dword [esi + 0x24], 0x1001b4e4
mov dword [esp + 0x14], 0x7f8a
mov dword [esp + 0x18], 0x7f00
mov dword [esp + 0x1c], 0x7f03
mov dword [esp + 0x20], 0x7f89
mov dword [esp + 0x24], 0x7f8b
mov dword [esp + 0x28], 0x7f01
mov dword [esp + 0x2c], 0x7f81
mov dword [esp + 0x30], 0x7f88
mov dword [esp + 0x34], 0x7f80
mov dword [esp + 0x38], 0x7f86
mov dword [esp + 0x3c], 0x7f83
mov dword [esp + 0x40], 0x7f85
mov dword [esp + 0x44], 0x7f82
mov dword [esp + 0x48], 0x7f84
mov dword [esp + 0x4c], 0x7f04
mov dword [esp + 0x50], 0x7f02
lea ebp, [esp + 0x14]
lea edi, [esi + 0x68]
mov ebx, 0x10
mov eax, dword [ebp]
push eax
push 0
mov dword [edi - 0x40], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [edi], eax
add ebp, 4
add edi, 4
dec ebx
jne 0x1000d807
mov ebx, 1
push 0x110
mov byte [esp + 0x60], bl
mov dword [esi], 0x1001b4dc
mov byte [esi + 0x13], bl
mov dword [esi + 0x18], 8
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [esp + 0x64], eax
test eax, eax
mov byte [esp + 0x5c], 2
je 0x1000d863
push 0x64
push 0
push 8
mov ecx, eax
call int.1000e4e0
jmp 0x1000d865
xor eax, eax
push ebx
push 0
push 0
push esi
push 0x1000df00
push 0
push 0
mov byte [esp + 0x78], bl
mov dword [esi + 0xa8], eax
mov byte [esi + 0x10], bl
mov byte [esi + 0x12], 0
mov byte [esi + 0x11], 0
mov byte [esi + 0x14], 0
call fcn.100129b0
push ebx
push 0
push 0
push esi
push 0x1000df70
push 0
push 0
mov dword [esi + 0x1c], eax
call fcn.100129b0
mov ecx, dword [esp + 0x8c]
add esp, 0x38
mov dword [esi + 0x20], eax
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x50
ret 4

Function at 0x1000e300
Capabilities:
Write clipboard data

Disassembly:
push 0
call dword [0x10021cf8]
test eax, eax
je 0x1000e368
push ebx
push esi
call dword [sym.imp.USER32.dll_EmptyClipboard]
mov esi, dword [esp + 0x10]
push esi
push 0x2000
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov ebx, eax
test ebx, ebx
je 0x1000e360
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ecx, esi
mov esi, dword [esp + 0x10]
mov edi, eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [0x10021cf4]
push ebx
push 1
call dword [sym.imp.USER32.dll_SetClipboardData]
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalFree]
pop edi
call dword [sym.imp.USER32.dll_CloseClipboard]
pop esi
pop ebx
ret 8
Function at 0x1000e370
Capabilities:
Read clipboard data

Disassembly:
sub esp, 8
push esi
mov dword [esp + 8], ecx
push 0
call dword [0x10021cf8]
test eax, eax
je 0x1000e402
push 1
call dword [sym.imp.USER32.dll_GetClipboardData]
mov esi, eax
test esi, esi
mov dword [esp + 4], esi
jne 0x1000e3a1
call dword [sym.imp.USER32.dll_CloseClipboard]
pop esi
add esp, 8
ret
push ebx
push ebp
push edi
push esi
call dword [sym.imp.KERNEL32.dll_GlobalSize]
mov ebx, eax
push esi
inc ebx
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push ebx
mov esi, eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
lea ecx, [ebx - 1]
mov ebp, eax
mov eax, ecx
add esp, 4
lea edi, [ebp + 1]
mov byte [ebp], 0x76
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x10]
push ecx
call dword [0x10021cf4]
call dword [sym.imp.USER32.dll_CloseClipboard]
mov ecx, dword [esp + 0x14]
push ebx
push ebp
call fcn.1000be20
push ebp
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
pop edi
pop ebp
pop ebx
pop esi
add esp, 8
ret
Function at 0x1000f140
Capabilities:
Acquire debug privileges

Disassembly:
sub esp, 0x14
lea eax, [esp]
push eax
push 0x20
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x1000f1b7
push esi
push str.AdjustTokenPrivileges
push str.ADVAPI32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
lea ecx, [esp + 0xc]
mov esi, eax
push ecx
push str.SeDebugPrivilege
push 0
call dword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueA]
mov eax, dword [esp + 4]
push 0
push 0
lea edx, [esp + 0x10]
push 0x10
push edx
push 0
push eax
mov dword [esp + 0x20], 1
mov dword [esp + 0x2c], 2
call esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
neg eax
sbb eax, eax
pop esi
inc eax
add esp, 0x14
ret
Function at 0x1000f670
Capabilities:
Modify service

Disassembly:
push ecx
push ebx
push ebp
push esi
push edi
call fcn.1000f140
push 2
push 0
push 0
mov byte [esp + 0x1f], 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
mov edi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.OpenServiceA
push str.ADVAPI32.dll
mov esi, eax
call edi
mov ebp, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebp
mov ecx, dword [esp + 0x18]
push 0xf01ff
push ecx
push esi
call eax
push str.LockServiceDatabase
push str.ADVAPI32.dll
mov ebx, eax
call edi
push eax
call ebp
push esi
call eax
mov esi, eax
test esi, esi
jne 0x1000f6d5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov eax, dword [esp + 0x1c]
cmp eax, 1
jne 0x1000f6e5
mov eax, 2
jmp 0x1000f6fe
cmp eax, 2
jne 0x1000f6f1
mov eax, 4
jmp 0x1000f6fe
xor edx, edx
cmp eax, 4
sete dl
add edx, 2
mov eax, edx
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push eax
push 0xffffffffffffffff
push ebx
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfigA]
test eax, eax
je 0x1000f721
mov byte [esp + 0x13], 1
push str.UnlockServiceDatabase
push str.ADVAPI32.dll
call edi
push eax
call ebp
push esi
call eax
push str.CloseServiceHandle
push str.ADVAPI32.dll
call edi
push eax
call ebp
push ebx
call eax
mov al, byte [esp + 0x13]
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret 8

Function at 0x1000f760
Capabilities:
Query service status
Start service

Disassembly:
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
call fcn.1000f140
push 2
push 0
push 0
xor bl, bl
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
mov ebp, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.OpenServiceA
push str.ADVAPI32.dll
mov edi, eax
call ebp
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [esp + 0x30]
push 0xf01ff
push ecx
push edi
call eax
lea edx, [esp + 0x10]
mov esi, eax
push edx
push esi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
cmp dword [esp + 0x14], 1
jne 0x1000f7c6
push 0
push 0
push esi
call dword [sym.imp.ADVAPI32.dll_StartServiceA]
test eax, eax
je 0x1000f7c8
mov bl, 1
push str.CloseServiceHandle
push str.ADVAPI32.dll
call ebp
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ebp, eax
push esi
call ebp
push edi
call ebp
pop edi
pop esi
mov al, bl
pop ebp
pop ebx
add esp, 0x1c
ret 4

Function at 0x1000f7f0
Capabilities:
Query service status

Disassembly:
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
call fcn.1000f140
push 2
push 0
push 0
xor bl, bl
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
mov edi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.OpenServiceA
push str.ADVAPI32.dll
mov esi, eax
call edi
mov ebp, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebp
mov ecx, dword [esp + 0x30]
push 0xf01ff
push ecx
push esi
call eax
lea edx, [esp + 0x10]
mov esi, eax
push edx
push esi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
cmp dword [esp + 0x14], 1
je 0x1000f868
push str.ControlService
push str.ADVAPI32.dll
call edi
push eax
call ebp
lea ecx, [esp + 0x10]
push ecx
push 1
push esi
call eax
test eax, eax
mov al, 1
jne 0x1000f86a
mov al, bl
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret 4
Function at 0x1000f880
Capabilities:
Query service status

Disassembly:
sub esp, 0x20
push ebx
push ebp
push esi
push edi
call fcn.1000f140
push 2
push 0
push 0
mov byte [esp + 0x1f], 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
mov edi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.OpenServiceA
push str.ADVAPI32.dll
mov ebp, eax
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
mov ecx, dword [esp + 0x34]
push 0xf01ff
push ecx
push ebp
call eax
lea edx, [esp + 0x14]
mov esi, eax
push edx
push esi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
cmp dword [esp + 0x18], 1
je 0x1000f8f5
push str.ControlService
push str.ADVAPI32.dll
call edi
push eax
call ebx
lea ecx, [esp + 0x14]
push ecx
push 1
push esi
call eax
push esi
call dword [0x10021d10]
test eax, eax
je 0x1000f905
mov byte [esp + 0x13], 1
push str.CloseServiceHandle
push str.ADVAPI32.dll
call edi
push eax
call ebx
mov edi, eax
push esi
call edi
push ebp
call edi
mov al, byte [esp + 0x13]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
Function at 0x1000ff50
Capabilities:
Terminate thread

Disassembly:
push 0xffffffffffffffff
push 0x1001a298
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push ebx
push esi
mov esi, ecx
push edi
mov dword [esp + 0xc], esi
mov dword [esi], 0x1001b4f8
push str.TerminateProcess
push str.KERNEL32.dll
mov dword [esp + 0x20], 0
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, dword [sym.imp.KERNEL32.dll_TerminateThread]
mov ebx, eax
mov eax, dword [esi + 0x28]
push 0
push eax
call edi
mov ecx, dword [esi + 0x20]
push 0
push ecx
call ebx
mov edx, dword [esi + 0x24]
push 0
push edx
call edi
mov eax, dword [esi + 0x2c]
push 0x7d0
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, dword [esi + 0x2c]
push 0
push ecx
call edi
mov eax, dword [esi + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_DisconnectNamedPipe]
test eax, eax
je 0x1000ffdb
push eax
call edi
mov eax, dword [esi + 0x14]
test eax, eax
je 0x1000ffe5
push eax
call edi
mov eax, dword [esi + 0x18]
test eax, eax
je 0x1000ffef
push eax
call edi
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x1000fff9
push eax
call edi
mov edx, dword [esi + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edx
call edi
mov eax, dword [esi + 0x14]
push eax
call edi
mov ecx, dword [esi + 0x18]
push ecx
call edi
mov edx, dword [esi + 0x1c]
push edx
call edi
mov eax, dword [esi + 0x20]
push eax
call edi
mov ecx, dword [esi + 0x24]
push ecx
call edi
mov edx, dword [esi + 0x2c]
push edx
call edi
mov eax, dword [esi + 0x28]
push eax
call edi
mov ecx, esi
mov dword [esp + 0x18], 0xffffffff
call fcn.1000bdf0
mov ecx, dword [esp + 0x10]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x10
ret

Function at 0x10010360
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov ecx, dword [esp + 8]
lea eax, [esp]
push eax
push ecx
mov dword [esp + 8], 0
call fcn.10010200
add esp, 8
xor ecx, ecx
test eax, eax
jle 0x100103a8
push ebx
mov edx, dword [esp + 4]
mov bl, byte [ecx + edx]
add bl, 0x7a
mov byte [ecx + edx], bl
mov edx, dword [esp + 4]
mov bl, byte [ecx + edx]
xor bl, 0x19
mov byte [ecx + edx], bl
inc ecx
cmp ecx, eax
jl 0x10010382
mov eax, dword [esp + 4]
pop ebx
pop ecx
ret
mov eax, dword [esp]
pop ecx
ret
Function at 0x100107e0
Capabilities:
Get cpu information
Query or enumerate registry value

Disassembly:
sub esp, 0x10
push ebx
push esi
push edi
mov edi, 0x1001f248
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, str.HARDWAREDESCRIPTIONSystemCentralProcessor_
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [edx + ecx + 1]
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov edx, eax
mov edi, str.HARDWAREDESCRIPTIONSystemCentralProcessor_
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x1001f248
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
mov eax, 4
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0xc]
mov dword [esp + 0x10], eax
push ecx
push edx
push reloc.WS2_32.dll_bind
mov dword [esp + 0x20], eax
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
lea edx, [esp + 0x10]
lea eax, [esp + 0x18]
push edx
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
push ecx
push 0
push str.MHz
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov eax, dword [esp + 0xc]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x18]
pop edi
pop esi
pop ebx
add esp, 0x10
ret

Function at 0x100108c0
Capabilities:
Contain obfuscated stackstrings

Disassembly:
sub esp, 0xa8
xor al, al
push ebx
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
xor esi, esi
mov bl, 0x6c
test al, al
jne 0x10010949
mov byte [esp + 0x1c], al
lea eax, [esp + 0x10]
push str.capGetDriverDescriptionA
push eax
mov byte [esp + 0x18], 0x41
mov byte [esp + 0x19], 0x56
mov byte [esp + 0x1a], 0x49
mov byte [esp + 0x1b], 0x43
mov byte [esp + 0x1c], 0x41
mov byte [esp + 0x1d], 0x50
mov byte [esp + 0x1e], 0x33
mov byte [esp + 0x1f], 0x32
mov byte [esp + 0x20], 0x2e
mov byte [esp + 0x21], 0x64
mov byte [esp + 0x22], bl
mov byte [esp + 0x23], bl
call ebp
push eax
call edi
lea ecx, [esp + 0x20]
push 0x32
push ecx
lea edx, [esp + 0x5c]
push 0x64
push edx
push esi
call eax
test eax, eax
setne al
inc esi
cmp esi, 0xa
jl 0x100108dc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa8
ret
Function at 0x10010960
Capabilities:
Get hostname

Disassembly:
sub esp, 0x40c
push ebx
push ebp
push esi
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push edi
push str.wsprintfA
push str.USER32.dll
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
push str.lstrlenA
push str.KERNEL32.dll
mov dword [esp + 0x20], eax
call esi
push eax
call edi
mov ebx, dword [esp + 0x428]
mov esi, dword [esp + 0x424]
mov ecx, ebx
mov ebp, eax
mov edx, ecx
xor eax, eax
mov edi, esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, pe_nt_image_headers32
xor eax, eax
lea edi, [esp + 0x1c]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x420]
lea ecx, [esp + 0x1c]
push eax
push str.SYSTEMCurrentControlSetServices_s
push ecx
call dword [esp + 0x24]
push 0
push ebx
push 0
push esi
lea edx, [esp + 0x2c]
push 1
lea eax, [esp + 0x3c]
push edx
push eax
push reloc.WS2_32.dll_bind
mov byte [esp + 0x3c], 0x48
mov byte [esp + 0x3d], 0x6f
mov byte [esp + 0x3e], 0x73
mov byte [esp + 0x3f], 0x74
mov byte [esp + 0x40], 0
call fcn.1000bef0
add esp, 0x2c
push esi
call ebp
test eax, eax
jne 0x10010a26
push ebx
push esi
call dword [sym.imp.WS2_32.dll_gethostname]
push esi
call ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40c
ret

Function at 0x10010b30
Capabilities:
Get memory capacity

Disassembly:
sub esp, 0x40
push ebx
push esi
push edi
push str.wsprintfA
push str.USER32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x14
mov ebx, eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov esi, eax
mov ecx, 0x10
xor eax, eax
lea edi, [esp + 0x10]
add esp, 4
rep stosd dword es:[edi], eax
lea eax, [esp + 0xc]
mov dword [esp + 0xc], 0x40
push eax
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatusEx]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ecx, 0x14
call fcn.10019a90
add eax, 1
adc edx, 0
push edx
push eax
push 0x1001fc78
push esi
call ebx
add esp, 0x10
mov eax, esi
pop edi
pop esi
pop ebx
add esp, 0x40
ret

Function at 0x10010bb0
Capabilities:
Get memory capacity

Disassembly:
sub esp, 0x40
push ebx
push esi
push edi
push str.wsprintfA
push str.USER32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x14
mov ebx, eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov esi, eax
mov ecx, 0x10
xor eax, eax
lea edi, [esp + 0x10]
add esp, 4
rep stosd dword es:[edi], eax
lea eax, [esp + 0xc]
mov dword [esp + 0xc], 0x40
push eax
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatusEx]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ecx, 0x14
call fcn.10019a90
add eax, 1
adc edx, 0
push edx
push eax
push 0x1001fc78
push esi
call ebx
add esp, 0x10
mov eax, esi
pop edi
pop esi
pop ebx
add esp, 0x40
ret
Function at 0x10011420
Capabilities:
Acquire debug privileges
Link many functions at runtime

Disassembly:
sub esp, 0x84
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push esi
xor esi, esi
push str.Kernel32.dll
mov dword [esp + 0xc], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], esi
call ebx
cmp eax, esi
jne 0x10011458
pop esi
xor eax, eax
pop ebx
add esp, 0x84
ret 4
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push ebp
push edi
push str.WTSGetActiveConsoleSessionId
push eax
call esi
call eax
lea ecx, [esp + 0x20]
mov dword [esp + 0x24], eax
push ecx
push eax
call sub.WTSAPI32.dll_WTSQueryUserToken
xor edx, edx
mov ecx, 0x11
xor eax, eax
lea edi, [esp + 0x50]
mov dword [esp + 0x40], edx
mov ebp, 0x30
rep stosd dword es:[edi], eax
mov dword [esp + 0x44], edx
lea eax, [esp + 0x1c]
mov dword [esp + 0x48], edx
push eax
push 0x201eb
mov dword [esp + 0x58], 0x44
mov dword [esp + 0x60], str.winsta0default
mov dword [esp + 0x54], edx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x100115db
lea ecx, [esp + 0x28]
xor edi, edi
push ecx
push str.SeDebugPrivilege
push edi
call dword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueA]
test eax, eax
je 0x100115db
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x14]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
push ecx
push 1
push 1
push edi
push 0x2000000
push edx
mov dword [esp + 0x48], 1
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], 2
call dword [sym.imp.ADVAPI32.dll_DuplicateTokenEx]
test eax, eax
je 0x100115db
push str.SetTokenInformation
push str.ADVAPI32.dll
call ebx
push eax
call esi
lea ecx, [esp + 0x24]
push 4
mov edx, dword [esp + 0x18]
push ecx
push 0xc
push edx
call eax
test eax, eax
je 0x100115db
push str.AdjustTokenPrivileges
push str.ADVAPI32.dll
call ebx
push eax
call esi
push edi
push edi
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x38]
push 0x10
push ecx
push edi
push edx
call eax
test eax, eax
je 0x100115db
push str.CreateEnvironmentBlock
push str.USERENV.dll
call ebx
push eax
call esi
push 1
lea edx, [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], edi
push ecx
push edx
call eax
test eax, eax
je 0x100115a0
mov ebp, 0x430
jmp 0x100115a4
mov dword [esp + 0x18], edi
push str.CreateProcessAsUserA
push str.ADVAPI32.dll
call ebx
push eax
call esi
lea ecx, [esp + 0x40]
lea edx, [esp + 0x50]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
mov edx, dword [esp + 0xa0]
push edi
push ecx
mov ecx, dword [esp + 0x24]
push ebp
push edi
push edi
push edi
push edx
push edi
push ecx
call eax
test eax, eax
jne 0x100115e5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
pop edi
pop ebp
je 0x100115f8
push eax
call esi
mov eax, dword [esp + 0xc]
test eax, eax
je 0x10011603
push eax
call esi
mov eax, dword [esp + 0x14]
test eax, eax
je 0x1001160e
push eax
call esi
mov eax, dword [esp + 8]
pop esi
pop ebx
add esp, 0x84
ret 4
Function at 0x10011b10
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x29c
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push edi
push str.FreeConsole
push str.KERNEL32.dll
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 4], eax
push 0x104
mov eax, dword [ebx]
push eax
push 0x10021d20
call dword [sym.imp.MSVCRT.dll_strncpy]
mov ecx, dword [ebx]
push 0x104
push ecx
push 0x10021d20
call dword [sym.imp.MSVCRT.dll_wcstombs]
add esp, 0x18
push str.RegisterServiceCtrlHandlerA
push str.ADVAPI32.dll
call esi
push eax
call edi
push 0x10011d80
push 0x10021d20
call eax
test eax, eax
mov dword [0x10021d1c], eax
je 0x10011cec
call dword [ebp - 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push 1
push 0
push 2
call fcn.10011d00
push 0
push 0
push 4
call fcn.10011d00
push 0x10021d20
call fcn.10007680
add esp, 0x1c
mov dword [0x10021d14], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea edx, [ebp - 0x98]
mov dword [ebp - 0x98], 0x94
push edx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0x94], 6
jae 0x10011c27
push 0
push 0
push 0
push 0x10021d20
push fcn.10011660
push 0
push 0
call fcn.100129b0
add esp, 0x1c
jmp 0x10011c7a
push str.wsprintfA
push str.USER32.dll
call esi
push eax
call edi
mov ecx, dword [0x10021cf0]
mov esi, eax
lea eax, [ebp - 0x29c]
push 0x104
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea edx, [ebp - 0x29c]
push 0x10021d20
push edx
lea eax, [ebp - 0x198]
push str.rundll32.exe___s__EASTNOD__s
push eax
call esi
add esp, 0x10
lea ecx, [ebp - 0x198]
push ecx
call fcn.10011420
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push 0
push 0
push 0
push 0
push 0x10011e30
push 0
push 0
call fcn.100129b0
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 0x1c
push 0x64
call esi
mov eax, dword [0x10021e24]
cmp eax, 3
je 0x10011cc4
cmp eax, 1
jne 0x10011cb1
mov edi, dword [ebp + 0xc]
push 0xffffffffffffffff
push edi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [0x10021d14], 0x120
jne 0x10011cec
push 0x2710
call esi
jmp 0x10011ce3
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret