• No results found

Hiding Pin's Artifacts to Defeat Evasive Malware

N/A
N/A
Protected

Academic year: 2021

Share "Hiding Pin's Artifacts to Defeat Evasive Malware"

Copied!
116
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Hiding PIN's Artifacts

to Defeat Evasive Malware

Mario Polino, Andrea Continella, Sebastiano Mariani,

(2)

Agenda

-

A

rancino

-

D

ynamic

B

inary

I

nstrumentation

T

ools

-

DBI

Evasion

-

E

vasive

M

alware

M

easurement

-

E

vasive

R

esilient

U

npacking

T

ool

(3)

Arancino

Fake Read Handler Module

Fake Write Handler Module

Fake Free Handler Module

Fake Memory Handler Modules

Pattern Matching

Module

Self Modifying Code

Module

Process Information Module

Hooking Function Module Hooking Syscall Module

Hooking Module

(4)

Arancino

Fake Read Handler Module

Fake Write Handler Module

Fake Free Handler Module

Fake Memory Handler Modules

Pattern Matching

Module

Self Modifying Code

Module

Process Information Module

Hooking Function Module Hooking Syscall Module

Hooking Module

(5)
(6)

Malware Analysis

Static

Dynamic

mov eax, esi mov edi, ebx mov ecx, 14h rep stosd

mov dword ptr [esp+0Ch], 0Ah

mov dword ptr [esp+8], 50h mov [esp+4], ebx mov dword ptr [esp], 0 call sub_8048C30 cmp eax, 0FFFFFFFFh jz short loc_80488F8 mov [esp], ebx

call sub_8048A50 test eax, eax jz short loc_8048858

loc_80488F8: mov edx, [esp+6Ch] xor edx, large gs:14h jnz short loc_804890D loc_8048858:

cmp ds:dword_804C3C0, 1 mov [esp+8], ebx mov dword ptr [esp+4], offset aSInvalidComman sbb eax, eax not eax add eax, 24h mov [esp+0Ch], eax mov dword ptr [esp], 1 call ___printf_chk

cmp ds:dword_804C3C0, 1 mov dword ptr [esp+4], 804960Bh mov dword ptr [esp], 1

sbb eax, eax not eax add eax, 24h mov [esp+8], eax call ___printf_chk jmp short loc_8048882

loc_8048882: mov eax, ds:stdout mov [esp], eax call _fflush

CreateFile

(_T("File.txt"),...) VirtualAlloc( ... )

ReadFile(hout, buf, 40, 0, NULL);

CloseHandle(hout)

Run in a

sandbox instancesTraces

(7)

Malware Evasive

If (

amIUnderAnalysis())

{

die();

}

else

{

beMalicious();

}

(8)

D

ynamic

B

inary

(9)

What is a DBI Tool?

Memory

.text

.rodata

.data

stack

(10)

What is a DBI Tool?

Memory

DBI

///////////////////////// ///////////////////////// ///////////////////////// ///////////////////////// ///////////////////////// ///////////////////////// /////////////////////////

.text

.rodata

.data

stack

(11)

What is a DBI Tool?

Trace

Control Flow

Graph

Basic Block

BB1 BB3 BB2 BB4 BB6 BB7 BB8 BB9 BB10

(12)

What is a DBI Tool?

BB1 BB3 BB2 BB4 BB6 BB7 BB8 BB9 BB10

Code Cache

BB1 BB3 BB2

Trace is

copied in the

code cache

(13)

BB1 BB3 BB2 BB4 BB6 BB7 BB8 BB9 BB10

Code Cache

User instrumentation

code is added.

BB1 BB3 BB2 User Defined Code

User Defined

Code

What is a DBI Tool?

JIT

Compiler

(14)

DBI - Evasive Malware

DynamoRIO

Valgrind

Intel Pin Tools

(15)

DBI - Evasive Malware

DynamoRIO

Valgrind

Intel Pin Tools

(16)

Overhead

Detection

DBI - Evasive Malware

Code Cache

Artifacts

Environment

Artifact

JIT Compiler

Detection

(17)
(18)

Code Cache Artifacts

Code Cache

BB1 BB3 BB2 User Defined Code

All those artifacts caused by having a Code

Cache

IP Detection

(19)

CCA - IP Detection

Nt Sycall (EIP -> EDX)

int 2e

Floating Point Context on the Stack

fsave/ fxsave/ fstenv

When we find one of those in a trace we patch the env

after the execution of the instruction.

NB call Instruction is handled by Pin

ins1

ins2

ins3

ins4

ins5

ins6

...

ins1

ins2

ins3

ins4

EIP

code cache

(20)

Arancino - Pattern Matching

Module

Fake Read Handler Module

Fake Write Handler Module

Fake Free Handler Module

Fake Memory Handler Modules

Pattern Matching

Module

Self Modifying Code

Module

Process Information Module

Hooking Function Module Hooking Syscall Module

Hooking Module

Arancino

-

PatchMap

: List of

instructions and func

pointers

-

PatchDispatcher

:

check and add patch

to instructions during

trace building.

(21)

CCA - IP Detection

add eax,4

int 2e

jmp 0x0804856c

TRACE PATCH DISPATCHER

int 2e

fsave

fxsave

PATCHED TRACE

(22)

CCA - IP Detection

add eax,4

int 2e

jmp 0x0804856c

TRACE

add eax,4

int 2e

fsave

fxsave

PATCHED TRACE PATCH DISPATCHER

(23)

CCA - IP Detection

add eax,4

int 2e

jmp 0x0804856c

TRACE

add eax,4

int 2e

fsave

fxsave

PATCHED TRACE PATCH DISPATCHER

Is it in the list?

(24)

CCA - IP Detection

add eax,4

int 2e

jmp 0x0804856c

TRACE

add eax,4

int 2e

fsave

fxsave

PATCHED TRACE PATCH DISPATCHER

Nope!

(25)

CCA - IP Detection

add eax,4

int 2e

jmp 0x0804856c

TRACE

add eax,4

int 2e

fsave

fxsave

PATCHED TRACE

add eax,4

PATCH DISPATCHER

(26)

CCA - IP Detection

add eax,4

int 2e

jmp 0x0804856c

TRACE

int 2e

int 2e

fsave

fxsave

PATCHED TRACE

add eax,4

PATCH DISPATCHER

(27)

CCA - IP Detection

add eax,4

int 2e

jmp 0x0804856c

TRACE

int 2e

int 2e

fsave

fxsave

PATCHED TRACE

add eax,4

PATCH DISPATCHER

Is it in the list?

(28)

CCA - IP Detection

add eax,4

int 2e

jmp 0x0804856c

TRACE

int 2e

int 2e

fsave

fxsave

PATCHED TRACE

add eax,4

PATCH DISPATCHER

Yes!

(29)

CCA - IP Detection

add eax,4

int 2e

jmp 0x0804856c

TRACE

int 2e

int 2e

fsave

fxsave

PATCHED TRACE

add eax,4

int 2e

patch_int2e()

PATCH DISPATCHER

(30)

CCA - IP Detection RT

add eax,4

int 2e

Jmp 0x0804856c

[ … ]

add eax,4

int 2e

patch_int_2e()

Jmp 0x0804856c

Main

module

Code

Cache

0x00200000

0x00200003

0x00200005

0x00400000

0x00400005

0x00200003

EDX

0x00400003

(31)

CCA - IP Detection RT

add eax,4

int 2e

Jmp 0x0804856c

[ … ]

add eax,4

int 2e

patch_int_2e()

Jmp 0x0804856c

Main

module

Code

Cache

0x00200000

0x00200003

0x00200005

0x00400000

0x00400005

0x00400003

EDX

0x00400003

(32)

Code Cache Artifacts

Code Cache

BB1 BB3 BB2 User Defined Code

All those artifacts caused by having a Code

Cache

IP Detection

(33)

CCA - Self Modifying Code

ins1

ins2

wrong_ins3

ins4

ins5

ins6

ins7

...

.text

code

cache

Collected

Trace

(34)

CCA - Self Modifying Code

ins1

ins2

wrong_ins3

ins4

ins5

ins6

ins7

...

.text

code

cache

ins1

ins2

wrong_ins3

ins4

ins5

Collected

Trace

(35)

CCA - Self Modifying Code

ins1

ins2

wrong_ins3

ins4

ins5

ins6

ins7

...

ins1

ins2

wrong_ins3

ins4

ins5

.text

code

cache

Instruction Pointer

Patch

(36)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

ins7

...

ins1

ins2

wrong_ins3

ins4

ins5

.text

code

cache

Instruction Pointer

Patch

(37)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

ins7

...

ins1

ins2

wrong_ins3

ins4

ins5

.text

code

cache

Instruction Pointer

(38)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

ins7

...

ins1

ins2

wrong_ins3

ins4

ins5

.text

code

(39)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

ins7

...

ins1

ins2

wrong_ins3

ins4

ins5

.text

code

cache

Instruction Pointer

(40)

Arancino - Self Modifying Code

Module

Fake Read Handler Module

Fake Write Handler Module

Fake Free Handler Module

Fake Memory Handler Modules

Pattern Matching

Module

Self Modifying Code

Module

Process Information Module

Hooking Function Module Hooking Syscall Module

Hooking Module

Arancino

-

MarkWrittenAddress

:

store which address has

been overwritten

-

CheckEIPWritten

:

check if next

instruction has been

overwritten.

(41)

CCA - Self Modifying Code

ins1

ins2

wrong_ins3

ins4

ins5

ins6

...

.text

code

cache

Collected

Trace

Analysis Routines CheckEipWritten() MarkWrittenAddress()

ins1

CheckEipWritten()

ins2

CheckEipWritten()

wrong_ins3

CheckEipWritten()

(42)

CCA - Self Modifying Code

ins1

ins2

wrong_ins3

ins4

ins5

ins6

...

.text

code

cache

CheckEipWritten() MarkWrittenAddress()

ins1

CheckEipWritten()

ins2

CheckEipWritten()

wrong_ins3

CheckEipWritten()

Instruction Pointer

(43)

CCA - Self Modifying Code

ins1

ins2

wrong_ins3

ins4

ins5

ins6

...

.text

code

cache

CheckEipWritten() MarkWrittenAddress()

ins1

CheckEipWritten()

ins2

CheckEipWritten()

wrong_ins3

CheckEipWritten() address_ins3

(44)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

...

.text

code

cache

CheckEipWritten() MarkWrittenAddress()

ins1

CheckEipWritten()

ins2

CheckEipWritten()

wrong_ins3

CheckEipWritten() address_ins3

Instruction Pointer

Patch

(45)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

...

.text

code

cache

CheckEipWritten() MarkWrittenAddress()

ins1

CheckEipWritten()

ins2

CheckEipWritten()

wrong_ins3

CheckEipWritten() address_ins3

Instruction Pointer

(46)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

...

.text

code

cache

CheckEipWritten() MarkWrittenAddress()

ins1

CheckEipWritten()

ins2

CheckEipWritten()

wrong_ins3

CheckEipWritten() address_ins3

(47)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

...

.text

code

cache

CheckEipWritten() MarkWrittenAddress()

ins1

CheckEipWritten()

ins2

CheckEipWritten()

wrong_ins3

CheckEipWritten() address_ins3

Instruction Pointer

(48)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

...

.text

code

cache

CheckEipWritten() MarkWrittenAddress()

ins1

CheckEipWritten()

ins2

CheckEipWritten()

wrong_ins3

CheckEipWritten() address_ins3

Instruction Pointer

(49)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

...

.text

code

cache

CheckEipWritten() MarkWrittenAddress()

ins1

CheckEipWritten()

ins2

CheckEipWritten()

wrong_ins3

CheckEipWritten() address_ins3

(50)

CCA - Self Modifying Code

ins1

ins2

ins3

ins4

ins5

ins6

...

.text

code

cache

CheckEipWritten() MarkWrittenAddress()

ins1

CheckEipWritten()

ins2

CheckEipWritten()

wrong_ins3

CheckEipWritten() address_ins3

Instruction Pointer

Cache

Invalidated

(51)

CCA - Self Modifying Code

address_ins3

ins1

ins2

ins3

ins4

ins5

ins6

...

.text

code

cache

ReCollected

Trace

(52)

CCA - Self Modifying Code

address_ins3

ins1

ins2

ins3

ins4

ins5

ins6

...

.text

code

cache

ReCollected

Trace

CheckEipWritten()

ins3

CheckEipWritten()

ins4

CheckEipWritten()

ins5

(53)
(54)

Environment Artifacts

Parent Detection

(55)

EA - Parent Detection

Malware can check which is the process father.

NtQuerySystemInformation

CSRSS.exe

(56)

Arancino - Hooking Module

Fake Read Handler Module

Fake Write Handler Module

Fake Free Handler Module

Fake Memory Handler Modules

Pattern Matching

Module

Self Modifying Code

Module

Process Information Module

Hooking Function Module Hooking Syscall Module

Hooking Module

Arancino

- Hooking

Function

Module: Install an

Hook on dll’s

Functions

- Hooking

Syscall

Module: Install an

Hook on dll’s

Functions

(57)

Arancino - Hooking Module

Fake Read Handler Module

Fake Write Handler Module

Fake Free Handler Module

Fake Memory Handler Modules

Pattern Matching

Module

Self Modifying Code

Module

Process Information Module

Hooking Function Module Hooking Syscall Module

Hooking Module

Arancino

- Hooking

Function

Module: Install an

Hook on dll’s

Functions

- Hooking

Syscall

Module: Install an

Hook on dll’s

Functions

(58)

Arancino - Hook Functions

ImageLoad

Memory

.text

(59)

Arancino - Hook Functions

ImageLoad

Memory

.text

new.dll

(60)

Arancino - Hook Functions

ImageLoad

Memory

.text

new.dll

Pintool.dll

new.dll

VirtualFree

VirtualQueryEx

...

HOOK DISPATCHER

(61)

Arancino - Hook Functions

ImageLoad

Memory

.text

new.dll

Pintool.dll

new.dll

VirtualFree

VirtualQueryEx

...

HOOK DISPATCHER

(62)

Arancino - Hook Functions

ImageLoad

Memory

.text

new.dll

Pintool.dll

new.dll

VirtualFree

VirtualQueryEx

...

HOOK DISPATCHER

Check if

Functions are

in the List

(63)

Arancino - Hook Functions

ImageLoad

Memory

.text

new.dll

new.dll

VirtualFree

VirtualQueryEx

...

HOOK DISPATCHER

Pintool.dll

(64)

Arancino - Hook Functions

ImageLoad

.text

new.dll

VirtualFree

VirtualQueryEx

...

HOOK DISPATCHER

Hook Function

Pintool.dll

Function

new.dll

(65)

EA - Parent Detection

Hooked NtQuerySystemInformation

pin.exe -> cmd.exe

Hooked NtOpenProcess

(66)

Environment Artifacts

Parent Detection

(67)

EA - Memory Fingerprinting

.text

new.dll

(68)

EA - Memory Fingerprinting

.text

new.dll

(69)

EA - Memory Fingerprinting

.text

new.dll

(70)

EA - Memory Fingerprinting

.text

new.dll

(71)

EA - Memory Fingerprinting

.text

new.dll

(72)

EA - Memory Fingerprinting

.text

new.dll

Pintool.dll

0x00400000

0x00402000

0x55100000

0x55101000

0x6f100000

0x6f103000

(73)

EA - Memory Fingerprinting

.text

new.dll

Pintool.dll

0x00400000

0x00402000

0x55100000

0x55101000

0x6f100000

0x6f103000

0x58402000

(74)

EA - Memory Fingerprinting

.text

new.dll

Pintool.dll

0x00400000

0x00402000

0x55100000

0x55101000

0x6f100000

0x6f103000

Crash

0x58402000

(75)

EA - Memory Fingerprinting

.text

new.dll

Pintool.dll

(76)

EA - Memory Fingerprinting

We Hook NtQueryVirtualMemory

We create a

Whitelist

of accessible memory regions updated

at runtime.

Main Module

Libraries

Heap and Stack

PEB, TEB, etc.

(77)
(78)

JIT Compiler Detection

Memory Page Permissions

Checks if there are

WX pages

DLL Hook Detection

(79)

JIT Compiler Detection

Memory Page Permissions

Checks if there are

WX pages

DLL Hook Detection

(80)

JITC Detection - DLL Hook

A process can search through memory for discrepancy

caused by Hooks.

KiUserApcDispatcher

- Instrumented execution

KiUserApcDispatcher

- normal execution

(81)

Arancino

Fake Read Handler Module

Fake Write Handler Module

Fake Free Handler Module

Fake Memory Handler Modules

Pattern Matching

Module

Self Modifying Code

Module

Process Information Module

Hooking Function Module Hooking Syscall Module

Hooking Module

(82)

JITC Detection - DLL Hook

TRACE FAKE_READ_HANDLER MEMORY

(83)

JITC Detection - DLL Hook

TRACE FAKE_READ_HANDLER MEMORY

(84)

JITC Detection - DLL Hook

add eax,2

mov edx, [eax]

cmp edx,0x8d

jnz ebx

TRACE

add

eax,2

FAKE_READ_HANDLER

Is memory read

operation?

Nope!

Go next

eax = 0x77C76F58

MEMORY 0x77C76F58 JMP 0x5B680BE0

(85)

JITC Detection - DDL Hook

add eax,2

mov edx, [eax]

cmp edx,0x8d

jnz ebx

TRACE

mov edx,

[eax]

FAKE_READ_HANDLER

Is memory read

operation?

eax = 0x77C76F58

MEMORY 0x77C76F58 JMP 0x5B680BE0

Yes

(86)

JITC Detection - DDL Hook

add eax,2

mov edx, [eax]

cmp edx,0x8d

jnz ebx

TRACE

mov edx,

[eax]

FAKE_READ_HANDLER

eax = 0x77C76F58

MEMORY 0x77C76F58 JMP 0x5B680BE0

Is the target address inside a

fake memory item?

Yes

fake memory function

invoked

(87)

JITC Detection - DDL Hook

add eax,2

mov edx, [eax]

cmp edx,0x8d

jnz ebx

TRACE

mov edx,

[eax]

FAKE_READ_HANDLER

eax = 0x77C76F58

MEMORY 0x77C76F58 JMP 0x5B680BE0

0x77C76F58

0x77C76F5F

FakeMemoryFunc()

JMP 0x5B680BE0 LEA EAX, [ESP+2D] 0x01C00A2B

(88)

JITC Detection - DDL Hook

add eax,2

mov edx, [eax]

cmp edx,0x8d

jnz ebx

TRACE

mov edx,

[eax]

FAKE_READ_HANDLER MEMORY 0x77C76F58 JMP 0x5B680BE0JMP 0x5B680BE0 LEA EAX, [ESP+2D] 0x01C00A2B

Instrumented process

read the fake value:

LEA EAX, [ESP+2D]

and doesn’t detect

PIN

(89)

JIT Compiler Detection

Memory Page Permissions

Checks if there are

WX pages

DLL Hook Detection

(90)

JIT Compiler - API Hook

JIT Compiler needs Memory to perform the compiling

We can monitor the allocation by Hooking at

(91)

JIT Compiler - API Hook

.text

Counter Fun

Pintool.dll

ZwAllocateVirtualMemory

ntdll.dll

(92)

JIT Compiler - API Hook

.text

Counter Fun

Pintool.dll

ZwAllocateVirtualMemory

ntdll.dll

Write

(93)

Arancino

Fake Read Handler Module

Fake Write Handler Module

Fake Free Handler Module

Fake Memory Handler Modules

Pattern Matching

Module

Self Modifying Code

Module

Process Information Module

Hooking Function Module Hooking Syscall Module

Hooking Module

(94)

JIT Compiler - API Hook

.text

Counter Fun

Pintool.dll

ZwAllocateVirtualMemory

ntdll.dll

Write

(95)

JIT Compiler - API Hook

.text

Counter Fun

Pintool.dll

ZwAllocateVirtualMemory

ntdll.dll

Write

(96)

JIT Compiler - API Hook

.text

Counter Fun

Pintool.dll

ZwAllocateVirtualMemory

ntdll.dll

Write

(97)

JIT Compiler - API Hook

.text

Counter Fun

Pintool.dll

ZwAllocateVirtualMemory

ntdll.dll

Read

(98)
(99)

Overhead Detection

Windows Time

Use windows API

GetTickCount and timeGetTime

Or Windows Structures

KUSER_SHARED_DATA.

CPU Time

(100)

Evasive Malware

Measurement

(101)

Anti-Instrumentation

Measurement

Dataset

7006 Binaries

Virus Total Intelligence (3+ AV Detection)

From October 2016 to February 2017

(102)

Anti-Instrumentation

Measurement

Environment Setup

Virtual Machine (VirtualBox)

Windows 7 (64-bit)

Custom Apps (Adobe Reader, Chrome, and media players)

User Data (saved credentials, browser history, etc.)

Basic User Activity (moving the mouse, launching applications)

(103)

Evasive Malware

At least one evasive behavior:

1,093 / 7006 (15.6%)

Family Name [1]

Samples

Evasive

Techniques

virlock

619 (8.8%)

600 (96.9%)

2

confidence

505 (7.2%)

68 (13.5%)

4

virut

242 (3.5%)

13 (5.4%)

2

mira

230 (3.3%)

9 (3.9%)

1

upatre

187 (2.7%)

2 (1.1%)

1

lamer

171 (2.4%)

0 (0.0%)

0

sivis

168 (2.4%)

0 (0.0%)

0

[1] AvClass https://github.com/malicialab/avclass

(104)

Top Evasive Malware

At least one evasive behavior:

1,093 / 7006 (15.6%)

Family Name [1]

Samples

Evasive

Techniques

sfone

19

19 (100.0%)

1

unruy

11

11 (100.0%)

1

virlock

619

600 (96.9%)

2

vilsel

13

8 (61.5%)

2

urelas

18

9 (47.4%)

2

confuser

52

8 (44.4%)

1

vobfus

29

19 (36.5%)

1

[1] AvClass https://github.com/malicialab/avclass

(105)

Top Techniques Used

At least one evasive behavior:

1,093 / 7006 (15.6%)

Technique

#

Code Cache Artifacts

Self-modifying code

897

Environment Artifacts

Parent detection

259

JIT Compiler Detection

Write on protected

memory region

40

Environment Artifacts

Check DEBUG flag

5

(106)

Overhead

Pin time

[ms]

Arancino

[ms]

Arancino

overhead

[%]

Module

activated

Parent Detection

850

870

2%

Hooking

Module

EIP Detection - int2e

710

1,150

62%

Pattern

Match

Module

Memory

Fingerprinting

2,000

7,090

254,5%

Fake Read

Module

Memory Allocations

2,000

2,900

45%

Fake Write

Module +

Hooking

Module

(107)

Unpacking Approach

Detect W and

X memory

regions

Dump

the

Program

Deobfuscate

the Import

Address

Table

Recognize

the correct

dump

(108)

Experiment 1 : known packers

Upx FSG Mew mpress PeCompact Obsidium ExePacker ezip

MessageBox.exe

WinRAR.exe

Xcomp PElock ASProtect ASPack eXpressor exe32packer beropacker Hyperion

MessageBox.exe

WinRAR.exe

(109)

Experiment 2 : wild samples

%

Unpacked and

working

669

63

Unpacked but not

executable

139

13

Not unpacked

258

24

(110)

Arancino - GitHub

DEMO Time!

(111)

Black Hat Sound Bytes

Malware authors employ

Anti-Instrumentation

techniques to

detect when their samples are being instrumented

We proposed an approach to practically

defeat such techniques

We studied the

common techniques

adopted by modern

malware authors to evade of instrumentation systems

On top of Arancino ~> dynamic,

evasion-resilient unpacker

(112)

Arancino - GitHub

Thanks!

https://github.com/necst/arancino

Mario Polino

(113)

Arancino - GitHub

Questions?

https://github.com/necst/arancino

Mario Polino

(114)

Arancino - GitHub

Questions?

https://github.com/necst/arancino

Mario Polino

(115)

Credits

Icons, CC from Noun Project:

Vicons Design

Aya Sofya

Adnen Kadri

Stock Image Folio

Icon Fair

Creative Stall

Gregor Cresnar

(116)

Referenties

GERELATEERDE DOCUMENTEN

Het magazijn in Boelenslaan bevindt zich in de fabriek en wordt als hoofdmagazijn beschouwt. In de vroege jaren van Pointer werd deze hal gecombineerd met de montagehal. In dat

In this article, we devised query processing strategies that use the result entries found in the result cache of a search engine to answer previously unseen user queries.. We

These contributions are fundamental to the progress in the field of automatic restructuring and parallelization of code using pointer-linked data structures, an area for which

Andere, kleinere details zoals de layout van data en de locatie van data moeten aan- gepast kunnen worden om de subtiele bottlenecks die kunnen ontstaan in multi-core systemen het

Every command has a binary representation and a mnemonic. The binary format is used to send commands  from  the  host  to  a  module  in  direct  mode, 

If this menu item is activated, commands selected from the Commands menu are not sent directly to the drive, but are copied into the current in the “File” or “Macros” tab, where

[r]

We have shown you a taste of M 3 , an extensible and composable model for source code artifacts based on relations and trees, with immutable value semantics, source location