Bevezetés Alapfogalmak Jog

Hasonló dokumentumok
Bevezetés Alapfogalmak Jog

Stack Vezérlés szerkezet Adat 2.

Miért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?

Biztonságos programozás Puffer túlcsordulásos támadások

PE/COFF fájl formátum

Számítógép Architektúrák

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Introduction to 8086 Assembly

Assembly Rekurzív függvények, EXE, C programok. Iványi Péter

Intel x86 utasításkészlet + disassembler működése

Információs Technológia

Biztonságos programozás Puffer túlcsordulásos támadások

Biztonságos programozás Alapfogalmak

Programozás 5. Dr. Iványi Péter

INFORMATIKAI ALAPISMERETEK

Matematikai alapok. Dr. Iványi Péter

C programozás. 1 óra Bevezetés

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

S z á m í t ó g é p e s a l a p i s m e r e t e k

Mi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása

Intel x86 utasításkészlet

C programnyelv 1. Kedves Kollegina, Kolléga!

Számítógépes alapismeretek

Operációs rendszerek. A Windows NT felépítése

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

Ismeretanyag Záróvizsgára való felkészüléshez

Informatika Rendszerek Alapjai

1. Az utasítás beolvasása a processzorba

Programok működése dióhéjban

Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

HARDVERKÖZELI PROGRAMOZÁS1

Digitális technika VIMIAA01

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

INFORMATIKAI ALAPISMERETEK

Elôszó a magyar kiadáshoz A Kiadó Elôszó

Operációsrendszerek. 2. elıadás. Standard ismeretek II.

Számítógépes grafika

Operációs rendszerek MINB240 V2+2+0

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Információs Technológia

Programozás 3. Dr. Iványi Péter

8. osztály. Felhasznált tankönyv: Pedellus Tankönyvkiadó, Debrecen, 2009; 2009

Számítógépes adatbiztonság

Operációs rendszerek MINB240 V kredit KF Nagyváradi Anett 0. előadás Bevezetés

Széchenyi István Szakképző Iskola

Excel vagy Given-When-Then? Vagy mindkettő?

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Karunkról Kari digitális könyvtár

Egyszerű RISC CPU tervezése

PROGRAMOZÁS ALAPJAI (ANSI C NYELVEN)

VirtualBox, Debian telepítés

S z á m í t ó g é p e s a l a p i s m e r e t e k


UNIX folyamatok kommunikációja

Országzászlók (2015. május 27., Sz14)

Programozás C++ -ban 2007/4

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Programozás I gyakorlat. 5. Struktúrák

4. Gyakorlat: Csoportházirend beállítások

117. AA Megoldó Alfréd AA 117.

Assembly. Iványi Péter

Programozás II. Fájlkezelés

Az Informatika Elméleti Alapjai

Assembly Utasítások, programok. Iványi Péter

C vagy C++? Programozási Nyelvek és Fordítóprogramok Tanszék. Pataki Norbert. Programozási Nyelvek I.

Objektumorientált programozás C# nyelven

Bevezetés a C++ programozási nyelvbe

INFORMATIKAI ALAPISMERETEK

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Számítógépek felépítése, alapfogalmak

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

15. Programok fordítása és végrehajtása

Az időhöz kötődő parancsok

R15 R40 kapcsolat megteremtése CTCA n keresztül, avagy nosztalgikus visszaemlékezés egy projectre

Adatbázis-kezelés ODBC driverrel

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Osztály és objektum fogalma

Adatbázisok I A relációs algebra

Assembly Címzési módok. Iványi Péter

Ez a programrendszer (beleértve a forráskódokat is) nem üzleti célból való használat esetén teljesen ingyenes. Ebből két fontos dolog következik:


3. Gyakorlat Ismerkedés a Java nyelvvel

Alprogramok, paraméterátadás


DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

Információs technológiák 4. Ea: A lélek. A csak szidható kézzelfoghatatlan

Digitális rendszerek. Utasításarchitektúra szintje



A projekt keretében elkészült tananyagok:

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

Intelligens Érzékelők

A sed folyamszerkesztő

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Bevezetés a C++ programozásba

Átírás:

Bevezetés Alapfogalmak Jog Kód visszafejtés. Izsó Tamás 2015. szeptember 18. Izsó Tamás Bevezetés Alapfogalmak / 1

Tartalom 1 Bevezetés 2 Alapfogalmak 3 Motivációs példák 4 Jog Izsó Tamás Bevezetés Alapfogalmak / 2

Section 1 Bevezetés Izsó Tamás Bevezetés Alapfogalmak / 3

Bemutatkozás Izsó Tamás BME Villamosmérnöki és Informatikai Kar Hálózati Rendszerek és Szolgáltatások Tanszék honlap: www.hit.bme.hu/ izso email: izso@hit.bme.hu szoba: IB124 Tel: 06 1 463 3277 Izsó Tamás Bevezetés Alapfogalmak / 4

Követelmény max 4 hiányzás; 1 házi feladat; 3 kiszh. Izsó Tamás Bevezetés Alapfogalmak / 5

Tematikáról negyedszer kerül előadásra; a tematika tartalma és sorrendje változik; a tanulságok általánosak; a példák rendszerfüggőek; Intel x86 proc; Windows/XP ; MS Visual Studio 2008; (ha szükséges VMWARE image biztosítva lesz). Izsó Tamás Bevezetés Alapfogalmak / 6

Milyen tantárgyakat érint 1 Programozás alapjai I. II. 2 Digitális technika 3 Számítógép-architektúrák 4 Gépi nyelvek 5 Operációs rendszerek 6 Assembly programozás 7 stb. Izsó Tamás Bevezetés Alapfogalmak / 7

Milyen tantárgyakat érint 1 Programozás alapjai I. II. 2 Digitális technika 3 Számítógép-architektúrák 4 Gépi nyelvek 5 Operációs rendszerek 6 Assembly programozás 7 stb. Csak az első pont ismeretét követeli meg a tananyag. Izsó Tamás Bevezetés Alapfogalmak / 7

Milyen tantárgyakat érint 1 Programozás alapjai I. II. 2 Digitális technika 3 Számítógép-architektúrák 4 Gépi nyelvek 5 Operációs rendszerek 6 Assembly programozás 7 stb. Csak az első pont ismeretét követeli meg a tananyag. Vannak átfedések, de ezen részek részletesebben vannak kifejtve. Izsó Tamás Bevezetés Alapfogalmak / 7

Tantárgy célkitűzé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ének megnehezítésében; stb. Izsó Tamás Bevezetés Alapfogalmak / 8

Ideális hallgató hozzáállása a tantárgyhoz Érdeklődő; kreatív; logikusan gondolkodik; Izsó Tamás Bevezetés Alapfogalmak / 9

Section 2 Alapfogalmak Izsó Tamás Bevezetés Alapfogalmak / 10

Alapfogalmak Definíció: (Reverse engineering) Azon eljárásokat, amelynek keretében a tárgykódból a szükséges információkat kinyerjük, és értelmezzük reverse engineeringnek nevezzük. Izsó Tamás Bevezetés Alapfogalmak / 11

Alapfogalmak Definíció: (Reverse engineering) Azon eljárásokat, amelynek keretében a tárgykódból a szükséges információkat kinyerjük, és értelmezzük reverse engineeringnek nevezzük. Definíció: (Disassembler) A gépi kódból assembly utasításokat állít elő. Izsó Tamás Bevezetés Alapfogalmak / 11

Alapfogalmak Definíció: (Reverse engineering) Azon eljárásokat, amelynek keretében a tárgykódból a szükséges információkat kinyerjük, és értelmezzük reverse engineeringnek nevezzük. Definíció: (Disassembler) A gépi kódból assembly utasításokat állít elő. Definíció: (Decompiler) A tárgykódból egy visszafordító program segítségével magasszintű (például C) forráskódot állít elő Izsó Tamás Bevezetés Alapfogalmak / 11

Forward engineering IDE Editor IDE integrált funkcio IDE Forrás kód fordítás Fordító program Assembly nyelv Assemble Assembler Object kód Link Linker Gépi kód Végrehajtás Loader Process Izsó Tamás Bevezetés Alapfogalmak / 12

Reverse engineering IDE Editor IDE integrált funkcio IDE Forrás kód fordítás Fordító program Object kód visszafordítás Assembly nyelv Assemble Decompile Assembler Disassemble Exec kód visszafordítás Object kód Link Linker Gépi kód Végrehajtás Loader Process Izsó Tamás Bevezetés Alapfogalmak / 12

Első "hacker" Izsó Tamás Bevezetés Alapfogalmak / 13

Ken Thompson Főbb munkássága: B Programming Language (Később Dennis Ritchie ez alapján készítette a C-t) UNIX Plan 9 reguláris kifejezések elterjesztése 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 Ritchie-vel) a UNIX operációs rendszerért 1999: US National Medal of Technology 1999: First IEEE Tsutomu Kanai Award Izsó Tamás Bevezetés Alapfogalmak / 14

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: Izsó Tamás Bevezetés Alapfogalmak / 15

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= Izsó Tamás Bevezetés Alapfogalmak / 15

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=" Izsó Tamás Bevezetés Alapfogalmak / 15

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 Izsó Tamás Bevezetés Alapfogalmak / 15

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" Izsó Tamás Bevezetés Alapfogalmak / 15

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

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

C fordító A C (cc, gcc, cl) fordítót C-ben írták. Speciális karaktereket csak úgynevezett escape sequence segí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

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ért fordí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 / / hiba Izsó Tamás Bevezetés Alapfogalmak / 17

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ért fordí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

Fordító működése forráskód futtatható fordító végrehajtható kód a.c cc a Izsó Tamás Bevezetés Alapfogalmak / 19

Fordító működése saját forrására cc.c fordító forráskód futtatható fordító végrehajtható kód get(s); compile(s); cc cc Izsó Tamás Bevezetés Alapfogalmak / 20

Trójai login trójai login-es cc forráskód get(s); compile(s); if(s == login ) emit(login-backdoor); futtatható fordító cc login forráskód végrehajtható kód login.c trójai login-es cc trójai-login Izsó Tamás Bevezetés Alapfogalmak / 21

trójai-cc forráskód get(s); compile(s); if(s == login ) emit(login-backdoor); if(s == cc ) emit(cc-backdoor); Trójai fordító futtatható fordító cc login forráskód végrehajtható kód login.c trójai-login trójai-cc cc.c trójai-cc fordító forráskód végrehajtható kód Izsó Tamás Bevezetés Alapfogalmak / 22

trójai-cc forráskód get(s); compile(s); if(s == login ) emit(login-backdoor); if(s == cc ) emit(cc-backdoor); Trójai fordító futtatható fordító cc login forráskód végrehajtható kód login.c trójai-login trójai-cc cc.c trójai-cc fordító forráskód végrehajtható kód Izsó Tamás Bevezetés Alapfogalmak / 22

Miért érdemes a kódot visszafejteni? Programok közötti együttműködés biztosítása (nem készítettek jól dokumentált interface-t), létező, 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 ellenőrzések, víruskeresés, algoritmus megismerés esetén. Izsó Tamás Bevezetés Alapfogalmak / 23

És még mikor? Katonai vagy kormányzati célú dobozos (Commercial Off-the-shelf) software-k felhasználása, inline assembly kódot tartalmazó C programban, különböző 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ó ellenőrzése, alacsony szintű hibák, például puffer túlcsordulás sebezhetőségének a megállapítása esetén. Izsó Tamás Bevezetés Alapfogalmak / 24

Bináris programanalízis Definíció: (Programanalízis) Az a folyamat, amikor automatikusan a program viselkedéséből a program tulajdonságaira következtetünk. Dinamikus analízis Statikus analízis Kiválasztott inputokra futtatjuk a programot, és a program konkrét futásából következtetünk a tulajdonságára. Hátrány, hogy nem biztos, hogy minden ágat bejárunk. Futtatás nélkül, matematikai módszerekkel következtetünk a program tulajdonságára. A statikus analízis konzervatív, azaz amit meg tudunk állapítani, az minden input esetén igaz. Bizonyos dolgokra azonban így nem tudunk következtetni. Izsó Tamás Bevezetés Alapfogalmak / 25

Technikák Dinamikus analízis Statikus analízis software tesztelés, teljesítmény analízis, program nyomkövetés, program instrumentáció, dinamikus program szeletelés. adatfolyam analízis, vezérlésfolyam analízis, programhelyesség bizonyítás, absztrakt interpretáció, szimbolikus végrehajtás, statikus program szeletelés. Izsó Tamás Bevezetés Alapfogalmak / 26

Section 3 Motivációs példák Izsó Tamás Bevezetés Alapfogalmak / 27

WYSINWYX What You See Is Not What You execute 1 1 Gogul Balakrishnan doktori értekezésének a címe. Izsó Tamás Bevezetés Alapfogalmak / 28

Kivételkezelő beláncolása 39 int main() 40 { 41 42 // Stack-be felépítjük a láncolást 43 asm 44 { 45 sub ESP, 8 46 mov dword ptr pregister,esp 47 mov EAX,FS:[0] 48 mov dword ptr prev,eax 49 } 50 51 pregister->handler = my_except_handler; 52 pregister->prev = prev; 53 54 // TIB-be regisztráljuk a hibakezelőnket 55 asm 56 { 57 mov EAX, dword ptr pregister 58 mov FS:[0],EAX Izsó Tamás Bevezetés Alapfogalmak / 29

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 connected 12 // Now do database stuff 13 } 14 } 15 ZeroMemory(szPwd,sizeof(szPwd)); 16 } A memória törlésével a password élettartamát szerették volna lerövidíteni, különben a program elszállásnál a dump file-ból ki lehet olvasni az értékét. Izsó Tamás Bevezetés Alapfogalmak / 30

A lefordított program > cl /Ox /c /Gs- passwordlivetime.c > dumpbin /disasm passwordlivetime.obj DatabaseConnect : sub esp,40h lea eax, [ esp ] push 40h push eax c a l l _GetPasswordFromUser add esp,8 test eax, eax je 00000026 mov edx, dword ptr [ esp+44h ] lea ecx, [ esp ] push ecx push edx c a l l _ConnectToDatabase add esp,8 add esp,40h r e t memset hívást kioptimalizálta a program! Izsó Tamás Bevezetés Alapfogalmak / 31

Nem egyértelmű 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 4 push 4 push o f f s e t $SG2502 c a l l _ p r i n t f add esp,0ch xor eax, eax r e t Izsó Tamás Bevezetés Alapfogalmak / 32

Bináris művelet 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 else 8 printf(" %d >= %d\n", a, sizeof(int) ); 9 return 0; 10 } > cl /Ob2 /c /GS- conv.c Izsó Tamás Bevezetés Alapfogalmak / 33

Bináris művelet operandusainak a kiegyenlítése > dumpbin /disasm conv.obj _main : push ebp mov ebp, esp push ecx mov dword ptr [ ebp 4],0FFFFFFFBh cmp dword ptr [ ebp 4],4 jae 00000026 ; e l ő j e l n é l k ü l i szám esetén push 4 mov eax, dword ptr [ ebp 4] push eax push o ffset $SG2459 c a l l _ p r i n t f add esp,0ch jmp 00000039 push 4 mov ecx, dword ptr [ ebp 4] push ecx push o ffset $SG2462 c a l l _ p r i n t f add esp,0ch xor eax, eax mov esp, ebp pop ebp r e t Izsó Tamás Bevezetés Alapfogalmak / 34

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

Section 4 Jog Izsó Tamás Bevezetés Alapfogalmak / 36

Izsó Tamás Bevezetés Alapfogalmak / 37

Jog és fejlődés Információhoz való jog Habár én is kötve érzem magam ahhoz, hogy minden embernek biztosítsuk szerzői jogainak élvezetét, a tudományok fejlődése elé senki sem gördíthet akadályokat. Lord Ellenborough Izsó Tamás Bevezetés Alapfogalmak / 37

Forrás Dudás Ágnes "A szoftver szerzői jogi védelme 1." http://www.sztnh.gov.hu/hu/kiadv/ipsz/ 200504/01-dudas-agnes.html Dudás Ágnes "A szoftver szerzői jogi védelme 2." http://www.sztnh.gov.hu/hu/kiadv/ipsz/ 200506/01-dudas-agnes.html Mezei Péter "Mitől fair a fair? Szerzői művek felhasználása a 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

Mi is az a szoftver Izsó Tamás Bevezetés Alapfogalmak / 39

Szoftver kategorizálása funkciójuk alapján operációs rendszerek; eszközmeghajtó programok; információt közlő; információt feldolgozó; tudományos számítás végző; szórakoztató; stb. Izsó Tamás Bevezetés Alapfogalmak / 40

Szakirodalomban definiálva A szoftver a hardverre épített inteligencia. A szoftver magja, az operációs rendszer azoknak a vezérlő programoknak a gyűjtemé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. Olyan szellemi termék, mely a hardvert működteti. A rendszer minden olyan komponense, amely nem tartozik a hardverhez. Izsó Tamás Bevezetés Alapfogalmak / 41

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ásra képes- gép meghatározott műveletet, feladatot, eredményt jelezzen, 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) elegendő részletességgel ahhoz, hogy egy meghatározott számítógépi programot alkotó utasítássorozatot létrehozzunk. 3 Kiegészítő leírások: mindazon dokumentáció, amely a program megértését és alkalmazását segíti. (Értelemszerűen nem tartozik ide a program maga, sem annak leírása.) Izsó Tamás Bevezetés Alapfogalmak / 42

Varró Dániel Email Hát el vagyok egészen andalodva, és gyönge szívem, ímé, reszketeg, mióta éjjelente, hajnalonta veled titokban ímélezgetek. void sort ( char array, size_ t size, int ( cmp ) ( void, void ), int begin, int end ) { i f ( end > begin ) { void p i v o t = array + begin ; i n t l = begin + size ; i n t r = end ; while ( l < r ) { i f (cmp( array+l, p i v o t ) <= 0) { l += size ; } else { r = size ; swap ( array+l, array+r, size ) ; } } l = size ; swap ( array+begin, array+l, size ) ; s o r t ( array, size, cmp, begin, l ) ; s o r t ( array, size, cmp, r, end ) ; } } Izsó Tamás Bevezetés Alapfogalmak / 43

Irodalmi mű és a szoftver BUE (1886) az irodalmi, művészeti, és tudományos művek védelméről 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ülnek kifejezésre, a Berni Egyezmény alapján irodalmi műként élveznek védelmet. Izsó Tamás Bevezetés Alapfogalmak / 44

Nem esik szerzői jog alá ötlet; elv; elgondolás; eljárás; működési módszerek; matematikai módszerek; interface-k; Izsó Tamás Bevezetés Alapfogalmak / 45

A számítógépes program kidolgozásának a részei 1 Az elektronikus számítógépi kezelésre alkalmas feladat feltárása. 2 A feladatnak az elektronikus számítógép által megkövetelt korrektséggel történő megfogalmazása (ún. szakmai modell készítése). 3 A feladat számítástechnikai (matematikai) modelljének a megkonstruálása. 4 A számítási algoritmus elkészítése (a gépi eljárás kidolgozá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 ellenőrzése Izsó Tamás Bevezetés Alapfogalmak / 46

A számítógépes program részei 1-4 együttesen szellemi alkotás 2,3,4 önmagában szellemi alkotás Izsó Tamás Bevezetés Alapfogalmak / 47

Szoftver és a zene jogi szabályozása Mind a két esetben az értelemzéshez speciális közegre van szükség. átdolgozás joga a szerzőé; részek felhasználását a szerző szabályozhatja; a felhasználó kötelezheti a szerzőt a műve használhatóvá tételére; ha erre a szerző 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

Információ szabadsága avagy a fair use teszt 1 a használat célja kereskedelmi nonprofit oktatási célú; 2 mű természete van-e minimális művészeti, eszmei értéke ; 3 a felhasznált résznek a mértéke és lényegessége; 4 a felhasznált mű potenciális piacára vagy értékére kifejtett hatása. Izsó Tamás Bevezetés Alapfogalmak / 49

Accolade vs Sega Sega Genesis játékkonzol (hardware); Accolade játékok a konzolra (software); Sega trademark security system, TMSS, a távol-keleti hamisítások megfékezésére; Accolade programja az újabb vason nem fut, ezért a TMSS-t visszafejtették; Sega bírósági pert kezdeményez; Accolade védekezése: Sega programok visszafejtése nem tekinthető jogellenesnek; fair use teszt. Izsó Tamás Bevezetés Alapfogalmak / 50

Kereskedelmi szoftverek célja a haszonszerzés; vásárlónak be kell tartani a licenc szerződést; maximum 1 biztonsági másolatot készíthető; a program megrendelőjének joga van a forráskódba beletekinteni, de ez nem gyakorlat (megrendelt sw. szavatossági problémák miatt) ; lehetséges részek visszafejtése saját program együtműködése érdekében. Izsó Tamás Bevezetés Alapfogalmak / 51

Speciális licenszelésű 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érhetőségével a párhuzamos fejlesztéseket megsporolhatók; 4 reklám; 5 Berni Egyezmény előtti programok nem védettek. Izsó Tamás Bevezetés Alapfogalmak / 52

Kategóriák Freeware Kereskedelmi cég ingyenes szoftvere bocsájt ki a cég népszerűbbé tétele érdekében (Acrobat Reader). Postcardware Ez is freeware, de itt egy levelezőlapot, vagy egyebet illik a szerzőnek küldeni. (népszerűség mérése, Guinness rekord felállítás) Shareware Próbáld ki vásárlás előtt. A programban beépített korlátozások vannak. Trialware Majdnem olyan mint a shareware, de valamilyen program vásárlása után adják, és szabadon nem terjeszthető. Limited edition Legjobb részek ki vannak szedve. Általában csak azokat hagyják benne, amelyre létezik ingyenes alternatív megoldás. Izsó Tamás Bevezetés Alapfogalmak / 53

Kategóriák Patcware Ingyenes javítások a már megvásárolt programhoz. Ad-powered Ingyen jut hozzá a felhasználó, de utána nézheti a sok reklámot. Thankyouware Honlap látogatása fejében adnak egy programot. Abandonware Régi programok, játékok ajándékba. Izsó Tamás Bevezetés Alapfogalmak / 54

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

Free software licenc BSD licencek; Mozilla licencek (bizonyos részeket kereskedelmi szoftverbe is be lehet építeni); Artistic licencek korlátozza az átdolgozás jogát (perl). Izsó Tamás Bevezetés Alapfogalmak / 56