joyce8/EMBER2024-capa huggingface dataset:
Function at 0x453750
Capabilities:
Allocate thread local storage

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb4
push esi
mov esi, ecx
mov eax, dword [esi]
test eax, 0xfffffffe
jne 0x4537d5
push esi
call fcn.004531f0
add esp, 4
test al, al
je 0x4537d5
push edi
lea edi, [esi + 4]
mov dword [edi], 0
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [edi], eax
mov dword [ebp - 4], 0xffffffff
cmp eax, 0xffffffff
jne 0x4537c4
push str.slot_____DWORD_0xFFFFFFFF_
lea eax, [ebp - 4]
push eax
push edi
call fcn.0043efc0
add esp, 0xc
test eax, eax
je 0x4537c4
push eax
push 0x11
push str.d:code.aliyun.comcore_liblibschromium_base_threading_thread_local_win.cc
lea ecx, [ebp - 0xb4]
call fcn.004449e0
lea ecx, [ebp - 0xb4]
call fcn.004471e0
push esi
push 0x453640
mov dword [esi], edi
call fcn.004540d0
add esp, 8
pop edi
mov eax, dword [esi]
pop esi
mov esp, ebp
pop ebp
ret

Function at 0x453e30
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov eax, dword [0x4ca3f4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, ecx
mov ecx, 0x4ce458
call fcn.0044eac0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 1
mov al, byte [eax + 0x65]
test al, al
lea eax, [ebp - 0x20]
je 0x453e96
push 0xf
push 0xf
push 0
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
jne 0x453e92
push 1
push 0x113
push 0x113
push eax
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
jne 0x453e92
xor bl, bl
jmp 0x453ea8
mov bl, 1
jmp 0x453ea8
push 0
push 0
push 0
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
setne bl
push 0
lea eax, [esi + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
test bl, bl
jne 0x453eca
pop esi
xor al, al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00461490
mov esp, ebp
pop ebp
ret
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xc]
lea eax, [ebp - 0x20]
mov ecx, esi
push eax
call fcn.00453c60
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.00461490
mov esp, ebp
pop ebp
ret
Function at 0x456ec0
Capabilities:
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a051f
mov eax, dword fs:[0]
push eax
sub esp, 0xb4
push ebx
mov eax, dword [0x4ca3f4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push dword [ebp + 0xc]
xor ebx, ebx
push dword [ebp + 8]
mov dword [ebp - 0x10], ebx
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
jne 0x456f87
cmp dword [0x4ce46c], 3
jg 0x456f77
push 1
push 2
lea ecx, [ebp - 0xb8]
mov dword [ebp - 0xc0], 3
call fcn.0042ab40
mov dword [ebp - 4], ebx
mov dword [ebp - 0x1c], str.d:code.aliyun.comcore_liblibschromium_base_threading_thread_local_win.cc
mov dword [ebp - 0x18], 0x23
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x14], eax
push 0x23
push str.d:code.aliyun.comcore_liblibschromium_base_threading_thread_local_win.cc
lea ecx, [ebp - 0xc0]
mov byte [ebp - 4], 1
call fcn.00451280
lea eax, [ebp - 0xb8]
mov dword [ebp - 4], 2
push str.Failed_to_TlsSetValue__.
mov ebx, 1
push eax
mov dword [ebp - 0x10], ebx
call fcn.00429f30
add esp, 8
test bl, 1
je 0x456f87
lea ecx, [ebp - 0xc0]
call fcn.004471e0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x45a810
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
mov edx, dword [ebp + 8]
push ebx
push edi
mov ebx, ecx
cmp dword [edx + 0x14], 0x10
mov edi, dword [edx + 0x10]
jb 0x45a825
mov edx, dword [edx]
xor eax, eax
push esi
mov esi, 0x811c9dc5
test edi, edi
je 0x45a842
movzx ecx, byte [eax + edx]
inc eax
xor ecx, esi
imul esi, ecx, 0x1000193
cmp eax, edi
jb 0x45a831
push 0x1f31d
and esi, 0x7fffffff
push esi
call fcn.00485172
imul ecx, edx, 0x41a7
add esp, 8
imul eax, eax, 0xb14
pop esi
sub ecx, eax
jns 0x45a86d
add ecx, 0x7fffffff
mov eax, dword [ebx + 0x1c]
pop edi
and eax, ecx
pop ebx
pop ebp
ret 4

Function at 0x45ada0
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
mov edx, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 8]
mov ecx, dword [edx + 0x10]
mov eax, dword [edi + 0x10]
cmp eax, 1
jle 0x45adbc
cmp dword [edi + eax*4 + 0x10], 0
je 0x45ae13
cmp ecx, 1
jle 0x45adcf
cmp dword [edx + ecx*4 + 0x10], 0
jne 0x45adcf
push str.cmp_called_with_b__x_b__wds_1___0
jmp 0x45ae18
sub eax, ecx
jne 0x45ae0a
add edx, 0x10
lea eax, [ecx - 1]
add edi, 0x14
push esi
lea eax, [edi + eax*4]
lea esi, [edx + ecx*4]
mov ecx, dword [eax]
mov edx, dword [esi]
cmp ecx, edx
jne 0x45ae03
sub esi, eax
nop dword [eax]
cmp eax, edi
jbe 0x45ae0d
mov ecx, dword [eax - 4]
sub eax, 4
mov edx, dword [esi + eax]
cmp ecx, edx
je 0x45adf0
cmp ecx, edx
sbb eax, eax
and eax, 0xfffffffe
inc eax
pop esi
pop edi
pop ebp
ret
pop esi
xor eax, eax
pop edi
pop ebp
ret
push str.cmp_called_with_a__x_a__wds_1___0
push 0x4ad350
push 2
call fcn.0048463c
add esp, 4
push eax
call fcn.0045dcb0
add esp, 0xc
push 1
call fcn.0048515c
int3

Function at 0x45ae60
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x4ce458
call fcn.0044eac0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
jne 0x45ae84
mov eax, dword [ebp + 8]
mov dword [eax], 0
pop ebp
ret
mov ecx, dword [eax + 0xa8]
mov eax, dword [ebp + 8]
mov dword [eax], ecx
test ecx, ecx
je 0x45ae9f
mov edx, 1
add ecx, 4
lock xadd dword [ecx], edx
pop ebp
ret
Function at 0x4609a0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a2561
mov eax, dword fs:[0]
push eax
sub esp, 0x20
mov eax, dword [0x4ca3f4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x14]
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x24], 0
mov dword [ebp - 4], 1
mov dword [ebp - 0x1c], 0
mov dword [edi], 0
call fcn.00405420
mov ecx, eax
test ecx, ecx
je 0x460b34
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [edi], eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x24], 1
push eax
push 0xf003f
push 0
push dword [ebp + 0x10]
push esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x460af5
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
push eax
push 0
lea eax, [ebp - 0x18]
movlpd qword [ebp - 0x18], xmm0
push eax
push 0
push ebx
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x460ae7
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x460af5
add eax, 0x10
push 0x4ce202
push eax
mov dword [ebp - 0x20], eax
call fcn.004614f0
mov esi, eax
add esp, 8
test esi, esi
je 0x460af5
push dword [ebp - 0x20]
push 0
push esi
call fcn.0046d470
add esp, 0xc
lea eax, [ebp - 0x20]
push eax
push esi
push 0
push 0
push ebx
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x460aaa
push esi
call fcn.004614eb
add esp, 4
jmp 0x460af5
mov ecx, esi
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x460ab0
sub ecx, edx
sar ecx, 1
je 0x460ade
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x460ac6
sub ecx, edx
sar ecx, 1
push ecx
push esi
mov ecx, edi
call fcn.00405d90
push esi
call fcn.004614eb
add esp, 4
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x460af5
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp + 0x10]
or eax, 0xffffffff
mov byte [ebp - 4], 0
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x460b14
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00461490
mov esp, ebp
pop ebp
ret 0x10
push 0x80004005
call fcn.00404f60
int3
Function at 0x460b40
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov eax, dword [0x4ca3f4]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
push ebx
push esi
push edi
mov edi, dword [ebp + 0x14]
mov esi, edi
mov dword [ebp - 0xc], eax
lea edx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x460b64
lea eax, [ebp - 8]
mov dword [ebp - 8], 0
push eax
push 0xf003f
push 0
push dword [ebp + 0xc]
sub esi, edx
push ecx
sar esi, 1
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
xor ebx, ebx
test eax, eax
sete bl
test eax, eax
jne 0x460bc6
lea eax, [esi*2 + 2]
push eax
push edi
push 1
push 0
push dword [ebp - 0xc]
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
neg eax
sbb ebx, ebx
mov eax, dword [ebp - 8]
inc ebx
test eax, eax
je 0x460bc6
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp + 0xc]
or ecx, 0xffffffff
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x460be1
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [ebp - 4]
mov eax, ebx
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00461490
mov esp, ebp
pop ebp
ret 0x10
Function at 0x4625f0
Capabilities:
Encode data using base64 via winapi

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49ec48
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
mov eax, dword [0x4ca3f4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x30], eax
mov ecx, dword [eax]
mov eax, ecx
shr eax, 6
add ecx, 0xa
add eax, ecx
push eax
mov dword [ebp - 0x2c], eax
call fcn.004614e2
push dword [ebp - 0x2c]
mov edi, eax
push 0
push edi
call fcn.0046d470
add esp, 0x10
lea eax, [ebp - 0x2c]
push eax
push edi
push 0x80000001
push dword [ebp + 0xc]
push esi
call dword [sym.imp.CRYPT32.dll_CryptBinaryToStringA]
mov ecx, edi
mov dword [ebp - 0x18], 0
mov esi, eax
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x38], esi
mov byte [ebp - 0x28], 0
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x462680
sub ecx, edx
push ecx
push edi
lea ecx, [ebp - 0x28]
call fcn.00407ba0
push 1
push edi
mov dword [ebp - 4], 0
call fcn.004611e8
mov ebx, dword [ebp - 0x14]
add esp, 8
mov ecx, dword [ebp - 0x28]
test esi, esi
je 0x46275f
cmp ebx, 0x10
lea esi, [ebp - 0x28]
cmovae esi, ecx
mov edi, dword [ebp - 0x18]
nop
cmp ebx, 0x10
lea eax, [ebp - 0x28]
cmovae eax, ecx
add eax, edi
cmp esi, eax
je 0x46272d
cmp byte [esi], 0xa
jne 0x46272a
cmp ebx, 0x10
lea eax, [ebp - 0x28]
cmovae eax, ecx
sub esi, eax
cmp edi, esi
jb 0x4627a7
mov eax, edi
mov edx, 1
sub eax, esi
cmp eax, edx
cmovb edx, eax
cmp ebx, 0x10
lea eax, [ebp - 0x28]
cmovae eax, ecx
sub edi, edx
mov dword [ebp - 0x18], edi
sub edi, esi
inc edi
push edi
lea ecx, [eax + esi]
lea eax, [ecx + edx]
push eax
push ecx
call fcn.0046cef0
mov ebx, dword [ebp - 0x14]
lea eax, [ebp - 0x28]
mov ecx, dword [ebp - 0x28]
add esp, 0xc
cmp ebx, 0x10
cmovae eax, ecx
add esi, eax
jmp 0x4626bc
inc esi
jmp 0x4626c0
mov esi, dword [ebp - 0x30]
mov edx, dword [esi]
cmp edi, edx
jbe 0x46273a
xor esi, esi
jmp 0x46275f
cmp ebx, 0x10
lea eax, [ebp - 0x28]
push edi
cmovae eax, ecx
push eax
push edx
push dword [ebp - 0x34]
call fcn.00488c1a
mov eax, dword [ebp - 0x18]
add esp, 0x10
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x28]
mov dword [esi], eax
mov esi, dword [ebp - 0x38]
cmp ebx, 0x10
jb 0x462789
inc ebx
mov eax, ecx
cmp ebx, 0x1000
jb 0x46277f
mov ecx, dword [ecx - 4]
add ebx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4627ac
push ebx
push ecx
call fcn.004611e8
add esp, 8
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00461490
mov esp, ebp
pop ebp
ret
call fcn.00407600
call fcn.0047089a
int3
Function at 0x4658f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 0xc]
xor al, al
push edi
xor edi, edi
test esi, esi
je 0x4659b7
push ebx
mov ecx, dword [ebp + 8]
mov dl, byte [edi + ecx]
xor dl, al
mov cl, dl
shr cl, 1
mov al, cl
xor al, 0x8c
and dl, 1
movzx ebx, al
movzx eax, cl
cmove ebx, eax
mov cl, bl
shr cl, 1
mov al, cl
xor al, 0x8c
and bl, 1
movzx edx, al
movzx eax, cl
cmove edx, eax
mov cl, dl
shr cl, 1
mov al, cl
xor al, 0x8c
and dl, 1
movzx ebx, al
movzx eax, cl
cmove ebx, eax
mov cl, bl
shr cl, 1
mov al, cl
xor al, 0x8c
and bl, 1
movzx edx, al
movzx eax, cl
cmove edx, eax
mov cl, dl
shr cl, 1
mov al, cl
xor al, 0x8c
and dl, 1
movzx ebx, al
movzx eax, cl
cmove ebx, eax
mov cl, bl
shr cl, 1
mov al, cl
xor al, 0x8c
and bl, 1
movzx edx, al
movzx eax, cl
cmove edx, eax
mov cl, dl
shr cl, 1
mov al, cl
xor al, 0x8c
and dl, 1
movzx ebx, al
movzx eax, cl
cmove ebx, eax
mov cl, bl
shr cl, 1
mov al, cl
movzx ecx, cl
xor al, 0x8c
and bl, 1
movzx eax, al
cmove eax, ecx
inc edi
cmp edi, esi
jb 0x465905
pop ebx
pop edi
pop esi
pop ebp
ret
Function at 0x4670b0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a29c3
mov eax, dword fs:[0]
push eax
sub esp, 0x80
mov eax, dword [0x4ca3f4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x8c], 0
mov dword [ebx], 0
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x84], 0
push 0x201
push dword [0x4cb460]
lea ecx, [ebp - 0x8c]
mov dword [ebp - 4], 0
push 0x80000002
call fcn.00467000
mov edi, dword [ebp - 0x8c]
test eax, eax
jne 0x467291
push 0x64
lea eax, [ebp - 0x74]
push 0
push eax
call fcn.0046d470
add esp, 0xc
mov dword [ebp - 0x78], 0x64
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp - 0x7c]
push eax
push 0
push 0x4afd0c
push edi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x467291
mov eax, dword [ebp - 0x7c]
cmp eax, 1
je 0x467185
cmp eax, 2
jne 0x467291
mov ecx, dword [ebp - 0x78]
test ecx, ecx
je 0x4671a6
test cl, 1
jne 0x467291
mov eax, ecx
shr eax, 1
cmp word [ebp + eax*2 - 0x76], 0
je 0x4671ac
jmp 0x467291
xor eax, eax
mov word [ebp - 0x74], ax
shr ecx, 1
cmp ecx, 0x2d
jne 0x467291
call fcn.00405420
mov ecx, eax
test ecx, ecx
je 0x4672bc
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x78], eax
lea eax, [ebp - 0x74]
mov byte [ebp - 4], 1
push eax
lea ecx, [ebp - 0x78]
call fcn.00465490
lea eax, [ebp - 0x7c]
mov dword [ebp - 0x7c], 0
push eax
lea eax, [ebp - 0x20]
push 0x4afd14
push eax
call fcn.00467650
mov esi, dword [ebp - 0x78]
push 0x2a
push esi
call fcn.004658f0
movzx eax, al
add esp, 0x14
cmp dword [ebp - 0x7c], eax
jne 0x467275
lea edx, [ebp - 0x74]
lea ecx, [edx + 2]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x467216
sub edx, ecx
lea eax, [ebp - 0x74]
mov ecx, dword [ebp - 0x80]
sar edx, 1
push edx
push eax
call fcn.00405d90
push dword [0x4cb468]
lea eax, [ebp - 0x74]
push dword [0x4cb464]
push eax
call dword [sym.imp.SHLWAPI.dll_StrCmpNIW]
test eax, eax
jne 0x467252
mov dword [ebx], 1
mov byte [ebp - 4], 0
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x46726e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, 1
jmp 0x467293
mov byte [ebp - 4], 0
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x467291
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
xor esi, esi
test edi, edi
je 0x46729e
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00461490
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00404f60
int3
Function at 0x467350
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a29f8
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push esi
push edi
mov eax, dword [0x4ca3f4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
push 0x202
push dword [0x4cb460]
lea ecx, [ebp - 0x20]
mov dword [ebp - 4], 0
push 0x80000002
call fcn.00467000
test eax, eax
je 0x467478
mov esi, dword [ebp - 0x18]
mov edi, dword [0x4cb460]
mov dword [ebp - 0x10], 0
test esi, esi
je 0x467423
cmp dword [esi], 0
je 0x467416
push 0x4afbc0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
jne 0x4673e3
mov eax, 1
jmp 0x467444
push str.RegCreateKeyTransactedW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x46741c
push 0
push dword [esi]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp - 0x10]
push ecx
push 0
push 0x20206
push 0
push 0
push 0
push edi
push 0x80000002
call eax
jmp 0x467444
cmp dword [esi + 4], 0
jne 0x467423
mov eax, 1
jmp 0x467444
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x10]
push eax
push 0
push 0x20206
push 0
push 0
push 0
push edi
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x46746e
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x467456
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp - 0x10]
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x200
test eax, eax
je 0x46747b
xor ebx, ebx
jmp 0x46751f
mov esi, dword [ebp - 0x20]
xor ebx, ebx
jmp 0x46751f
mov esi, dword [ebp - 0x20]
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov eax, dword [edi]
cmp dword [eax - 0xc], 0
je 0x4674d8
mov ecx, dword [ebx]
test ecx, ecx
je 0x46753e
push ecx
push eax
call fcn.00483564
add esp, 8
test eax, eax
je 0x4674d8
mov edx, dword [edi]
test edx, edx
je 0x4674d8
mov ecx, edx
lea edi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4674b0
sub ecx, edi
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
push edx
push 1
push 0
push str.m2_old
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edx, dword [ebx]
test edx, edx
jne 0x4674e3
lea eax, [edx + 0xd]
jmp 0x467518
mov ecx, edx
lea edi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4674f0
sub ecx, edi
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
push edx
push 1
push 0
push 0x4afd0c
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
xor ebx, ebx
test eax, eax
sete bl
test esi, esi
je 0x46752a
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00404f60
int3
Function at 0x468b40
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 0x10]
mov eax, dword [edi]
add eax, eax
mov dword [edi], 0
mov dword [ebp + 0x10], eax
lea eax, [ebp + 0x10]
push eax
push esi
lea eax, [ebp + 0xc]
push eax
push 0
push dword [ebp + 8]
push dword [ecx]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x468bb1
mov eax, dword [ebp + 0xc]
cmp eax, 1
je 0x468b7f
cmp eax, 2
jne 0x468b9b
mov ecx, dword [ebp + 0x10]
test esi, esi
je 0x468bab
test ecx, ecx
je 0x468ba6
test cl, 1
jne 0x468b9b
mov eax, ecx
shr eax, 1
cmp word [esi + eax*2 - 2], 0
je 0x468bab
pop edi
mov eax, 0xd
pop esi
pop ebp
ret 0xc
xor eax, eax
mov word [esi], ax
shr ecx, 1
xor eax, eax
mov dword [edi], ecx
pop edi
pop esi
pop ebp
ret 0xc
Function at 0x46a350
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2ec
mov eax, dword [0x4ca3f4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x2ec], ebx
push edi
test ebx, ebx
je 0x46a554
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x46a554
push esi
push 0x64
lea eax, [ebp - 0x68]
push 0
push eax
call fcn.0046d470
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
lea eax, [ebp - 0x2d8]
add esp, 0xc
push eax
push 8
push 0
push str.SOFTWAREMicrosoftWindows_NTCurrentVersionNetworkCards
push 0x80000002
call esi
test eax, eax
jne 0x46a529
xor edi, edi
mov dword [ebp - 0x2dc], 0x104
push edi
push edi
push edi
push edi
lea eax, [ebp - 0x2dc]
push eax
lea eax, [ebp - 0x1d0]
push eax
push edi
push dword [ebp - 0x2d8]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
jne 0x46a518
lea eax, [ebp - 0x2e0]
push eax
push 1
push 0
lea eax, [ebp - 0x1d0]
push eax
push dword [ebp - 0x2d8]
call esi
test eax, eax
jne 0x46a4e2
lea eax, [ebp - 0x2e4]
mov dword [ebp - 0x2e8], 1
push eax
lea eax, [ebp - 0x2d4]
mov dword [ebp - 0x2e4], 0x104
push eax
lea eax, [ebp - 0x2e8]
push eax
push 0
push str.ServiceName
push dword [ebp - 0x2e0]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x46a4da
push 0x64
push eax
lea eax, [ebp - 0xcc]
push eax
call fcn.0046d470
push 0x64
lea eax, [ebp - 0xcc]
push eax
lea eax, [ebp - 0x2d4]
push eax
call fcn.0046a570
add esp, 0x18
test eax, eax
je 0x46a4da
cmp byte [ebp - 0x68], 0
je 0x46a49c
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0xcc]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
jns 0x46a4da
lea ecx, [ebp - 0x68]
mov edx, 0x64
lea esi, [ebp - 0xcc]
mov eax, ecx
sub esi, eax
nop
lea eax, [edx + 0x7fffff9a]
test eax, eax
je 0x46a4c9
mov al, byte [esi + ecx]
test al, al
je 0x46a4c9
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x46a4b0
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
lea eax, [ecx - 1]
test edx, edx
cmovne eax, ecx
mov byte [eax], 0
push dword [ebp - 0x2e0]
call ebx
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x2dc]
mov dword [ebp - 0x2dc], 0x104
push eax
lea eax, [ebp - 0x1d0]
inc edi
push eax
push edi
push dword [ebp - 0x2d8]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
je 0x46a3f0
push dword [ebp - 0x2d8]
call ebx
mov ebx, dword [ebp - 0x2ec]
mov edi, dword [ebp + 0xc]
cmp byte [ebp - 0x68], 0
pop esi
je 0x46a554
lea eax, [ebp - 0x68]
push eax
push edi
push ebx
call fcn.0046b540
xor ecx, ecx
test eax, eax
pop edi
setns cl
mov eax, ecx
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00461490
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
xor ecx, ebp
pop ebx
call fcn.00461490
mov esp, ebp
pop ebp
ret