joyce8/EMBER2024-capa huggingface dataset:
Function at 0x428c7c
Capabilities:
Clear file content

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
mov ebx, dword [ebp + 8]
lea ecx, [ebp - 0x2c]
push esi
push edi
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ebx
call fcn.00428bf8
mov eax, dword [ebp - 0x2c]
and eax, dword [ebp - 0x28]
cmp eax, 0xffffffff
je 0x428df4
mov eax, dword [ebp - 0x24]
and eax, dword [ebp - 0x20]
cmp eax, 0xffffffff
je 0x428df4
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
test ecx, ecx
jl 0x428da3
jg 0x428cd5
test eax, eax
je 0x428d99
push 1
push 0x1000
call fcn.0041d71c
mov esi, eax
pop ecx
pop ecx
test esi, esi
jne 0x428cfb
mov eax, dword [ebp + 0x14]
push 0xc
pop edi
mov byte [eax + 0x1c], 1
mov dword [eax + 0x18], edi
jmp 0x428d90
push 0x8000
push ebx
call fcn.0041ca89
mov edi, dword [ebp + 0x14]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x18]
test eax, eax
jl 0x428d27
jg 0x428d22
cmp ecx, 0x1000
jb 0x428d27
mov ecx, 0x1000
push edi
push ecx
push esi
push ebx
call fcn.00420c79
add esp, 0x10
cmp eax, 0xffffffff
je 0x428d6c
mov ecx, dword [ebp - 4]
cdq
sub ecx, eax
mov eax, dword [ebp - 8]
mov dword [ebp - 4], ecx
sbb eax, edx
mov dword [ebp - 8], eax
test eax, eax
jg 0x428d22
jl 0x428d53
test ecx, ecx
jne 0x428d14
push dword [ebp - 0xc]
push ebx
call fcn.0041ca89
push esi
call fcn.0041d779
add esp, 0xc
xor edi, edi
jmp 0x428e05
cmp byte [edi + 0x24], 0
je 0x428d83
cmp dword [edi + 0x20], 5
jne 0x428d83
mov byte [edi + 0x1c], 1
mov dword [edi + 0x18], 0xd
cmp byte [edi + 0x1c], 0
je 0x428d8e
mov edi, dword [edi + 0x18]
jmp 0x428d90
xor edi, edi
push esi
call fcn.0041d779
pop ecx
jmp 0x428e05
test ecx, ecx
jg 0x428d65
jl 0x428da3
test eax, eax
jae 0x428d65
push 0
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ebx
call fcn.004215fb
and eax, edx
add esp, 0x10
cmp eax, 0xffffffff
jne 0x428dc6
mov edi, dword [ebp + 0x14]
cmp byte [edi + 0x1c], 0
je 0x428d65
jmp 0x428dfd
push ebx
call fcn.0041b06a
pop ecx
push eax
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
jne 0x428d65
mov esi, dword [ebp + 0x14]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0xd
mov byte [esi + 0x24], 1
mov dword [esi + 0x20], eax
pop edi
mov byte [esi + 0x1c], 1
mov dword [esi + 0x18], edi
jmp 0x428e05
mov edi, dword [ebp + 0x14]
cmp byte [edi + 0x1c], 0
je 0x428e02
mov edi, dword [edi + 0x18]
jmp 0x428e05
push 0x16
pop edi
push 0
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
push dword [ebp - 0x14]
call fcn.004215fb
add esp, 0x10
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret

Function at 0x42b260
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x42b28d
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x42b28d
mov edx, 0x10b
xor eax, eax
cmp word [ecx + 0x18], dx
sete al
pop ebp
ret
xor eax, eax
pop ebp
ret
Function at 0x10005870
Capabilities:
Identify system language via api

Disassembly:
sub esp, 0x104
mov eax, dword [0x1007e090]
xor eax, esp
mov dword [esp + 0x100], eax
push 0xfe
lea eax, [esp + 5]
push 0
push eax
mov byte [esp + 0xc], 0
call fcn.10047700
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
cmp eax, 0x412
jg 0x100058e4
je 0x100058d3
sub eax, 0x404
je 0x100058cc
sub eax, 0xd
jne 0x100058eb
push str.MS_Gothic
push 0xff
lea ecx, [esp + 8]
push ecx
jmp 0x1000590b
push str.PMingliu
jmp 0x10005901
push str.Gulim
push 0xff
lea eax, [esp + 8]
push eax
jmp 0x1000590b
cmp eax, 0x804
je 0x100058fc
push str.Gulim
push 0xff
lea ecx, [esp + 8]
push ecx
jmp 0x1000590b
push str.SimSun
push 0xff
lea edx, [esp + 8]
push edx
call fcn.1004263e
add esp, 0xc
mov ecx, dword [esp + 0x108]
lea eax, [esp]
push eax
push 0
push 0
push 0
push 0
push 1
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push ecx
call dword [sym.imp.GDI32.dll_CreateFontA]
push 0
push eax
push 0x30
push esi
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, dword [esp + 0x100]
xor ecx, esp
call fcn.10042345
add esp, 0x104
ret

Function at 0x1000bd20
Capabilities:
Hide graphical window

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
lea esi, [esp + 0x10]
mov eax, edi
call fcn.10005300
mov ecx, dword [edi + 0x74]
lea eax, [edi + 0x70]
mov edi, dword [ecx]
mov ebx, eax
test ebx, ebx
je 0x1000bddb
cmp ebx, eax
jne 0x1000bddb
cmp edi, ecx
je 0x1000bdbb
cmp edi, dword [ebx + 4]
je 0x1000bdb6
mov edx, dword [esp + 0x1c]
sub edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x10]
mov esi, dword [edi + 8]
mov ecx, dword [esi + 0x30]
push 0
sub edx, 0x11
push edx
push eax
push 0x11
push 0
push ecx
call dword [sym.imp.USER32.dll_MoveWindow]
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 0x30]
xor edx, edx
cmp esi, dword [eax + 0x84]
setne dl
sub edx, 1
and edx, 5
push edx
push ecx
call dword [sym.imp.USER32.dll_ShowWindow]
cmp edi, dword [ebx + 4]
je 0x1000bdb6
mov eax, dword [ebp + 8]
mov edi, dword [edi]
mov ecx, dword [eax + 0x74]
add eax, 0x70
jmp 0x1000bd44
call fcn.1000c2e0
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x84]
test eax, eax
je 0x1000bdd2
mov eax, dword [eax + 0x30]
push eax
call dword [sym.imp.USER32.dll_SetFocus]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.1000c350
int3

Function at 0x1000fa20
Capabilities:
Get graphical window text

Disassembly:
sub esp, 0x108
mov eax, dword [0x1007e090]
xor eax, esp
mov dword [esp + 0x104], eax
mov ecx, dword [ecx + 0x14]
push esi
mov esi, dword [esp + 0x110]
push 0x104
lea eax, [esp + 8]
push eax
push ecx
call dword [sym.imp.USER32.dll_GetWindowTextA]
lea eax, [esp + 4]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x1000fa57
sub eax, edx
push eax
lea edx, [esp + 8]
push edx
mov ecx, esi
call fcn.10004330
mov ecx, dword [esp + 0x108]
pop esi
xor ecx, esp
call fcn.10042345
add esp, 0x108
ret 4
Function at 0x1001a8e0
Capabilities:
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1006a868
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push esi
push edi
mov eax, dword [0x1007e090]
xor eax, esp
push eax
lea eax, [esp + 0x28]
mov dword fs:[0], eax
mov esi, ecx
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
lea edi, [esi + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [edx + 4]
xor ebx, ebx
push 0xffffffffffffffff
mov ecx, edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], ebx
call eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], ebx
add esi, 4
lea ebx, [ebp + 8]
lea eax, [esp + 0x10]
call fcn.1001d6b0
mov edx, dword [esp + 0x10]
test edx, edx
mov ecx, dword [esi + 4]
je 0x1001a9ef
cmp edx, esi
jne 0x1001a9ef
mov eax, dword [esp + 0x14]
cmp eax, ecx
sete cl
test cl, cl
sete cl
test cl, cl
je 0x1001a9b5
cmp eax, dword [edx + 4]
jne 0x1001a978
call fcn.10020a10
mov esi, dword [eax + 0x10]
mov dword [esp + 0x30], 0xffffffff
cmp dword [esp + 0x20], 0
je 0x1001a99e
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
neg eax
sbb eax, eax
add eax, 1
mov dword [esp + 0x20], eax
mov eax, esi
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov dword [esp + 0x30], 0xffffffff
cmp dword [esp + 0x20], 0
je 0x1001a9d8
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
neg eax
sbb eax, eax
add eax, 1
mov dword [esp + 0x20], eax
xor eax, eax
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.10020a80
int3
Function at 0x1001ab20
Capabilities:
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1006a838
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push esi
push edi
mov eax, dword [0x1007e090]
xor eax, esp
push eax
lea eax, [esp + 0x28]
mov dword fs:[0], eax
mov esi, ecx
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
lea edi, [esi + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [edx + 4]
xor ebx, ebx
push 0xffffffffffffffff
mov ecx, edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], ebx
call eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], ebx
add esi, 4
lea ebx, [ebp + 8]
lea eax, [esp + 0x10]
call fcn.1001d6b0
mov edx, dword [esp + 0x10]
test edx, edx
mov eax, dword [esi + 4]
je 0x1001ac4f
cmp edx, esi
jne 0x1001ac4f
mov ebx, dword [esp + 0x14]
cmp ebx, eax
sete al
test al, al
sete al
test al, al
je 0x1001ac15
cmp ebx, dword [edx + 4]
jne 0x1001abb8
call fcn.10020a10
mov ecx, dword [ebx + 0x10]
test ecx, ecx
je 0x1001abcb
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
mov edx, dword [esp + 0x10]
push ebx
push edx
lea ecx, [esp + 0x18]
push ecx
push esi
call fcn.1001d3f0
mov dword [esp + 0x30], 0xffffffff
cmp dword [esp + 0x20], 0
je 0x1001abfb
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
neg eax
sbb eax, eax
add eax, 1
mov dword [esp + 0x20], eax
mov eax, 1
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov dword [esp + 0x30], 0xffffffff
cmp dword [esp + 0x20], 0
je 0x1001ac38
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
neg eax
sbb eax, eax
add eax, 1
mov dword [esp + 0x20], eax
xor eax, eax
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.10020a80
int3

Function at 0x1001bda0
Capabilities:
Get system information on windows

Disassembly:
mov eax, dword [0x101453c4]
mov edx, dword [esp + 8]
mov ecx, dword [eax + 8]
sub esp, 0x24
push edi
push edx
call fcn.1001a8e0
mov edi, eax
test edi, edi
jne 0x1001bdc3
pop edi
add esp, 0x24
ret 0x1c
push esi
mov esi, dword [esp + 0x38]
test esi, esi
jg 0x1001bded
cmp dword [0x10080540], 0
jne 0x1001bde8
lea eax, [esp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov esi, dword [esp + 0x1c]
add esi, esi
jmp 0x1001bded
mov esi, 1
mov ecx, edi
call fcn.1001a850
test eax, eax
jne 0x1001be00
pop esi
pop edi
add esp, 0x24
ret 0x1c
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
push ecx
mov ecx, dword [esp + 0x40]
push edx
push eax
push ecx
mov ecx, esi
mov edx, edi
call fcn.100341a0
pop esi
pop edi
add esp, 0x24
ret 0x1c

Function at 0x1001ca90
Capabilities:
Get memory capacity

Disassembly:
sub esp, 0x24
lea eax, [esp]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0xc]
mov dword [edx], ecx
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
add esp, 0x24
ret
Function at 0x1001cfb0
Capabilities:
Get mac address on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1006a6f8
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x1007e090]
xor eax, esp
mov dword [esp + 0x38], eax
push ebx
push esi
push edi
mov eax, dword [0x1007e090]
xor eax, esp
push eax
lea eax, [esp + 0x50]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
lea esi, [eax + 0x28c]
mov dword [esp + 0x18], edi
call fcn.1001b1c0
xor ebx, ebx
cmp eax, ebx
je 0x1001d170
cmp edi, ebx
je 0x1001d170
mov ecx, dword [eax + 0x28]
cmp ecx, ebx
je 0x1001d170
mov dword [esp + 0x44], 0xf
mov dword [esp + 0x40], ebx
mov byte [esp + 0x30], bl
mov dword [esp + 0x58], ebx
lea esi, [esp + 0x1c]
call fcn.10038c70
mov eax, dword [eax + 4]
push eax
call dword [sym.imp.WS2_32.dll_inet_ntoa]
mov ecx, eax
lea esi, [ecx + 1]
mov dl, byte [ecx]
add ecx, 1
cmp dl, bl
jne 0x1001d048
sub ecx, esi
push ecx
push eax
lea ecx, [esp + 0x34]
call fcn.10004330
lea ecx, [esp + 0x14]
push ecx
push ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
call sub.iphlpapi.dll_GetAdaptersInfo
cmp eax, 0x6f
jne 0x1001d0bc
mov eax, dword [esp + 0x14]
xor ecx, ecx
mov edx, 0x280
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1004233b
add esp, 4
cmp eax, ebx
mov dword [esp + 0x10], eax
jne 0x1001d0b1
mov dword [esp + 0x58], 0xffffffff
lea ecx, [esp + 0x2c]
call fcn.10004290
jmp 0x1001d170
lea ecx, [esp + 0x14]
push ecx
push eax
call sub.iphlpapi.dll_GetAdaptersInfo
mov edi, dword [esp + 0x10]
cmp edi, ebx
je 0x1001d13b
jmp 0x1001d0d0
mov eax, 6
cmp dword [edi + 0x190], eax
jne 0x1001d131
cmp dword [edi + 0x1a0], eax
jne 0x1001d131
lea esi, [edi + 0x1ac]
jmp 0x1001d0f0
cmp dword [esp + 0x44], 0x10
mov eax, dword [esp + 0x30]
jae 0x1001d0ff
lea eax, [esp + 0x30]
lea ecx, [esi + 4]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d122
cmp dl, bl
je 0x1001d11e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d122
add eax, 2
add ecx, 2
cmp dl, bl
jne 0x1001d102
xor eax, eax
jmp 0x1001d127
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x1001d192
mov esi, dword [esi]
cmp esi, ebx
jne 0x1001d0f0
mov edi, dword [edi]
cmp edi, ebx
jne 0x1001d0d0
mov edi, dword [esp + 0x10]
push edi
call fcn.1004390c
add esp, 4
mov dword [esp + 0x58], 0xffffffff
cmp dword [esp + 0x44], 0x10
jb 0x1001d160
mov ecx, dword [esp + 0x30]
push ecx
call fcn.10042340
add esp, 4
mov dword [esp + 0x44], 0xf
mov dword [esp + 0x40], ebx
mov byte [esp + 0x30], bl
xor eax, eax
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x38]
xor ecx, esp
call fcn.10042345
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [edi + 0x194]
mov eax, dword [esp + 0x18]
mov dword [eax], edx
mov edx, dword [esp + 0x10]
mov cx, word [edi + 0x198]
push edx
mov word [eax + 4], cx
call fcn.1004390c
add esp, 4
mov dword [esp + 0x58], 0xffffffff
cmp dword [esp + 0x44], 0x10
jb 0x1001d1d2
mov eax, dword [esp + 0x30]
push eax
call fcn.10042340
add esp, 4
mov dword [esp + 0x44], 0xf
mov dword [esp + 0x40], ebx
mov byte [esp + 0x30], bl
mov eax, 1
jmp 0x1001d172
Function at 0x1001e0e0
Capabilities:
Get process heap flags

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1006a608
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push esi
push edi
mov eax, dword [0x1007e090]
xor eax, esp
push eax
lea eax, [esp + 0x28]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
mov esi, ecx
mov eax, dword [esi + 0x44]
mov edx, dword [esi + 0x40]
lea edi, [esi + 0x40]
mov dword [esp + 0x1c], eax
mov eax, dword [edx + 4]
push 0xffffffffffffffff
mov ecx, edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], 0
call eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], 0
test ebx, ebx
jne 0x1001e178
mov dword [esp + 0x30], 0xffffffff
test eax, eax
je 0x1001e163
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
neg eax
sbb eax, eax
add eax, 1
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp dword [ebx + 0x1068], 0
lea eax, [ebx + 0x1068]
jne 0x1001e1c0
mov ecx, dword [ebx + 0x1050]
movzx eax, word [ecx]
movzx edx, ax
push edx
push str.someone_about_to_free_msg_already_freed______0x_x_
push 0x2000001
call fcn.1001ce30
add esp, 0xc
mov dword [esp + 0x30], 0xffffffff
cmp dword [esp + 0x20], 0
je 0x1001e163
mov eax, dword [edi]
mov edx, dword [eax + 0xc]
mov ecx, edi
call edx
jmp 0x1001e158
push 0
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
mov eax, dword [esi + 0x10]
cmp eax, 0xffffffff
mov dword [esp + 0x10], ebx
je 0x1001e1da
cmp dword [esi + 0x24], eax
jae 0x1001e1e7
lea eax, [esp + 0x10]
push eax
lea eax, [esi + 0x14]
call fcn.10021880
add dword [esi + 0x38], 0xffffffff
add esi, 0x7c
lea ebx, [ebp + 8]
lea eax, [esp + 0x10]
call fcn.1001ec60
mov eax, dword [esp + 0x10]
test eax, eax
mov edx, dword [esi + 4]
je 0x1001e247
cmp eax, esi
jne 0x1001e247
mov ecx, dword [esp + 0x14]
cmp ecx, edx
sete dl
test dl, dl
je 0x1001e228
mov dword [esp + 0x30], 0xffffffff
cmp dword [esp + 0x20], 0
jmp 0x1001e14d
push ecx
push eax
lea ecx, [esp + 0x18]
push ecx
push esi
call fcn.1001e9a0
mov dword [esp + 0x30], 0xffffffff
cmp dword [esp + 0x20], 0
jmp 0x1001e14d
call fcn.10020610
int3

Function at 0x10028930
Capabilities:
Access peb ldr_data
Get ntdll base address

Disassembly:
push 0xffffffffffffffff
push 0x1006b77d
mov eax, dword fs:[0]
push eax
sub esp, 8
push ebx
push esi
mov eax, dword [0x1007e090]
xor eax, esp
push eax
lea eax, [esp + 0x14]
mov dword fs:[0], eax
mov esi, dword [esp + 0x24]
mov dword [esi], vtable.IFile.0
xor ebx, ebx
mov dword [esi + 0x2c], 0xf
mov dword [esi + 0x28], ebx
mov byte [esi + 0x18], bl
mov dword [esp + 0x1c], ebx
lea ecx, [esp + 0x24]
lea eax, [esi + 0x30]
push ecx
push eax
mov dword [esp + 0x18], eax
call fcn.1002cb90
mov byte [esp + 0x1c], 2
lea edx, [esi + 0x58]
push edx
call fcn.10026f20
mov byte [esp + 0x1c], 3
or eax, 0xffffffff
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], ebx
mov dword [esi + 0x94], ebx
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esp + 0x1c], eax
mov eax, esi
mov ecx, dword [esp + 0x14]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
add esp, 0x14
ret 4
Function at 0x100289d0
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x1006a4bd
mov eax, dword fs:[0]
push eax
sub esp, 8
push ebx
push esi
mov eax, dword [0x1007e090]
xor eax, esp
push eax
lea eax, [esp + 0x14]
mov dword fs:[0], eax
mov esi, ecx
mov dword [esp + 0xc], esi
mov dword [esi], vtable.IFile.0
mov dword [esp + 0x1c], 2
call fcn.10028d00
mov byte [esp + 0x1c], 1
lea ecx, [esi + 0x58]
call fcn.100177e0
xor ebx, ebx
mov byte [esp + 0x1c], bl
lea eax, [esi + 0x30]
mov dword [esp + 0x10], eax
mov byte [esp + 0x1c], bl
push eax
call fcn.1002b4e0
mov dword [esp + 0x1c], 0xffffffff
cmp dword [esi + 0x2c], 0x10
jb 0x10028a4c
mov eax, dword [esi + 0x18]
push eax
call fcn.10042340
add esp, 4
mov dword [esi + 0x2c], 0xf
mov dword [esi + 0x28], ebx
mov byte [esi + 0x18], bl
mov ecx, dword [esp + 0x14]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
add esp, 0x14
ret

Function at 0x10028f80
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1006b703
mov eax, dword fs:[0]
push eax
sub esp, 0x24
push esi
push edi
mov eax, dword [0x1007e090]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
mov eax, dword [ebx + 0x5c]
mov edx, dword [ebx + 0x58]
lea edi, [ebx + 0x58]
mov dword [esp + 0x18], eax
mov eax, dword [edx + 4]
xor esi, esi
push 0xffffffffffffffff
mov ecx, edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], esi
call eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x38], esi
lea ecx, [ebp + 8]
push ecx
lea edx, [esp + 0x10]
lea esi, [ebx + 0x30]
push edx
call fcn.1002cc20
mov edx, dword [esp + 0xc]
test edx, edx
mov ecx, dword [ebx + 0x38]
lea eax, [ebx + 0x34]
je 0x100290cf
cmp edx, eax
jne 0x100290cf
cmp dword [esp + 0x10], ecx
sete al
test al, al
sete al
test al, al
je 0x10029048
mov dword [esp + 0x38], 0xffffffff
cmp dword [esp + 0x1c], 0
je 0x10029031
mov eax, dword [edi]
mov edx, dword [eax + 0xc]
mov ecx, edi
call edx
neg eax
sbb eax, eax
add eax, 1
mov dword [esp + 0x1c], eax
or eax, 0xffffffff
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
push 4
call fcn.10042756
add esp, 4
mov dword [esp + 0xc], eax
mov byte [esp + 0x38], 1
test eax, eax
je 0x10029067
mov dword [eax], 0
jmp 0x10029069
xor eax, eax
mov byte [esp + 0x38], 0
mov ecx, dword [ebp + 8]
lea edx, [esp + 0xc]
mov dword [eax], 0
mov dword [esp + 0x10], eax
push edx
lea eax, [esp + 0x24]
push eax
push esi
mov dword [esp + 0x18], ecx
call fcn.1002b580
add dword [ebx + 0x94], 1
mov dword [esp + 0x38], 0xffffffff
cmp dword [esp + 0x1c], 0
je 0x100290b9
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
neg eax
sbb eax, eax
add eax, 1
mov dword [esp + 0x1c], eax
xor eax, eax
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
call fcn.1002e290
int3
Function at 0x10029de0
Capabilities:
Get file size

Disassembly:
push 0xffffffffffffffff
push 0x1006c528
mov eax, dword fs:[0]
push eax
sub esp, 0xc
push ebx
push ebp
push esi
push edi
mov eax, dword [0x1007e090]
xor eax, esp
push eax
lea eax, [esp + 0x20]
mov dword fs:[0], eax
mov ebx, ecx
mov eax, dword [ebx + 0x5c]
mov edx, dword [ebx + 0x58]
lea esi, [ebx + 0x58]
mov dword [esp + 0x18], eax
mov eax, dword [edx + 4]
xor edi, edi
push 0xffffffffffffffff
mov ecx, esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x20], edi
call eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x28], edi
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
mov ebp, dword [esp + 0x30]
push ecx
push edx
push ebp
mov ecx, ebx
call fcn.100293e0
mov edi, eax
test edi, edi
je 0x10029e5a
mov dword [esp + 0x28], 0xffffffff
jmp 0x10029f51
mov eax, dword [ebx]
mov edx, dword [eax + 0x1c]
mov ecx, ebx
call edx
test eax, eax
jne 0x10029f3e
mov eax, dword [ebx + 4]
cmp eax, 1
jne 0x10029e80
mov ecx, 0x40000000
lea edx, [eax + 1]
lea edi, [eax + 0x7f]
jmp 0x10029e8f
mov ecx, accept
mov edx, 3
mov edi, 0x8000000
cmp dword [ebp + 0x18], 0x10
jb 0x10029e9a
mov eax, dword [ebp + 4]
jmp 0x10029e9d
lea eax, [ebp + 4]
push 0
push edi
push edx
push 0
push 1
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
or ebp, 0xffffffff
cmp eax, ebp
mov dword [ebx + 0x98], eax
jne 0x10029ee3
mov dword [esp + 0x28], ebp
cmp dword [esp + 0x1c], 0
je 0x10029ed9
mov eax, dword [esi]
mov edx, dword [eax + 0xc]
mov ecx, esi
call edx
neg eax
sbb eax, eax
add eax, 1
mov dword [esp + 0x1c], eax
mov eax, 0xfffffff3
jmp 0x10029f6e
cmp dword [ebx + 4], 1
push 0
jne 0x10029f1c
mov ecx, dword [esp + 0x38]
mov edi, dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0
push ecx
push eax
mov dword [ebx + 0x10], ecx
call edi
mov eax, dword [ebx + 0x98]
push eax
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
mov ecx, dword [ebx + 0x98]
push 0
push 0
push 0
push ecx
call edi
jmp 0x10029f41
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
test eax, eax
mov dword [ebx + 0x10], eax
jne 0x10029f41
mov dword [esp + 0x28], ebp
lea esi, [esp + 0x14]
call fcn.10017760
mov eax, 0xfffffffd
jmp 0x10029f6e
or ebp, 0xffffffff
mov edx, dword [esp + 0x38]
push edx
call fcn.10028f80
mov edi, eax
mov dword [esp + 0x28], ebp
cmp dword [esp + 0x1c], 0
je 0x10029f6c
mov eax, dword [esi]
mov edx, dword [eax + 0xc]
mov ecx, esi
call edx
neg eax
sbb eax, eax
add eax, 1
mov dword [esp + 0x1c], eax
mov eax, edi
mov ecx, dword [esp + 0x20]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc

Function at 0x10029fe0
Capabilities:
Read file on windows

Disassembly:
push esi
push edi
mov edi, dword [esp + 0x14]
test edi, edi
mov esi, ecx
jne 0x10029ff3
pop edi
xor eax, eax
pop esi
ret 0xc
mov eax, dword [esp + 0xc]
call fcn.10029f90
test eax, eax
je 0x10029fec
mov ecx, dword [esp + 0x10]
mov edx, dword [esi + 0x98]
push 0
lea eax, [esp + 0x18]
push eax
push edi
push ecx
push edx
mov dword [esp + 0x28], 0
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, esi
call fcn.10029fc0
mov eax, dword [esp + 0x14]
pop edi
pop esi
ret 0xc
Function at 0x1002a040
Capabilities:
Write file on windows

Disassembly:
mov eax, dword [esp + 0xc]
test eax, eax
jne 0x1002a04b
ret 0xc
mov ecx, dword [ecx + 0x98]
push 0
lea edx, [esp + 0x10]
push edx
push eax
mov eax, dword [esp + 0x14]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_WriteFile]
neg eax
sbb eax, eax
and eax, dword [esp + 0xc]
ret 0xc