Assembly and static analysis Flashcards

1
Q

Hvad er Assembly?

A

Det er et lavniveau-programmeringssprog, der direkte korresponderer med maskinens instruktioner

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Hvorfor bruger man Assembly når man vil konvertere C++ kode i REM?

A

Det gør man for at analysere koden og for at gøre det mere læseligt for os.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Hvilke instruktioner er der i Assembly?

A
  1. Data movement
  2. Arithmetic
  3. Logical
  4. Control flow
  5. Stack
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Hvad gør “Data movement” instruktionen?

A

Den flytter på dataen fra en lokation til en anden.
Eksempel –> mov

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hvilke kommandoer er der i “Data move” instruktioner?

A
  1. mov: move
  2. ldr: load
  3. str: store
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Hvad gør “Arithmetic” instruktionen?

A

Det udfører matematiske udregner mellem to operands.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Hvilke kommandoer er der i “Arithmetic” instruktioner?

A
  1. Add
  2. Sub
  3. Mul
  4. Div
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Hvad gør “Logical” instruktionen?

A

Den sammenligner to binære værdier for at få et binært tal tilbage ud fra en logical operation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hvilke kommandoer er der i “Logical” instruktioner?

A
  1. And
  2. Or
  3. Xor
  4. Not
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Hvad gør “Control flow” instruktionen?

A

Den bestemmer om vi springer frem eller tilbage i programmet ud fra betingelser.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hvilke kommandoer er der i “Control flow” instruktioner?

A
  1. Jmp
  2. Jnz
  3. Jz
  4. Call
  5. Cmp
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hvad gør “Stack” instruktionen?

A

Det er en hurtig måde at tilføje og hente data til og fra stacken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hvilke kommandoer er der i stack instruktioner?

A
  1. Push
  2. Pop
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Hvad gør “push” instruktionen?

A

Det tilføjer en variabel til stacken og får den til at vokse for at gøre plads til mere.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hvad gør “pop” instruktionen?

A

Det fjerner en variabel fra stacken og formindsker den.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Hvad er en lokal variable?

A

Det er en variabel der er defineret inden for en funktion eller scope.

Den er kun tilgængelig inden for sin egen funktion/scope og eksisterer midlertidigt under eksekvering.

17
Q

Hvad er et argument?

A

Det er en værdi eller et objekt overført til en funktion ved kald.

Bruges som input til funktionen.

18
Q

Hvad kan man bruge for finde ud af om de variabler der er gemt i “stack’en” er lokale variabler eller argumenter?

A

Man kan bruge ebp.

19
Q

Hvordan ser man forskel på en lokal variable og et argument i Assembly kode?

A
20
Q

Hvad er formålet med at kopiere esp til ebp i begyndelsen af et funktionskald i Assembly?

A

Formålet er at, ebp vil pege på, hvor esp var, før vi lavede plads til de lokale variabler.

21
Q

Nævn de 3 forskellige “Function calling conventions”.

A
  1. Cdecl
  2. Stdcall
  3. Fastcall
22
Q

Hvad gør “Cdecl” som er den mest hyppig brugte funktionskald?

A
  1. Argumenter placeres fra højre mod venstre i stakken med push- eller mov-kommandoer.
  2. Return placeres i EAX-registret (ved at bruge PUSH).
  3. Den er ansvarlig for at rydde op i stakken.
23
Q

Hvad gør “Stdcall”?

A
  1. Bruges i Win32API.
  2. Ligesom “cdecl”, men her er funktionen selv ansvarlig for at rydde op i stakken
  3. I x64 fungerer Stdcall mere som Fastcall (bruger 4 registre til argumenter).
24
Q

Hvad gør “Fastcall”?

A

Generelt ligner den “stdcall”, men ecx og edx bruges til at gemme de første 2 argumenter, mens resten er gemt i stakken.

25
Q

Hvad er “Stacken”?

A

Det er en array-agtig datastruktur i hukommelsen som gemmer data midlertidigt fra funktions kald mens programmer eksekveres.

26
Q

Hvad gemmes i “Stacken”?

A
  1. Lokale variabler
  2. Funktions parametre
  3. Retur adresser
  4. Stack frame pointers
  5. Mellemliggende resultater
  6. Gemte registers
27
Q

Hvor starter “Stacken”?

A

The top of the stack.

28
Q

Hvor er den højeste adresse i “Stacken”?

A

The bottom of the stack.

29
Q

Hvor vokser “Stacken” imod?

A

Den laveste adresse.

30
Q

Hvad er en LIFO struktur?

A
  1. Last in first out.
  2. Det betyder at det sidste data bliver den første som bliver fjernet igen.
31
Q

Hvad er [esp], [ebp+8], [ebp-4] ?

A

Positioner.

32
Q

Forklar linje for linje hvad der sker her:
1. mov dword ptr [ebp-4], 3
2. mov eax, dword ptr [ebp-4]
3. mov dword ptr [ebp-8], eax

A
  1. Værdien 3 bliver flyttet til positionen ebp-4
  2. Værdien fra position ebp-4 bliver flyttet til eax register
  3. Værdien fra eax rigister bliver flyttet til position ebp-8
33
Q

Hvad er esp?

A
  1. Extended Stack Pointer.
  2. Der er et register, der peger mod toppen af stakken og holder styr på, hvor nye værdier skubbes eller poppes
34
Q

Hvad er eip?

A
  1. Extended Instruction Pointer.
  2. Det er et register, der indeholder hukommelsesadressen for den næste instruktion, der skal udføres.
35
Q

Hvad er static analysis?

A

?