bevezetés – alapfogalmak – jogizso/rec/ea01.pdf · számítógépes sakk algoritmus...

69
| Bevezetés Alapfogalmak Motivációs példák Jog Bevezetés – Alapfogalmak – Jog Kód visszafejtés. Izsó Tamás 2016. szeptember 8. Izsó Tamás Bevezetés – Alapfogalmak / 1

Upload: others

Post on 28-Dec-2019

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Bevezetés – Alapfogalmak – JogKód visszafejtés.

Izsó Tamás

2016. szeptember 8.

Izsó Tamás Bevezetés – Alapfogalmak / 1

Page 2: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Tartalom

1 Bevezetés

2 Alapfogalmak

3 Motivációs példák

4 Jog

Izsó Tamás Bevezetés – Alapfogalmak / 2

Page 3: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Section 1

Bevezetés

Izsó Tamás Bevezetés – Alapfogalmak / 3

Page 4: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Bemutatkozás

Izsó Tamás

BME Villamosmérnöki és Informatikai KarHálózati Rendszerek és Szolgáltatások Tanszék

honlap: www.hit.bme.hu/∼izsomoodle: https://moodle.hit.bme.hu/email: [email protected]: IB124Tel: 06 1 463 3277

Izsó Tamás Bevezetés – Alapfogalmak / 4

Page 5: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Követelmény

max 4 hiányzás;1 házi feladat;3 kiszh.

Izsó Tamás Bevezetés – Alapfogalmak / 5

Page 6: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Tematikáról

ötödször kerül eloadásra;a tematika tartalma és sorrendje változik;a tanulságok általánosak;a példák rendszerfüggoek;

Intel x86 proc;Windows/XP Windows 8, Windows 10;MS Visual Studio 2008 vagy késobbi verzió;(ha szükséges VMWARE image biztosítva lesz).

Izsó Tamás Bevezetés – Alapfogalmak / 6

Page 7: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Milyen tantárgyakat érint

1 Programozás alapjai I. II.2 Digitális technika3 Számítógép-architektúrák4 Gépi nyelvek5 Operációs rendszerek6 Assembly programozás7 stb.

Csak az elso pont ismeretét követeli meg a tananyag.Vannak átfedések, de ezen részek részletesebben vannakkifejtve.

Izsó Tamás Bevezetés – Alapfogalmak / 7

Page 8: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Milyen tantárgyakat érint

1 Programozás alapjai I. II.2 Digitális technika3 Számítógép-architektúrák4 Gépi nyelvek5 Operációs rendszerek6 Assembly programozás7 stb.

Csak az elso pont ismeretét követeli meg a tananyag.

Vannak átfedések, de ezen részek részletesebben vannakkifejtve.

Izsó Tamás Bevezetés – Alapfogalmak / 7

Page 9: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Milyen tantárgyakat érint

1 Programozás alapjai I. II.2 Digitális technika3 Számítógép-architektúrák4 Gépi nyelvek5 Operációs rendszerek6 Assembly programozás7 stb.

Csak az elso pont ismeretét követeli meg a tananyag.Vannak átfedések, de ezen részek részletesebben vannakkifejtve.

Izsó Tamás Bevezetés – Alapfogalmak / 7

Page 10: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Tantárgy célkituzése

megismerteti a program végrehajtását;megalapozza a programok nyomkövetését (debuggolás);jártasságot ad a gépi kód megértésében (visszafejtését);ismeretet nyújt a programok visszafejtésénekmegnehezítésében;stb.

Izsó Tamás Bevezetés – Alapfogalmak / 8

Page 11: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Ideális hallgató hozzáállása a tantárgyhoz

Érdeklodo;kreatív;logikusan gondolkodik;

Izsó Tamás Bevezetés – Alapfogalmak / 9

Page 12: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Section 2

Alapfogalmak

Izsó Tamás Bevezetés – Alapfogalmak / 10

Page 13: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Alapfogalmak

Definíció: (Reverse engineering)

Azon eljárásokat, amelynek keretében a tárgykódból aszükséges információkat kinyerjük, és értelmezzük reverseengineeringnek nevezzük.

Definíció: (Disassembler)

A gépi kódból assembly utasításokat állít elo.

Definíció: (Decompiler)

A tárgykódból egy visszafordító program segítségévelmagasszintu (például C) forráskódot állít elo

Izsó Tamás Bevezetés – Alapfogalmak / 11

Page 14: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Alapfogalmak

Definíció: (Reverse engineering)

Azon eljárásokat, amelynek keretében a tárgykódból aszükséges információkat kinyerjük, és értelmezzük reverseengineeringnek nevezzük.

Definíció: (Disassembler)

A gépi kódból assembly utasításokat állít elo.

Definíció: (Decompiler)

A tárgykódból egy visszafordító program segítségévelmagasszintu (például C) forráskódot állít elo

Izsó Tamás Bevezetés – Alapfogalmak / 11

Page 15: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Alapfogalmak

Definíció: (Reverse engineering)

Azon eljárásokat, amelynek keretében a tárgykódból aszükséges információkat kinyerjük, és értelmezzük reverseengineeringnek nevezzük.

Definíció: (Disassembler)

A gépi kódból assembly utasításokat állít elo.

Definíció: (Decompiler)

A tárgykódból egy visszafordító program segítségévelmagasszintu (például C) forráskódot állít elo

Izsó Tamás Bevezetés – Alapfogalmak / 11

Page 16: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Forward engineering

IDE

Forrás kód

Assembly nyelv

Object kód

Gépi kód

Process

IDE

Fordító program

Assembler

Linker

Loader

Editor IDE integráltfunkcio

fordítás

Assemble

Link

Végrehajtás

Decompile

Disassemble

Object kód visszafordítás

Exec kód visszafordítás

Izsó Tamás Bevezetés – Alapfogalmak / 12

Page 17: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Reverse engineering

IDE

Forrás kód

Assembly nyelv

Object kód

Gépi kód

Process

IDE

Fordító program

Assembler

Linker

Loader

Editor IDE integráltfunkcio

fordítás

Assemble

Link

Végrehajtás

Decompile

Disassemble

Object kód visszafordítás

Exec kód visszafordítás

Izsó Tamás Bevezetés – Alapfogalmak / 12

Page 18: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Elso "hacker"

Izsó Tamás Bevezetés – Alapfogalmak / 13

Page 19: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Ken Thompson

Fobb munkássága:B Programming Language (Késobb Dennis Ritchie ezalapján készítette a C-t)UNIXPlan 9reguláris kifejezések elterjesztéseSzámítógépes sakk algoritmus (végjáték)Rob Pike-vel UTF-8 kódolás (változó hosszúságú)

1983: Turing Award (Dennis Ritchie-vel) a UNIX operációsrendszerért1999: US National Medal of Technology1999: First IEEE Tsutomu Kanai Award

Izsó Tamás Bevezetés – Alapfogalmak / 14

Page 20: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Analógia

char*f="char*f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){printf(f,34,f,34,10);}

Output:

char∗f="char∗f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){ printf ( f ,34, f ,34,10);}

Izsó Tamás Bevezetés – Alapfogalmak / 15

Page 21: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Analógia

char*f="char*f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){printf(f,34,f,34,10);}

Output:

char∗f=

"char∗f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){ printf ( f ,34, f ,34,10);}

Izsó Tamás Bevezetés – Alapfogalmak / 15

Page 22: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Analógia

char*f="char*f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){printf(f,34,f,34,10);}

Output:

char∗f="

char∗f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){ printf ( f ,34, f ,34,10);}

Izsó Tamás Bevezetés – Alapfogalmak / 15

Page 23: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Analógia

char*f="char*f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){printf(f,34,f,34,10);}

Output:

char∗f="char∗f=%c%s%c;main() {printf(f,34,f,34,10);}%c

";main(){ printf ( f ,34, f ,34,10);}

Izsó Tamás Bevezetés – Alapfogalmak / 15

Page 24: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Analógia

char*f="char*f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){printf(f,34,f,34,10);}

Output:

char∗f="char∗f=%c%s%c;main() {printf(f,34,f,34,10);}%c"

;main(){ printf ( f ,34, f ,34,10);}

Izsó Tamás Bevezetés – Alapfogalmak / 15

Page 25: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Analógia

char*f="char*f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){printf(f,34,f,34,10);}

Output:

char∗f="char∗f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){ printf ( f ,34, f ,34,10);}

Izsó Tamás Bevezetés – Alapfogalmak / 15

Page 26: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Analógia

char*f="char*f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){printf(f,34,f,34,10);}

Output:

char∗f="char∗f=%c%s%c;main() {printf(f,34,f,34,10);}%c";main(){ printf ( f ,34, f ,34,10);}

Izsó Tamás Bevezetés – Alapfogalmak / 15

Page 27: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

C fordító

A C (cc, gcc, cl) fordítót C-ben írták.Speciális karaktereket csak úgynevezett escape sequencesegítségével írhatunk le. Például ’\ n’, ’\\’ .

c = next ( ) ;i f ( c != ’ \ \ ’ )

return c ;c = next ( ) ;i f ( c == ’ \ \ ’ )

return ’ \ \ ’ ;i f ( c == ’ n ’ )

return ’ \ n ’. . .

Izsó Tamás Bevezetés – Alapfogalmak / 16

Page 28: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

C fordító

Adjunk hozzá új escape sequence-t.A C (cc, gcc, cl) fordítót C-ben írták.A ’\ v’-t még nem ismeri a régi verziójú fordító, ezértfordítása hiba lesz.

c = next ( ) ;i f ( c != ’ \ \ ’ )

return c ;c = next ( ) ;i f ( c == ’ \ \ ’ )

return ’ \ \ ’ ;i f ( c == ’ n ’ )

return ’ \ n ’. . .i f ( c == ’ v ’ )

return ’ \ v ’ / / h iba

Izsó Tamás Bevezetés – Alapfogalmak / 17

Page 29: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

C fordító

Adjunk hozzá új escape sequence-t.A C (cc, gcc, cl) fordítót C-ben írták.A ’\ v’-t még nem ismeri a régi verziójú fordító, ezértfordítása hiba lesz.

c = next ( ) ;i f ( c != ’ \ \ ’ )

return c ;c = next ( ) ;i f ( c == ’ \ \ ’ )

return ’ \ \ ’ ;i f ( c == ’ n ’ )

return ’ \ n ’. . .i f ( c == ’ v ’ )

return 11; / / j o

Izsó Tamás Bevezetés – Alapfogalmak / 18

Page 30: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Fordító muködése

’cc’’a.c’ ’a’

futtatható fordítóforráskód végrehajtható kód

Izsó Tamás Bevezetés – Alapfogalmak / 19

Page 31: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Fordító muködése saját forrására

’cc’get(s);compile(s);

’cc’

futtatható fordító’cc.c’ fordító forráskód végrehajtható kód

Izsó Tamás Bevezetés – Alapfogalmak / 20

Page 32: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Trójai login

’cc’get(s);compile(s);if(s == ’login’)

emit(login-backdoor);

futtatható fordítótrójai login-es cc

forráskód

trójai login-es’cc’’login.c’ ’trójai-login’

login forráskód végrehajtható kód

Izsó Tamás Bevezetés – Alapfogalmak / 21

Page 33: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Trójai fordító

’cc’

get(s);compile(s);if(s == ’login’)

emit(login-backdoor);if(s == ’cc’)

emit(cc-backdoor);

futtatható fordító

trójai-ccforráskód

’trójai-cc’

’login.c’

’cc.c’

’trójai-login’

’trójai-cc’

login forráskód végrehajtható kód

fordító forráskód végrehajtható kód

Izsó Tamás Bevezetés – Alapfogalmak / 22

Page 34: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Trójai fordító

’cc’

get(s);compile(s);if(s == ’login’)

emit(login-backdoor);if(s == ’cc’)

emit(cc-backdoor);

futtatható fordító

trójai-ccforráskód

’trójai-cc’

’login.c’

’cc.c’

’trójai-login’

’trójai-cc’

login forráskód végrehajtható kód

fordító forráskód végrehajtható kód

Izsó Tamás Bevezetés – Alapfogalmak / 22

Page 35: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Miért érdemes a kódot visszafejteni?

Programok közötti együttmuködés biztosítása (nemkészítettek jól dokumentált interface-t),létezo, esetleg régen írt programrendszerbe fejlesztés,hiányos, vagy hiányzó dokumentáció,programanalízis (pl. a kód hatékonyságára),biztonsági ellenorzések,víruskeresés,algoritmus megismerés esetén.

Izsó Tamás Bevezetés – Alapfogalmak / 23

Page 36: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

És még mikor?

Katonai vagy kormányzati célú dobozos (CommercialOff-the-shelf) software-k felhasználása,inline assembly kódot tartalmazó C programban,különbözo programozási nyelvben írt programok,programhoz linkelt könyvtárak hibában játszott szerepe,párhuzamos programozást (thread, openmp) használóprogramok,hibás fordító ellenorzése,alacsony szintu hibák, például puffer túlcsordulássebezhetoségének a megállapítása esetén.

Izsó Tamás Bevezetés – Alapfogalmak / 24

Page 37: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Bináris programanalízis

Definíció: (Programanalízis)

Az a folyamat, amikor automatikusan a program viselkedésébola program tulajdonságaira következtetünk.

Dinamikus analízis

Kiválasztott inputokra futtat-juk a programot, és a prog-ram konkrét futásából követ-keztetünk a tulajdonságára.Hátrány, hogy nem biztos,hogy minden ágat bejárunk.

Statikus analízis

Futtatás nélkül, matemati-kai módszerekkel következ-tetünk a program tulajdonsá-gára. A statikus analízis kon-zervatív, azaz amit meg tu-dunk állapítani, az mindeninput esetén igaz. Bizonyosdolgokra azonban így nemtudunk következtetni.

Izsó Tamás Bevezetés – Alapfogalmak / 25

Page 38: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Technikák

Dinamikus analízis

software tesztelés,teljesítmény analízis,program nyomkövetés,programinstrumentáció,dinamikus programszeletelés.

Statikus analízis

adatfolyam analízis,vezérlésfolyam analízis,programhelyességbizonyítás,absztrakt interpretáció,szimbolikusvégrehajtás,statikus programszeletelés.

Izsó Tamás Bevezetés – Alapfogalmak / 26

Page 39: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Section 3

Motivációs példák

Izsó Tamás Bevezetés – Alapfogalmak / 27

Page 40: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

WYSINWYX

What You See Is Not What You eXecute1

1Gogul Balakrishnan doktori értekezésének a címe.Izsó Tamás Bevezetés – Alapfogalmak / 28

Page 41: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Kivételkezelo beláncolása

39 int main()40 {41

42 // Stack-be felépítjük a láncolást43 __asm44 {45 sub ESP, 846 mov dword ptr pRegister,ESP47 mov EAX,FS:[0]48 mov dword ptr prev,EAX49 }50

51 pRegister->handler = my_except_handler;52 pRegister->prev = prev;53

54 // TIB-be regisztráljuk a hibakezelonket55 __asm56 {57 mov EAX, dword ptr pRegister58 mov FS:[0],EAX

Izsó Tamás Bevezetés – Alapfogalmak / 29

Page 42: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Optimalizáció hatása

1 #include <stdio.h>2 #include <string.h>3

4 #define ZeroMemory(Destination,Length) \5 memset((Destination),0,(Length))6

7 void DatabaseConnect(char *szDB) {8 char szPwd[64];9 if (GetPasswordFromUser(szPwd,sizeof(szPwd))) {

10 if (ConnectToDatabase(szDB, szPwd)) {11 // Cool, we’re connected12 // Now do database stuff13 }14 }15 ZeroMemory(szPwd,sizeof(szPwd));16 }

A memória törlésével a password élettartamát szerették volnalerövidíteni, különben a program elszállásnál a dump file-ból ki lehetolvasni az értékét.

Izsó Tamás Bevezetés – Alapfogalmak / 30

Page 43: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

A lefordított program

> cl /Ox /c /Gs- passwordlivetime.c> dumpbin /disasm passwordlivetime.obj

DatabaseConnect :sub esp ,40hlea eax , [ esp ]push 40hpush eaxc a l l _GetPasswordFromUseradd esp ,8test eax , eaxje 00000026mov edx , dword ptr [ esp+44h ]lea ecx , [ esp ]push ecxpush edxc a l l _ConnectToDatabaseadd esp ,8add esp ,40hre t

memset hívást kioptimalizálta a program!Izsó Tamás Bevezetés – Alapfogalmak / 31

Page 44: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Nem egyértelmu kifejezés

1 #include <stdio.h>2 int main() {3 int i=2;4 printf("%d %d ", ++i, ++i );5 return 0;6 }

> cl /Ox /c /GS- wrongexpr.c> dumpbin /disasm wrongexp.obj

_main :push 4push 4push of fset $SG2502c a l l _ p r i n t fadd esp ,0Chxor eax , eaxre t

Izsó Tamás Bevezetés – Alapfogalmak / 32

Page 45: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Bináris muvelet operandusainak a kiegyenlítése

1 #include <stdio.h>2

3 int main() {4 int a = -5;5 if (a < sizeof (int))6 printf(" %d < %d\n", a, sizeof(int) );7 else8 printf(" %d >= %d\n", a, sizeof(int) );9 return 0;

10 }

> cl /Ob2 /c /GS- conv.c

Izsó Tamás Bevezetés – Alapfogalmak / 33

Page 46: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Bináris muvelet operandusainak a kiegyenlítése> dumpbin /disasm conv.obj

_main :push ebpmov ebp , esppush ecxmov dword ptr [ ebp−4] ,0FFFFFFFBhcmp dword ptr [ ebp−4] ,4jae 00000026 ; e l o j e l n é l k ü l i szám eseténpush 4mov eax , dword ptr [ ebp−4]push eaxpush of fset $SG2459c a l l _ p r i n t fadd esp ,0Chjmp 00000039push 4mov ecx , dword ptr [ ebp−4]push ecxpush of fset $SG2462c a l l _ p r i n t fadd esp ,0Chxor eax , eaxmov esp , ebppop ebpre t

Izsó Tamás Bevezetés – Alapfogalmak / 34

Page 47: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Biztonságos-e az algoritmus?

21 int authenticate(char *username, char *password) {22 int authenticated;23 char buffer[1024];24 authenticated = verify_password(username, password);25 if(authenticated == 0) {26 sprintf(buffer,27 "password is incorrect for user %s\n",28 username);29 log("%s", buffer);30 }31 return authenticated;32 }

> echo tomi csillag | authenticate.exe> echo tomi alma | authenticate.exe> a.exe 992 A | authenticate.exe> a.exe 993 A | authenticate.exe> a.exe 997 A 4 B -a 77136cf0 -n 1 -f shellcode.bin

↪→ 10 X | authenticate.exe

Izsó Tamás Bevezetés – Alapfogalmak / 35

Page 48: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Section 4

Jog

Izsó Tamás Bevezetés – Alapfogalmak / 36

Page 49: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Izsó Tamás Bevezetés – Alapfogalmak / 37

Page 50: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Jog és fejlodés

Információhoz való jog

Habár én is kötve érzem magam ahhoz, hogy mindenembernek biztosítsuk szerzoi jogainak élvezetét, a tu-dományok fejlodése elé senki sem gördíthet akadályo-kat.

Lord Ellenborough

Izsó Tamás Bevezetés – Alapfogalmak / 37

Page 51: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Forrás

Dudás Ágnes "A szoftver szerzoi jogi védelme 1."http://www.sztnh.gov.hu/hu/kiadv/ipsz/200504/01-dudas-agnes.html

Dudás Ágnes "A szoftver szerzoi jogi védelme 2."http://www.sztnh.gov.hu/hu/kiadv/ipsz/200506/01-dudas-agnes.html

Mezei Péter "Mitol fair a fair? Szerzoi muvek felhasználásaa Fair-Use teszt fényében" http://www.sztnh.gov.hu/kiadv/ipsz/200812-pdf/02-mezei.pdf

Izsó Tamás Bevezetés – Alapfogalmak / 38

Page 52: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Mi is az a szoftver

Izsó Tamás Bevezetés – Alapfogalmak / 39

Page 53: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Szoftver kategorizálása funkciójuk alapján

operációs rendszerek;eszközmeghajtó programok;információt közlo;információt feldolgozó;tudományos számítás végzo;szórakoztató;stb.

Izsó Tamás Bevezetés – Alapfogalmak / 40

Page 54: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Szakirodalomban definiálva

A szoftver a hardverre épített inteligencia.A szoftver magja, az operációs rendszer azoknak a vezérloprogramoknak a gyujteménye, amelyek a gép folyamatosüzemeltetését biztosító alaptevékenységeket látják el.A szoftver a számítógépi programok, eljárások, szabályokés az ezekre vonatkozó dokumentáció összessége. Olyanszellemi termék, mely a hardvert muködteti.A rendszer minden olyan komponense, amely nem tartozika hardverhez.

Izsó Tamás Bevezetés – Alapfogalmak / 41

Page 55: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Szoftver részei jogi szemmel

1 Számítógép program, azaz: olyan parancsok (utasítások)sorozatát, amelyet egy gépi olvasásra alkalmas hordozóraátvéve elérhetjük, hogy egy - információ feldolgozásraképes- gép meghatározott muveletet, feladatot, eredménytjelezzen, kivitelezzen vagy végrehajtson (elérésre bírjon).

2 Programozói dokumentáció: ez egy eljárás átfogóismertetése (szóban, sematikusan vagy egyéb módon)elegendo részletességgel ahhoz, hogy egy meghatározottszámítógépi programot alkotó utasítássorozatotlétrehozzunk.

3 Kiegészíto leírások: mindazon dokumentáció, amely aprogram megértését és alkalmazását segíti.(Értelemszeruen nem tartozik ide a program maga, semannak leírása.)

Izsó Tamás Bevezetés – Alapfogalmak / 42

Page 56: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Varró Dániel – Email

Hát el vagyok egészen andalodva,és gyönge szívem, ímé, reszketeg,mióta éjjelente, hajnalontaveled titokban ímélezgetek.

void s o r t ( char ∗array , s i z e _ t s ize , i n t (∗cmp ) ( void ∗ , void ∗ ) , i n t begin , i n t end ) {i f ( end > begin ) {

void ∗ p i v o t = ar ray + begin ;i n t l = begin + s ize ;i n t r = end ;while ( l < r ) {

i f (cmp( ar ray+ l , p i v o t ) <= 0) {l += s ize ;

} else {r −= s ize ;swap ( ar ray+ l , a r ray+r , s i ze ) ;

}}l −= s ize ;swap ( ar ray+begin , a r ray+ l , s i ze ) ;s o r t ( array , s ize , cmp, begin , l ) ;s o r t ( array , s ize , cmp, r , end ) ;

}}

Izsó Tamás Bevezetés – Alapfogalmak / 43

Page 57: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Irodalmi mu és a szoftver

BUE (1886) az irodalmi, muvészeti, és tudományos muvekvédelmérol szóló Berni Egyezmény

TRIPS-egyezmény (1994) a számítógépi programok, mindegy,hogy forráskódban vagy gépi kódban kerülnekkifejezésre, a Berni Egyezmény alapján irodalmimuként élveznek védelmet.

Izsó Tamás Bevezetés – Alapfogalmak / 44

Page 58: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Nem esik szerzoi jog alá

ötlet;elv;elgondolás;eljárás;muködési módszerek;matematikai módszerek;interface-k;

Izsó Tamás Bevezetés – Alapfogalmak / 45

Page 59: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

A számítógépes program kidolgozásának a részei

1 Az elektronikus számítógépi kezelésre alkalmas feladatfeltárása.

2 A feladatnak az elektronikus számítógép által megköveteltkorrektséggel történo megfogalmazása (ún. szakmaimodell készítése).

3 A feladat számítástechnikai (matematikai) modelljének amegkonstruálása.

4 A számítási algoritmus elkészítése (a gépi eljáráskidolgozása).

5 Az algoritmus alapján a számítási program elkészítése(valamely gépre orientáltan).

6 A számítási programhoz szükséges adatok biztosítása.7 A gépi számítások elvégzése.8 A számítás eredményeinek ellenorzése

Izsó Tamás Bevezetés – Alapfogalmak / 46

Page 60: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

A számítógépes program részei

1-4 együttesen szellemi alkotás2,3,4 önmagában szellemi alkotás

Izsó Tamás Bevezetés – Alapfogalmak / 47

Page 61: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Szoftver és a zene jogi szabályozása

Mind a két esetben az értelemzéshez speciális közegre vanszükség.

átdolgozás joga a szerzoé;részek felhasználását a szerzo szabályozhatja;a felhasználó kötelezheti a szerzot a muve használhatóvátételére;ha erre a szerzo nem hajlandó akkor a felhasználó másúton megoldhatja a szoftver szükséges módosítását.

Izsó Tamás Bevezetés – Alapfogalmak / 48

Page 62: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Információ szabadsága avagy a fair use teszt

1 a használat céljakereskedelminonprofit oktatási célú;

2 mu természete – van-e minimális muvészeti, eszmeiértéke ;

3 a felhasznált résznek a mértéke és lényegessége;4 a felhasznált mu potenciális piacára vagy értékére kifejtett

hatása.

Izsó Tamás Bevezetés – Alapfogalmak / 49

Page 63: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Accolade vs Sega

Sega Genesis játékkonzol (hardware);Accolade játékok a konzolra (software);Sega trademark security system, TMSS, a távol-keletihamisítások megfékezésére;Accolade programja az újabb vason nem fut, ezért aTMSS-t visszafejtették;Sega bírósági pert kezdeményez;Accolade védekezése:

Sega programok visszafejtése nem tekinthetojogellenesnek;fair use teszt.

Izsó Tamás Bevezetés – Alapfogalmak / 50

Page 64: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Kereskedelmi szoftverek

célja a haszonszerzés;vásárlónak be kell tartani a licenc szerzodést;maximum 1 biztonsági másolatot készítheto;a program megrendelojének joga van a forráskódbabeletekinteni, de ez nem gyakorlat (megrendelt sw.szavatossági problémák miatt) ;lehetséges részek visszafejtése saját programegyütmuködése érdekében.

Izsó Tamás Bevezetés – Alapfogalmak / 51

Page 65: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Speciális licenszelésu kategoriák kialakulása

1 amerikai kormány által finanszírozott szoftverfejlesztések(Public Domain);

2 programozó idealizmusa – majd felfigyelnek rám;3 segédprogramok – ingyenes elérhetoségével a

párhuzamos fejlesztéseket megsporolhatók;4 reklám;5 Berni Egyezmény elotti programok nem védettek.

Izsó Tamás Bevezetés – Alapfogalmak / 52

Page 66: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Kategóriák

Freeware Kereskedelmi cég ingyenes szoftvere bocsájt ki acég népszerubbé tétele érdekében (AcrobatReader).

Postcardware Ez is freeware, de itt egy levelezolapot, vagyegyebet illik a szerzonek küldeni. (népszeruségmérése, Guinness rekord felállítás)

Shareware Próbáld ki vásárlás elott. A programban beépítettkorlátozások vannak.

Trialware Majdnem olyan mint a shareware, de valamilyenprogram vásárlása után adják, és szabadon nemterjesztheto.

Limited edition Legjobb részek ki vannak szedve. Általábancsak azokat hagyják benne, amelyre létezikingyenes alternatív megoldás.

Izsó Tamás Bevezetés – Alapfogalmak / 53

Page 67: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Kategóriák

Patcware Ingyenes javítások a már megvásároltprogramhoz.

Ad-powered Ingyen jut hozzá a felhasználó, de utána nézheti asok reklámot.

Thankyouware Honlap látogatása fejében adnak egyprogramot.

Abandonware Régi programok, játékok ajándékba.

Izsó Tamás Bevezetés – Alapfogalmak / 54

Page 68: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Free software

1 bármilyen céllal futtatható;2 forráskód rendelkezésre áll;3 másolható;4 program tökéletesítése, módosítása az egész közösség

javát szolgálja.

Izsó Tamás Bevezetés – Alapfogalmak / 55

Page 69: Bevezetés – Alapfogalmak – Jogizso/rec/ea01.pdf · Számítógépes sakk algoritmus (végjáték) Rob Pike-vel UTF-8 kódolás (változó hosszúságú) 1983: Turing Award (Dennis

| Bevezetés Alapfogalmak Motivációs példák Jog

Free software licenc

BSD licencek;Mozilla licencek (bizonyos részeket kereskedelmiszoftverbe is be lehet építeni);Artistic licencek korlátozza az átdolgozás jogát (perl).

Izsó Tamás Bevezetés – Alapfogalmak / 56