Η χρήση του εργαλείου PyEmu στο Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών



Σχετικά έγγραφα
Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

ΕΝΤΟΛΕΣ WINDOWS ΚΑΙ UNIX

Μορθές Κακόβοσλοσ Κώδικα (Malicious Code)

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

Ενδεικτικά Θέματα Στατιστικής ΙΙ

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

Άσκηση 1 - Μοπυοποίηση Κειμένου

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

Η αξρή ζύλδεζεο Client-Server

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

Constructors and Destructors in C++

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H )

Εηζαγσγή ζηελ επηζηήκε ησλ ππνινγηζηώλ. Λνγηζκηθό Υπνινγηζηώλ Κεθάιαην 7ν Λεηηνπξγηθά Σπζηήκαηα

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

x x x x tan(2 x) x 2 2x x 1

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

ΘΔΜΑ 1 ο Μονάδες 5,10,10

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

Βιομησανικόρ ζσεδιαζμόρ πποϊόνηων από ανακςκλωμένερ ζςζκεςαζίερ

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

Παλεπηζηήκην Θεζζαιίαο. Πνιπηερληθή Σρνιή. Τκήκα Μεραληθώλ Η/Υ, Τειεπηθνηλσληώλ & Δηθηύσλ. [ ]

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

Τηλζφωνο: Ε-mail: Ώρες διδασκαλίας: 16:00 19:15 μμ

ΠΛΗ36. Άσκηση 1. Άσκηση 2. Οη δηεπζύλζεηο ησλ 4 σλ ππνδηθηύσλ είλαη νη αθόινπζεο. Υπνδίθηπν Α: /27 Υπνδίθηπν Β:

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γεσηέρα 10 Ηοσνίοσ 2019 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

ΜΑΘΗΜΑΤΙΚΑ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΦΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ Β ΛΥΚΔΙΟΥ ΤΔΣΤ(1) ΣΤΑ ΓΙΑΝΥΣΜΑΤΑ

ΥΡΙΣΟΤΓΔΝΝΙΑΣΙΚΔ ΚΑΣΑΚΔΤΔ

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

Έκδοζη /10/2014. Νέα λειηοσργικόηηηα - Βεληιώζεις

ΔΝΓΔΙΚΣΙΚΔ ΛΤΔΙ ΣΑ ΜΑΘΗΜΑΣΙΚΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ 2017

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Εισαγωγή στη Φωτογραυία. Χριζηάκης Σαζεΐδης - EFIAP

Οδηγίες Ασφρματης Πρόσβασης (Wi-Fi) στο Διαδίκτυο

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

Γ ΣΑΞΖ ΔΝΗΑΗΟΤ ΛΤΚΔΗΟΤ ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΘΔΣΗΚΩΝ ΚΑΗ ΟΗΚΟΝΟΜΗΚΩΝ ΠΟΤΓΩΝ ΤΝΑΡΣΖΔΗ ΟΡΗΑ ΤΝΔΥΔΗΑ (έως Θ.Bolzano) ΘΔΜΑ Α

ΔΠΙΣΡΟΠΗ ΓΙΑΓΩΝΙΜΩΝ 74 ος ΠΑΝΔΛΛΗΝΙΟ ΜΑΘΗΣΙΚΟ ΓΙΑΓΩΝΙΜΟ ΣΑ ΜΑΘΗΜΑΣΙΚΑ Ο ΘΑΛΗ 19 Οκηωβρίοσ Δνδεικηικές λύζεις

α) ηε κεηαηόπηζε x όηαλ ην ζώκα έρεη κέγηζην ξπζκό κεηαβνιήο ζέζεο δ) ην κέγηζην ξπζκό κεηαβνιήο ηεο ηαρύηεηαο

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

ΔΦΑΡΜΟΜΔΝΑ ΜΑΘΗΜΑΣΙΚΑ ΣΗ ΧΗΜΔΙΑ Ι ΘΔΜΑΣΑ Α επηέκβξηνο Να ππνινγηζηνύλ νη κεξηθέο παξάγσγνη πξώηεο ηάμεο ηεο ζπλάξηεζεο f(x,y) =

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο

Τν Πξόγξακκα ζα αλαθνηλσζεί, ακέζσο κεηά ηηο γηνξηέο ηνπ Πάζρα.

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

ΕΓΧΕΙΡΙΔΙΟ ΕΚΔΟΗ 8.0.0

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

Δξγαιεία Καηαζθεπέο 1 Σάμε Σ Δ.Κ.Φ.Δ. ΥΑΝΙΧΝ ΠΡΧΣΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ. ΔΝΟΣΗΣΑ 11 ε : ΦΧ ΔΡΓΑΛΔΙΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Φαθόο κε ζσιήλα.

6 η Εργαζηηριακή Άζκηζη Επαλήθεσζη Λειηοσργίας Βαζικών Φλιπ-Φλοπ

ύζηεκα Ωξνκέηξεζεο Πξνζσπηθνύ (Έθδνζε 2) ΤΠΗΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΤΣΗΜΑΣΩΝ

ΣΡΑΠΕΖΑ ΘΕΜΑΣΩΝ Α ΛΤΚΕΙΟΤ

Οδηγίες τρήζης για λειηοσργία μεηαθοράς καναλιών ζε υηθιακό δέκηη OST-7060 HD

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

Σημεία Ασύπματηρ Ππόσβασηρ (Hot-Spots)

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε

ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

ΔΝΓΔΙΚΤΙΚΔΣ ΛΥΣΔΙΣ ΣΤΑ ΜΑΘΗΜΑΤΙΚΑ ΚΑΤΔΥΘΥΝΣΗΣ Γ ΛΥΚΔΙΟΥ ΓΔΥΤΔΡΑ 27 ΜΑΪΟΥ 2013

Μηα ζπλάξηεζε κε πεδίν νξηζκνύ ην Α, ζα ιέκε όηη παξνπζηάδεη ηοπικό μέγιζηο ζην, αλ ππάξρεη δ>0, ηέηνην ώζηε:

Αναμόπθωζη Ππογπάμμαηορ Πποπηςσιακών Σποςδών

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

Αιγόξηζκνη Δνκή επηινγήο. Απιή Επηινγή ύλζεηε Επηινγή. Εηζαγσγή ζηηο Αξρέο ηεο Επηζηήκεο ησλ Η/Τ. introcsprinciples.wordpress.

Διατείριση Φσσικών Καταστρουών: ACTIVE LANDSLIDE INVENTORY MAPPING AND SUSCEPTIBILITY ZONING

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ. 3. Έλαο θαηαρσξεηήο SISO ησλ 4 bits έρεη: α) Μία είζνδν, β) Δύν εηζόδνπο, γ) Σέζζεξεηο εηζόδνπο.

Intel Accelerate Your Code

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙΜΟ Α ΛΤΚΔΙΟΤ. Ημεπομηνία: 10/12/11 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΔΙΝΟΜΔΝΔ ΛΤΔΙ

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

ΑΓΩΜΘΡΘΙΞΘ ΤΩΠΞΘ ΡΘΡ ΛΘΙΠΕΡ ΗΚΘΙΘΕΡ ΛΘΤΑΗΚΘΔΗΡ Τ.

(γ) Να βξεζεί ε ρξνλνεμαξηώκελε πηζαλόηεηα κέηξεζεο ηεο ζεηηθήο ηδηνηηκήο ηνπ ηειεζηή W.

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Η χρήση του εργαλείου PyEmu στο Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Ταμπάκη Ειρήνη- Μαρία Φεβρουάριος 2014

Πεπιεσόμενα 1. Πεπίλητη... 1 2. Ειζαγυγή... 1 3. Η γλώζζα ςτηλού επιπέδος Python... 2 4. Γνυπιμία με ηο Επγαλείο PyEmu... 3 5. Αξιοποίηζη ηος PyEmu ζηο ΤΜΠΤ... 8 6. Σςμπεπάζμαηα... Ошибка! Закладка не определена.0 7.Αναθοπέρ... 81

1. Πεπίλητη Σθνπόο ηνπ πνλήκαηνο απηνύ είλαη λα παξνπζηάζεη όζν ην δπλαηόλ πην αλαιπηηθά ε γιώζζα Python, κηα γιώζζα πξνγξακκαηηζκνύ απιή θη εύιεπηε θαη ηαπηνρξόλσο απνδνηηθή ζηνλ αληηθεηκελνζηξαθή πξνγξακκαηηζκό. Επηπιένλ, επηρεηξείηαη πξνζέγγηζε ζηε ιεηηνπξγία θαη ηε ρξήζε ελόο πνιύ ηζρπξνύ εξγαιείνπ, ηνπ εμνκνησηή PyEmu. Τέινο, γίλεηαη απόπεηξα λα αλαπηπρζνύλ ηξόπνη ώζηε λα εθαξκνζηνύλ ηα παξαπάλσ ζε καζήκαηα ηεο ζρνιήο ΤΜΠΤ. 2. Ειζαγυγή Τν Τκήκα Μεραληθώλ Πιεξνθνξηθήο θαη Τειεπηθνηλσληώλ[1], έρεη σο έδξα ηελ Κνδάλε θαη αλήθεη ζηελ Πνιπηερληθή Σρνιή ηνπ Παλεπηζηεκίνπ Δπηηθήο Μαθεδνλίαο. Απνλέκεη ηίηινπο ζπνπδώλ κέρξη θαη δηδαθηνξηθνύ δηπιώκαηνο θαη έρεη σο απνζηνιή λα παξέρεη εμεηδηθεπκέλεο γλώζεηο ζε ζύγρξνλνπο ηνκείο ηεο Πιεξνθνξηθήο θαη ησλ Τειεπηθνηλσληώλ, όπσο ελδεηθηηθά είλαη ε αλάιπζε δεδνκέλσλ, ην δηαδίθηπν, ε αλάιπζε ζήκαηνο θαη εηθόλαο, ε ηερλνινγία ινγηζκηθνύ θαη νη θηλεηέο θαη δνξπθνξηθέο επηθνηλσλίεο. Επηπιένλ, ζηόρνο ηνπ είλαη λα παξέρεη ζηνπο θνηηεηέο ηα απαξαίηεηα εθόδηα πνπ εμαζθαιίδνπλ ηελ άξηηα θαηάξηηζή ηνπο γηα επηζηεκνληθή θαη επαγγεικαηηθή ζηαδηνδξνκία, ζε εηαηξίεο πιεξνθνξηθήο ηειεπηθνηλσληώλ, ζην δεκόζην ηνκέα, θ.α. Όληαο έλα πνιπηερληθό ηκήκα ην ΤΜΠΤ δηαζέηεη πιεζώξα εξγαζηεξίσλ εμνπιηζκέλσλ ηόζν σο πξνο ην πιηθό ηνπο όζν θαη σο πξνο ην ινγηζκηθό. Όζνλ αθνξά ζηα δηαζέζηκα εξγαιεία ινγηζκηθνύ ελδεηθηηθά αλαθέξσ ηα Matlab, Dev- C++, Opnet, Xilinx θαη ArgoUML. Ωζηόζν, ζα έιεγε θαλείο όηη ζε ζρέζε κε άιια αληίζηνηρα παλεπηζηεκηαθά ηκήκαηα ηόζν ηνπ εζσηεξηθνύ, όζν θαη ηνπ εμσηεξηθνύ πζηεξεί. Καηά ηελ γλώκε κνπ, κηα από ηηο ζεκαληηθόηεξεο παξαιείςεηο ζηνλ ηνκέα ηνπ ινγηζκηθνύ είλαη ε απνπζία εμνκνησηή γηα ηελ γιώζζα πςεινύ επηπέδνπ Python[2]. Όπσο γηα παξάδεηγκα είλαη ν PyEmu. 1

3. Η γλώζζα ςτηλού επιπέδος Python Η Python είλαη κηα εύθνιε ζηελ εθκάζεζε, ηζρπξή γιώζζα πξνγξακκαηηζκνύ. Έρεη απνδνηηθέο δνκέο δεδνκέλσλ πςεινύ επηπέδνπ θαη κηα απιή αιιά απνηειεζκαηηθή πξνζέγγηζε ζηνλ αληηθεηκελνζηξαθή πξνγξακκαηηζκό. Η θνκςή ζύληαμή ηεο θαη νη δπλακηθνί ηύπνη ηεο καδί κε ηε ιεηηνπξγία ηεο σο δηεξκελεπόκελεο (αληί κεηαγισηηηδόκελεο) γιώζζαο ηελ θαζηζηνύλ ηδαληθή γιώζζα γηα δεκηνπξγία ζελαξίσλ εληνιώλ θαη γηα ηαρεία αλάπηπμε εθαξκνγώλ ζε πνιινύο ηνκείο θαη ζηηο πεξηζζόηεξεο πιαηθόξκεο. Πην αλαιπηηθά ε Python είλαη έλα παξάδεηγκα ειεύζεξνπ ινγηζκηθνύ θαη ινγηζκηθνύ αλνηθηνύ θώδηθα[3]. Με ηνλ όξν ινγηζκηθό αλνηθηνύ θώδηθα λνείηαη έλα ινγηζκηθό γηα ην νπνίν δίλεηαη ε δπλαηόηεηα ζηνλ ρξήζηε λα δηαβάδεη, λα επεμεξγάδεηαη, λα δηαηεξεί αληίγξαθα θαη λα αμηνπνηεί ηκήκαηα ηνπ θώδηθα ή αθόκα θαη νιόθιεξν ηνλ θώδηθα παξάιιεια κε άιινπο ρξήζηεο. Εμαηηίαο απηνύ ηνπ γεγνλόηνο, εύθνια ζπκπεξαίλεηαη όηη ε Python έρεη ηε δπλαηόηεηα πινπνίεζεο ζε πνιιέο πιαηθόξκεο, δεδνκέλνπ όηη όια ηα Python πξνγξάκκαηά είλαη δπλαηό λα δνπιέςνπλ ζε νπνηαδήπνηε από απηέο ηηο πιαηθόξκεο, ρσξίο λα ρξεηάδνληαη αιιαγέο, κε ηελ πξνϋπόζεζε όηη απηά ζα είλαη δνκεκέλα ζύκθσλα κε ηηο γεληθέο αξρέο ηεο γιώζζαο. Η Python κπνξεί λα ρξεζηκνπνηεζεί ζε ινγηζκηθά όπσο Linux, ζηα Windows, ζην FreeBSD, ζε Macintosh, ζην Solaris, ζην OS/2, ζηελ Amiga, ζην AROS, ζην AS/400, ζην BeOS, ζην OS/390, ζην z/os, ζην Palm OS, ζην QNX, ζην VMS, ζην Psion, ζην Acorn RISC OS θ.α.. Πξνεγνπκέλσο, ε Python αλαθέξζεθε σο δηεξκελεπόκελε αληί γηα κεηαγισηηηδόκελε γιώζζα. Έλα πξόγξακκα πνπ γξάθεηαη ζε κηα κεηαγισηηηδόκελε γιώζζα, όπσο γηα παξάδεηγκα ζε C ή C++, κεηαηξέπεηαη από ηελ πεγαία γιώζζα ζε κηα γιώζζα πνπ παξάγεηαη από ηνλ κεηαγισηηηζηή θαη ιέγεηαη αληηθείκελε γιώζζα. Η δηαδηθαζία πνπ αθνινπζείηαη είλαη ε εμήο: Ο κεηαγισηηηζηήο δέρεηαη σο είζνδν έλα πξόγξακκα ζε γιώζζα πςεινύ επηπέδνπ θαη παξάγεη έλα ηζνδύλακν πξόγξακκα ζε γιώζζα κεραλήο, δειαδή ζε 0 θαη 1. Έπεηηα, ρξεζηκνπνηώληαο έλα ζπλδέηε - θνξησηή, επηηπγράλεηαη ε ζύλδεζε ηνπ αληηθείκελνπ πξνγξάκκαηνο κε ηηο βηβιηνζήθεο, νύησο ώζηε λα παξαρζεί ην εθηειέζηκν πξόγξακκα. Η Python, σζηόζν, δε ρξεηάδεηαη κεηαγιώηηηζε ζε δπαδηθό αξρείν. Αληίζεηα, ν δηεξκελεπηήο δηαβάδεη κία πξνο κία ηηο εληνιέο ηνπ αξρηθνύ πξνγξάκκαηνο, ηηο κεηαηξέπεη ζε κηα ελδηάκεζε κνξθή πνπ νλνκάδεηαη bytecode θαη γηα θάζε κηα εθηειεί ακέζσο κηα ηζνδύλακε αθνινπζία δπαδηθώλ εληνιώλ. Εθ ησλ πξαγκάησλ ε ηδηόηεηα απηή ηεο Python, θάλεη ηε ρξήζε ηεο Python πνιύ πην εύθνιε, δηόηη δελ απαηηνύληαη θαηάιιειεο βηβιηνζήθεο, πξνϋπνζέζεηο ζπζηήκαηνο θιπ.. Απηό, επίζεο, θάλεη ηα πξνγξάκκαηα ζε Python εμαηξεηηθά θνξεηά. 2

Η Python ππνζηεξίδεη ηόζν δηαδηθαζηνζηξεθή πξνγξακκαηηζκό όζν θαη ηνλ αληηθεηκελνζηξεθή πξνγξακκαηηζκό. Σην δηαδηθαζηνζηξεθή πξνγξακκαηηζκό, ην πξόγξακκα δνκείηαη πάλσ ζε δηαδηθαζίεο ή ζπλαξηήζεηο νη νπνίεο δελ είλαη ηίπνηε άιιν από επαλαρξεζηκνπνηήζηκα θνκκάηηα θώδηθα. Σηηο αληηθεηκελνζηξεθείο γιώζζεο, έλα πξνγξάκκαηα πεξηγξάθεη ελέξγεηεο (επεμεξγαζίαο) πνπ εθαξκόδνληαη πάλσ ζε δεδνκέλα, από ηα νπνία δεκηνπξγνύληαη κε θαηάιιειε κνξθνπνίεζε ηα αληηθείκελα Η Python έρεη έλαλ πνιύ ηζρπξό αιιά πνιύ απιό ηξόπν γηα αληηθεηκελνζηξεθή πξνγξακκαηηζκό, εηδηθά όηαλ ζπγθξίλεηαη κε άιιεο πνιπρξεζηκνπνηνύκελεο γιώζζεο όπσο ε C++ ή ε Java. Δύν έλλνηεο πνπ ζπλδένληαη άξξεθηα κε ηελ γιώζζα Python είλαη απηέο ηηο ελζσκάησζεο θαη ηεο επεθηαζηκόηεηαο. Αλ είλαη απαξαίηεην έλα θξίζηκν θνκκάηη θώδηθα λα ηξέρεη, λα έρεη ηε κέγηζηε απνδνηηθόηεηα ή θνκκάηη ελόο αιγόξηζκνπ πνπ λα κελ είλαη αλνηθηνύ θώδηθα, ηόηε ε γιώζζα δίλεη ηε δπλαηόηεηα ζηνλ ρξήζηε λα πξνγξακκαηίδεη ηκήκαηα θώδηθα ζε C ή C++ θαη κεηά λα ρξεζηκνπνηεί απηό ζην πξόγξακκά Python. Η δηαδηθαζία απηή νλνκάδεηαη ελζσκάησζε θώδηθα. Η ελζσκάησζε ζηνλ πξνγξακκαηηζκό Python θώδηθα ζε C/C++, δίλεη ζηνλ ρξήζηε ηε δπλαηόηεηα δεκηνπξγίαο ζελαξίσλ Ο δηεξκελέαο Python είλαη εύθνιν λα επεθηαζεί κε λέεο ζπλαξηήζεηο θαη ηύπνπο δεδνκέλσλ πνπ εθαξκόδνληαη ζε C ή C + + ή θαη άιιεο γιώζζεο πνπ πξνέξρνληαη από ηελ C. Η Python είλαη, επίζεο, θαηάιιειε σο γιώζζα επέθηαζεο γηα πξνζαξκόζηκεο εθαξκνγέο. Τέινο, ε Python δηαζέηεη πξόηππε βηβιηνζήθε ε νπνία είλαη πξαγκαηηθά ηεξάζηηα θαη δηαηίζεηαη γηα όιεο ηηο πιαηθόξκεο, κε ηελ πξνϋπόζεζε ηεο εγθαηάζηαζεο θάπνηνπ εμνκνησηή Python. Απηή πεξηέρεη πιεξνθνξίεο ζρεηηθά κε θαλνληθέο εθθξάζεηο, δεκηνπξγία ηεθκεξίσζεο, δνθηκέο κνλάδσλ, λεκάησζε, βάζεηο δεδνκέλσλ, πεξηεγεηέο ηζηνύ, CGI, email, XML, HTML, αξρεία WAV, θξππηνγξάθεζε, γξαθηθέο δηεπαθέο ρξήζηε (GUI -graphical user interfaces) πξσηνθόιια Δηαδηθηύνπ (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, πξνγξακκαηηζκό ζε CGI), ηερλνινγία ινγηζκηθνύ (unit testing, θαηαγξαθή, δεκηνπξγία πξνθίι, parsing θώδηθα Python), δηαζπλδέζεηο ηνπ ιεηηνπξγηθνύ ζπζηήκαηνο (θιήζεηο ζπζηήκαηνο, ηα ζπζηήκαηα αξρείσλ, ην πξσηόθνιιν TCP / IP sockets). 4. Γνυπιμία με ηο Επγαλείο PyEmu Δελ είλαη ιίγνη εθείλνη νη νπνίνη ρξεζηκνπνηνύλ ηε Python. Η όιν θαη απμαλόκελε ρξήζε ηεο νκνινγνπκέλσο ηζρπξήο απηήο γιώζζαο, όπσο αλαιύζεθε παξαπάλσ, δεκηνύξγεζε ηελ αλάγθε αλάπηπμεο εξγαιείσλ κε ζθνπό ηε κέγηζηε αμηνπνίεζε ησλ δπλαηνηήησλ ηεο. Τν IDAPython [4], είλαη κέξνο ηνπ 3

IDAPro, πνπ ελζσκαηώλεη ηε γιώζζα πξνγξακκαηηζκνύ Python, επηηξέπνληαο ζηα ζελάξηα λα εθηεινύληαη ζην πιαίζην ηνπ IDAPro. Τα πξνγξάκκαηα απηά έρνπλ πξόζβαζε ηόζν ζηα API θαη IDC ηνπ IDA, θαζώο επίζεο ζε όια ηα επηπξόζζεηα. 4.1 Επγαλεία βιβλιοθήκηρ Εθηόο από ηελ IDAPython, αλαπηύρζεθαλ άιια εξγαιεία Python. Απηά πνπ ζα καο απαζρνιήζνπλ παξαθάησ, θαζώο είλαη απαξαίηεηα γηα ηε ιεηηνπξγία ηνπ PyEmu, αλήθνπλ ζηελ θαηεγνξία εξγαιείσλ βηβιηνζήθεο θαη είλαη ηα Pydbg[5], Pefile[6], Pydasm [7]. Όηαλ ζε έλα πξόγξακκα ζπκβεί ζθάικα δύζθνιν κπνξνύκε λα ην αληηιεθζνύκε ρσξίο ηε ρξήζε ηνπ θαηάιιεινπ εξγαιείνπ. Έλα εξγαιείν εληνπηζκνύ ζθαικάησλ, όπσο ν PyDbg, είλαη έλα πξόγξακκα πνπ έρεη σο ζηόρν λα αλαιύζεη άιια πξνγξάκκαηα. Τν θύξην ελδηαθέξνλ όηαλ ρξεζηκνπνηείηαη έλα πξόγξακκα εληνπηζκνύ ζθαικάησλ είλαη λα αλαιπζεί ν θώδηθα ζπκπεξηθνξάο ή λα βξεζεί έλα ζθάικα ζε θάπνην άιιν πξόγξακκα. Έλα πξόγξακκα απνζθαικάησζεο επηηξέπεη ζε έλαλ πξνγξακκαηηζηή ή έλαλ εξεπλεηή λα πξνζδηνξίζεη γξήγνξα ηελ αηηία ηνπ πξνβιήκαηνο ζηνλ θώδηθα. Με ηε ρξήζε ζπλαξηήζεσλ επαλάθηεζεο πνπ νξίδνληαη από ην ρξήζηε ε ιεηηνπξγηθόηεηα ηεο PyDbg κπνξεί εύθνια λα επεθηαζεί. Όηαλ εθαξκόδεηαη κηα εζηκνηππηθή επαλάθηεζε, κπνξεί θαλείο λα νξίζεη ιεηηνπξγίεο παξαζθεληαθά κεηά ηελ ελεξγνπνίεζε ηνπ πξνγξάκκαηνο απνζθαικάησζεο. Από ηελ PyDbg πνιιαπιέο δπλαηόηεηεο είλαη δηαζέζηκεο, όπσο λα νξίδνληαη ζεκεία δηαθνπήο, λα επεξεάζεη ή λα δηαβάζεη κλήκε, θαη λα ηξνπνπνηήζεη ηηο παξακέηξνπο ιεηηνπξγίαο Μόιηο έλα θνκκάηη θώδηθα εθηειεζηεί κπνξεί θαλείο λα επηζηξέςεη ηνλ έιεγρν ζηελ PyDbg, πξνθεηκέλνπ λα ζπλερηζηεί ε εθηέιεζε. Η Pefile είλαη κηα άιιε βηβιηνζήθε γηα ην δηάβαζκα θαη ηελ επεμεξγαζία εθηειέζηκσλ αξρείσλ Python ηύπνπ PE. Απηή ε βηβιηνζήθε επηηξέπεη ηελ κεηαγιώηηηζε ησλ ζεκαληηθώλ πιεξνθνξηώλ πνπ αθνξνύλ ζε έλα εθηειέζηκν γηα ηελ απνζπλαξκνιόγεζε ζπκπεξηιακβαλνκέλσλ ησλ εηζαγσγώλ, ηνπ θώδηθα θαη ησλ ηκεκάησλ δεδνκέλσλ, θαζώο επίζεο ησλ δηεπζύλζεσλ ησλ ζεκείσλ εηζόδνπ. Η Pefile δηεξεπλά ηε δηάηαμε ελόο αξρείνπ PE κε ζθνπό ηελ απνηειεζκαηηθόηεξε πξνζέγγηζε ζρεδόλ θάζε ραξαθηεξηζηηθνύ ηνπ αξρείνπ. Οξηζκέλα από ηα θαζήθνληα ηεο Pefile είλαη ε ηξνπνπνίεζε θαη ζπγγξαθή ηνπ αξρείνπ PE, ε αλάιπζε ησλ ελνηήησλ, ε αλάθηεζε δεδνκέλσλ, ε πξνεηδνπνίεζε γηα ύπνπηα θαη δύζκνξθα θέξδε. Λεηηνπξγεί, επίζεο, θαη σο γελλήηξηα ππνγξαθώλ PEiD. 4

Τέινο, ε pydasm, είλαη έλα πξόγξακκα εμνκνίσζεο ηεο βηβιηνζήθεο libdasm ηεο Python. Η Pydasm πξνζπαζεί λα θαηαγξάθεη όιεο ηηο νδεγίεο ησλ ζπλαξηήζεσλ θαη απζαίξεηα λα ηηο πξνζαξκόζεη ζηνλ PyEmu, όπσο ζα δνύκε παξαθάησ. Τν εξγαιείν απηό βνεζά ηνλ εμνκνησηή λα είλαη αθόκε πην επέιηθηνο ζε ιεηηνπξγία. 4.2 To επγαλείο PyEmu Ο εμνκνησηήο PyEmu είλαη ν ζπλδεηηθόο θξίθνο ηεο Κεληξηθήο Μνλάδαο Επεμεξγαζίαο ηεο πιαηθόξκαο, ηεο Κύξηαο Μλήκεο θαη ηνπ ρξήζηε. Αλήθεη ζηελ αξρηηεθηνληθή x86 32-bit emulator. Από κόλνο ηνπ ν PyEmu είλαη έλα πνιύ ηζρπξό εξγαιείν. Μάιηζηα αθόκα θαη πνιύ εληππσζηαθνί θώδηθεο σο πξνο ην κέγεζνο θαη ηε ζπγγξαθή, κε ηε ρξήζε ηνπ PyEmu είλαη δπλαηόλ λα εμνκνησζνύλ πνιύ γξήγνξα. Εικόνα: Τπόπορ λειτοςπγίαρ τος πακέτος εξομοίωσηρ PyEmu Ο PyEmu έρεη σο αληηθείκελν ηελ αλαγλώξηζε ηεο πιεξνθνξίαο πνπ παξέρεηαη από ηνλ ρξήζηε, ηελ εθηέιεζε ησλ εληνιώλ θαη ηελ αλάθηεζε δεδνκέλσλ- πιεξνθνξηώλ από ηε κλήκε. Δηαθέξεη από άιινπο εμνκνησηέο, θαζώο απνηειείηαη από ηξία δηαθνξεηηθά, αιιά άξξεθηα ζπλδεδεκέλα ηκήκαηα. Απηά είλαη ηα PyEmu, PyCPU θαη PyMemory. Μέζν δηαζύλδεζεο ηεο αξρηηεθηνληθήο PyEmu είλαη ν ρξήζηεο, ν νπνίνο ειέγρεη ηηο ζέζεηο κλήκεο θαη ηελ εθηέιεζε ησλ εληνιώλ κε ζθνπό ηελ εθηέιεζε 5

ηνπ πξνγξάκκαηνο. Ο ρξήζηεο έρεη ηε δπλαηόηεηα λα ειέγρεη όιεο ηηο πηπρέο ησλ δηαδηθαζίαο ηνπ εξγαιείνπ PyEmu. Σηελ πξαγκαηηθόηεηα, ν ρξήζηεο έρεη πξόζβαζε κόλν ζηηο θιάζεηο ηνπ PyEmu, σζηόζν όιεο νη ρξήζηκεο πιεξνθνξίεο εθηίζεηαη κέζσ δεκόζησλ κεζόδσλ θαηά ηε δεκηνπξγία εκθαλίζεσλ ηνπ PyEmu από ηελ παξαγόκελε θιάζε. Η δηαδηθαζία πνπ αθνινπζείηαη, αθνύ ν ρξήζηεο δώζεη κηα νδεγία ζην ππνινγηζηηθό ζύζηεκα είλαη ε εμήο. Ο PyEmu αληρλεύεη θαη αλαγλσξίδεη ζε κνξθή δπαδηθώλ εληνιώλ ηηο πιεξνθνξίεο κία πξνο κία. Ταπηόρξνλν θαη γηα θάζε εληνιή, δίλεη νδεγίεο ζηελ PyCPU λα ηελ εθηειέζεη. Επεηηα, ε PyCPU ζα αλαδεηήζεη ηε κλήκε γηα ηελ ελ ιόγσ νδεγία θαη ηελ αλάθηεζε ηεο από ηελ PyMemory. Τα κελύκαηα από ηελ PyCPU ζηελ PyMemory θαη αληηζηξόθσο, δηαβηβάδνληαη κέζσ ηνπ PyEmu. Η PyCPU βαζίδεηαη ζε κηα κπξηάδα βνεζεηηθώλ ζπλαξηήζεσλ γηα θαζαξή αλάγλσζε ηηκώλ κεηξώνπ θαη δηεπζύλζεσλ κλήκεο. Φεηξίδεηαη όιεο ηηο ινγηθέο εληνιέο, ηηο εληνιέο εθηέιεζεο θαη ησλ ζρεηηθώλ κε ηελ εθηέιεζε θαζεθόλησλ ηνπ επεμεξγαζηή. Δνπιεηά ηεο είλαη λα εθηειεί κηα δεδνκέλε νδεγία πνπ βαζίδεηαη απζηεξά ζηηο πξνδηαγξαθέο αλαθνξάο ηεο Intel. Η PyCPU ζηεξίδεηαη ζην κεηαβιεηό κέγεζνο ηεο κλήκε, ή ησλ θαηαρσξεηώλ, ζε κηα πξνζπάζεηα λα ιεηηνπξγεί κε δεκόζηα ηα δεδνκέλα ηεο. Όπσο θαη κε θάζε θνκκάηη ηεο αξρηηεθηνληθήο PyEmu, ν θώδηθαο CPU πξνζπαζεί λα ρεηξηζηεί απηόλνκα όιεο απηέο ηηο απαξαίηεηεο ιεηηνπξγίεο. ηεο Η pycpu αλαγλσξίδεη έλα πιήζνο ζπλαξηήζεσλ. Σπλνπηηθά νη ζπλαξηήζεηο απηέο εθηεινύλ ιεηηνπξγίεο ζρεηηθέο κε ηελ αλάθηεζε ελόο δεηνύκελνπ κεηξώνπ κλήκεο, ή κε ηελ αλάζεζε ηηκήο ζε απηό, κε ηνλ ππνινγηζκό κηαο ζέζεο κλήκεο ή θαη ηεο αμίαο ηεο. Υπάξρνπλ, επίζεο ζπλαξηήζεηο γηα ηνλ θαζνξηζκό ησλ θαηάιιεισλ ζεκαηώλ CPU (ι.ρ. CF, OF, SF) γηα κηα αξηζκεηηθή πξάμε θαη ελεκέξσζεο ησλ ζεκαηώλ πνπ ρξεζηκνπνηνύληαη ζηελ νιίζζεζε(δει. SF, PF, θαη ZF). Ελδεηθηηθά αλαθέξσ ηηο get_register(register, size), set_memory(address, value, size) θαη set_shift_flags(result, size) Η θιάζε CPU δελ κπνξεί λα ρξεζηκνπνηεζεί άκεζα. Ο pyemu δηεθπεξαηώλεη όιεο ηηο θιήζεηο γηα ηελ εθηέιεζε θαη ηα αηηήκαηα ηεο κλήκεο. Η PyMemory ζα κπνξνύζε λα ραξαθηεξηζηεί σο ν ρεηξηζηήο κλήκεο ηνπ PyEmu, δηόηη νη αξκνδηόηεηεο ηνπ πεξηνξίδνληαη ζηελ αλάθηεζεο από ή απνζήθεπζεο ζηηο ζέζεηο κλήκεο. Απηή ε θαηεγνξία είλαη πνιύ βαζηθή γηα ζηελ πινπνίεζε. Η PyMemory βαζίδεηαη εμ νινθιήξνπ ζηηο εληνιέο πνπ δίλνληαη από ηνλ ρξήζηε. Δελ ιεηηνπξγεί αλεμάξηεηα από ηα άιια δύν κέξε ηνπ PyEmu, άιια παξακέλεη αδξαλείο κέρξηο όηη λα θιεζεί. Λεηηνπξγεί θξαηώληαο κηα θξπθή κλήκε ησλ ήδε αλαθηεκέλσλ ζειίδσλ κλήκεο ζε ηνπηθό επίπεδν. Τν γεγνλόο απηό ηεο δίλεη ηε δπλαηόηεηα λα εθαξκόδεη ηε δηαρείξηζε κλήκεο. 6

Η PyMemory δηαζέηεη πιεζώξα κεζόδσλ αλάθηεζεο θαη θξπθήο κλήκεο. Ελδεηθηηθά αλαθέξσ ηηο get_page() θαη get_memory(). Απηέο επηηξέπνπλ ζηελ PyMemory λα ειέγρεη εύθνια από πνύ πξνέξρνληαη ηα δεδνκέλα θαη πσο απηά απνζεθεύνληαη. Γηα παξάδεηγκα, αλ δελ ππάξρεη ζηελ θξπθή κλήκε κηα ζειίδα, ζα θιεζεί ε ζπλάξηεζε get_page(). Πξέπεη λα γίλεη ζαθέο ην γεγνλόο όηη PyMemory δηαηεξεί ην ηνπηθό αληίγξαθν μερσξηζηά από ηε κλήκε πξαγκαηηθώλ δηαδηθαζηώλ. Τν εξγαιείν PyEmu δελ έρεη πξόζβαζε ζηελ θξπθή κλήκε ηεο PyEmu. Απηό ζπκβαίλεη κε ζθνπό ηε δηαζθάιηζε όισλ ησλ ζειίδσλ πνπ ρξεζηκνπνηνύληαη από ηνλ εμνκνησηή θαηά ηε δηαδηθαζία ηεο απνζθαικάησζεο. Παξαηεξνύκε, ινηπόλ, όηη ζε πεξίπησζε ζθάικαηνο κηα θαιή ιύζε ζα ήηαλ ε απόξξηςε όισλ ησλ ζειίδσλ πνπ βξίζθνληαη ζηελ πξαγκαηηθή κλήκε θαη ε αληηθαηάζηαζε απηώλ από ηελ PyMemory. 4.2 Η σπήζη ηος PyEmu Η ρξήζε ηνπ PyEmu πξέπεη λα είλαη εύθνιε θαη απνηειεζκαηηηθή. Πεξηιακβάλεη ηε δεκηνπξγία αληηθεηκέλσλ, αλάθηεζε από θαη θαηαγξαθή ζηε κλήκε θαη εθηέιεζε. Σηεξίδεηαη κηα ινγηθή αθνινπζία ζπγθεθξηκέλσλ βεκάησλ ηελ επίηεπμε ησλ ζηόρσλ πνπ ν ρξήζηεο ζέηεη θαη πξνζπαζεί λα επηιύζεη κε ηε ρξήζε ηνπ εμνκνησηή PyEmu. Η πην βαζηθή δξάζε θαηά ηελ ρξήζε ηνπ PyEmu είλαη ε εθηέιεζε κηαο εληνιήο. Γηα ηελ αλάθηεζε απηήο ηελ εληνιήο ε δηαδηθαζία έρεη σο εμήο, κόιηο ε ε PyCPU αλαθηήζεη θαη αληηγξάςεη ηηο θαηάιιειεο ζέζεηο κλήκε ηνπ ηξέρνληα δείθηε δηεύζπλζεο πνπ ρεηξίδεηαη κηα ζπγθεθξηκέλε εληνιή θαη ηα παξαδίδεη αξρηθά ζηελ βηβιηνζήθε pydasm. Τν Pydasm καο επηηξέπεη λα απνθσδηθνπνηνύκε ζσζηά ηελ εληνιή. Απηή ε απιή ιεηηνπξγία είλαη ε νπζία ηεο PyEmu. Η εμππεξέηεζε δηαθόξσλ ζπλαξηήζεσλ, όπσο απηέο ησλ IDA Pro, Pydbg θαη Pefile ε απνθσδηθνπνίεζε βήκα- βήκα, επηηξέπεη ζηνλ εμνκνησηή ηελ απζαίξεηε απνθσδηθνπνίεζε ησλ νδεγηώλ. Ο PyEmu επηδηώθεη, ινηπόλ, λα είλαη εύθνιε ε επέθηαζε, κλήκεο θαη θώδηθα ρεηξηζκνύ πνπ έρνπλ πξν-δεκηνπξγεζεί θαη επηηξέπνπλ ηελ νκνηόκνξθε εκθάληζε θαη ηε ιεηηνπξγία όισλ ησλ νδεγηώλ. Η ρξήζε ηνπ εξγαιείνπ ηνπ PyEmu, σζηόζν έρεη θαη νξηζκέλα πξνβιήκαηα. Όπσο είπακε ν ρξήζηεο εληάζζεηαη ζηελ θιάζε ηνπ PyEmu θαη ζπλεξγάδεηαη κε ηηο παξερόκελεο ζπλαξηήζεηο ηνπ, αθξηβώο κε ηνλ ηξόπν πνπ νξίδεηαη από ηνλ PyEmu. Απηό ην ραξαθηεξηζηηθό πξνθαιεί πξνβιήκαηα θαηά ηε ζπγγξαθή ηνπ ζελαξίνπ ρξεζηκνπνηώληαο ηνλ PyEmu,. Γηα παξάδεηγκα, όηαλ εξγάδεηαη ζην IDA Pro, έλαο ρξήζηεο ζα ζέιεη λα ρξεζηκνπνηήζεηε ηελ θιάζε 7

IDAPyEmu θαζώο παξέρεη ηελ πξόζζεηε ππνζηήξημε πνπ ρξεηάδεηαη θαηά ηε δηάξθεηα ηεο εγθαηάζηαζεο. Καιό ζα ήηαλ, ινηπόλ, ν ρξήζηεο πξώηα λα δεκηνπξγεί θαη ηε δηθή ηνπο θιάζε εμνκνίσζεο. 5. Αξιοποίηζη ηος PyEmu ζηο ΤΜΠΤ Η εξγαζία απηή δελ απνζθνπεί ζηελ απξόζθνπηε εύξεζε εθαξκνγώλ ηνπ PyEmu ζην ηκήκα θαη έληαμεο ηεο Python ζηνλ νδεγό ζπνπδώλ. Παξαθάησ, αλαιύνληαη κεξηθά κόλν καζήκαηα όπσο απηό ηεο Αξρηηεθηνληθήο Υπνινγηζηώλ θαη ηνπ Δνκεκέλνπ Πξνγξακκαηηζκνύ, γηα ηα νπνία ελώ ζα κπνξνύζε θαλείο λα πεη πσο νη εθαξκνγή ηεο Python δελ κπνξεί λα ππάξμεη, όζνλ αθνξά ην εξγαζηεξηαθό κέξνο ησλ καζεκάησλ ζα δηαθαπζεί. Ωζηόζν, όπσο ζα δνύκε ππάξρνπλ πεξηπηώζεηο, πνπ ε ρξήζε ηεο δελ θξίλεηαη απαξαίηεηε. 5.1 Python, PyEmu και Ππογπαμμαηιζμόρ Με κηα γξήγνξε καηηά ζηνλ νδεγό ζπνπδώλ ηνπ Τκήκαηνο Μεραληθώλ Πιεξνθνξηθήο θαη Τειεπηθνηλσληώλ, ζα ζπλαληήζεη θαλείο καζήκαηα όπσο Δνκεκέλνο Πξνγξακκαηηζκόο, Αληηθεηκελνζηξαθήο Πξνγξακκαηηζκόο Ι θαη ΙΙ, ηα νπνία θαηαπηάλνληαη κε ηελ εθκάζεζε ησλ γισζζώλ πςεινύ επηπέδνπ C, C++ θαη Java αληίζηνηρα. Όζνλ αθνξά ην κάζεκα ηνπ Δνκεκέλνπ Πξνγξακκαηηζκνύ, ην νπνίν αλήθεη ζην πξώην ρεηκεξηλό εμάκελν, ζα κπνξνύζε θαλείο λα ην ζεσξήζεη ην ζεκαληηθόηεξν κάζεκα πξνγξακκαηηζκνύ ηνπ ηκήκαηνο. Είλαη γεγνλόο, πσο ην ππάξρνλ ζύζηεκα εηζαγσγήο ζηα Αλώηαηα Εθπαηδεπηηθά Ιδξύκαηα κε αληηθείκελν ηελ πιεξνθνξηθή, ηνλ πξνγξακκαηηζκό θαη ηα δίθηπα ηειεπηθνηλσληώλ, επηηξέπεη ηελ εηζαγσγή θνηηεηώλ, ρσξίο απαξαίηεηε πξνϋπόζεζε ηελ γλώζε βαζηθώλ δνκώλ πξνγξακκαηηζκνύ. Η γιώζζα C, σο βάζε άιισλ γισζζώλ πξνγξακκαηηζκνύ, όπσο C++ θαη C#, είλαη αλάγθε λα παξαηίζεηαη ζηνπο θνηηεηέο ηνπ πξώηνπ έηνπο απηόλνκε θαη αλαιπηηθή. Η παξάιιειε δηδαζθαιία ηεο python ή ε παξάζεζε όισλ απηώλ ησλ κέζσλ θαη ησλ πεξηνξηζκώλ γηα ηε ζπλεξγαζία Python θαη C, πηζαλόηαηα λα κελ κπνξεί λα θαηαλνεζεί πιήξσο από ηνπο θνηηεηέο, κε απνηέιεζκα ηελ απνζάξξπλζε ηνπο. 8

Πξνθαλέζηαηα, δελ ηζρύεη ην ίδην θαη γηα ηηο άιιεο δύν γιώζζεο όπσο αλαθέξζεθαλ παξαπάλσ. Δηόηη ηα καζήκαηα, ηνπ αληηθεηκελνζηξαθή πξνγξακκαηηζκνύ ζα κπνξνύζαλ λα αληηθαηαζηαζνύλ ή ζε αθόκα θαιύηεξε πεξίπησζε λα εκπινπηηζζνύλ κε ηελ εθκάζεζε ηεο Python θαη ηνπ PyEmu simulator. Εδώ, θύξην κέιεκα, ησλ θαζεγεηώλ είλαη ε αλάπηπμε ησλ ηθαλνηήησλ ηνπ θνηηεηή θαη ε δεκηνπξγία εξεζηζκάησλ ζρεηηθά κε ηελ ζπλεξγαζία θαη όρη κόλν ησλ γισζζώλ απηόλ. Επηπιένλ, πιήζνο ρξεζηώλ αλαξηνύλ θξηηηθέο ζην δηαδίθηπν εμπκλώληαο ηελ Python θαη ηα εξγαιεία ηεο. Υπνζηεξίδνπλ όηη ε γιώζζα απηή βνήζεζε ζηελ αλάπηπμε απνδνηηθόηεξσλ πξνγξακκάησλ κε ειάρηζην ρξόλν εθηέιεζεο. Κάπνπ εδώ πξέπεη λα ηνλίζνπκε όηη, ζθνπόο ηεο εθπαίδεπζεο ελόο κεραληθνύ, δελ είλαη απιά ε ιήςε γεληθώλ γλώζεσο, αιιά ε απόιπηε γλώζε θαη ε αλάπηπμε θξηηηθήο ηθαλόηεηαο κε ζθνπό ηελ νξζόηεξε θαη απνηειεζκαηηθόηεξε εθαξκνγή ηεο. 5.2 O PyEmu ζηην Απσιηεκηονική Υπολογιζηών Όπσο πξναλαθέξζεθε ε Python κέζσ ηνπ δηεξκελεπηή, έρεη ηελ ηθαλόηεηα εθηέιεζεο ησλ πξνγξακκάησλ ηεο εληνιή πξνο εληνιή. Από ηελ άιιε κεξηά ν εμνκνησηήο PyEmu, ιεηηνπξγεί σο ζπλδεηηθόο θξίθνο ησλ βαζηθόηεξσλ γηα ηελ αξρηηεθηνληθή ησλ ππνινγηζηώλ δνκώλ, ιακβάλνληαο σο παξάγνληα ηνλ ρξήζηε θαη ηα δεδνκέλα- πιεξνθνξίεο πνπ απηόο εηζάγεη. Αλ αλαηξέμεη, θαλείο ζηελ ειεθηξνληθή πιαηθόξκα ηνπ ηκήκαηνο eclass.uowm.gr. Θα παξαηεξήζεη, όηη ην εξγαζηήξην πινπνηείηαη ζε γιώζζα Assembly ζηνλ εμνκνησηή Emu8086. Εμ νξηζκνύ ε γιώζζα Assembly είλαη κηα γιώζζα πξνγξακκαηηζκνύ ρακεινύ επηπέδνπ γηα έλαλ ππνινγηζηή ή νπνηαδήπνηε άιιε πξνγξακκαηηδόκελε ζπζθεπή, ζηελ νπνία ππάξρεη κηα πνιύ ηζρπξή αληηζηνηρία κεηαμύ ηεο γιώζζαο θαη ησλ εληνιώλ θώδηθα κεραλήο ηεο αξρηηεθηνληθήο. Φαίλεηαη, ινηπόλ, ζηγά-ζηγά λα θηίδεηαη αλαπηύζζεηαη έλαο ζπλδεηηθόο θξίθνο κεηαμύ απηώλ ησλ δύν γισζζώλ. Όκσο, θάζε ζπκβνιηθή γιώζζα είλαη εηδηθά ζρεδηαζκέλε γηα κία ζπγθεθξηκέλε αξρηηεθηνληθή ππνινγηζηώλ. Η Python, όπσο, άιισζηε θαη νη πεξηζζόηεξεο γιώζζεο πςεινύ επηπέδνπ είλαη θνξεηή ζε πνιιά αξρηηεθηνληθά ζπζηήκαηα. Επηπιένλ, ην ραξαθηεξηζηηθό όηη είλαη γιώζζα ΕΛ/ΛΑΚ, ηελ θαζηζηά ηελ θαηαιιειόηεξε γηα ηελ αξρηηεθηνληθή ππνινγηζηώλ. Η ρξήζε ηνπ PyEmu καο, εμαζθαιίδεη ηελ δπλαηόηεηα ζηνλ ρξήζηε παξαθνινύζεζεο, ηόζν ησλ θαηαρσξεηώλ ηεο κλήκεο όζν θαη ηελ εθηέιεζε ησλ νδεγηώλ θαη ηελ απνηεικάησζε. 9

Τέινο, ζεσξώ απαξαίηεην λα αλαθέξσ, πσο δελ είλαη ιύζε ε πιήξεο αληηθαηάζηαζε ησλ Assembly θαη Emu8086 κε ηα αληίζηνηρα Python θαη PyEmu. Αθόκα θαη θάπνηνο αληηηάμεη, όηη κε ηελ Python ζα πινπνηνύληαη πξνγξάκκαηα κηθξόηεξα θαη πνιύ γξήγνξα ζηελ εθηέιεζε, κηα ηέηνηα πξάμε λα είλαη θαηαζηξνθηθή, γηα ηνπο κειινληηθνύο κεραληθνύο. Δελ είλαη δπλαηόλ, λα αγλννύλ έλα θνκκάηη ηόζν ζεκαληηθό ηνπ πξνγξακκαηηζκνύ. Όκσο, ε παξάιιειε επεμεξγαζία ησλ γισζζώλ απηώλ, κε ηελ πινπνίεζε, εξγαζηεξηαθώλ αζθήζεσλ ηόζν γηα ηνλ Emu8086 όζν θαη γηα ηνλ PyEmu, ζα βνεζήζεη ζηελ απνζαθήληζε ηεο δηαδηθαζίαο κεηάβαζεο από γιώζζεο πςεινύ επηπέδνπ ζε γιώζζα κεραλήο θαη αληίζηξνθα, κέζσ ησλ γισζζώλ ρακεινύ επηπέδνπ. 6. Σςμπεπάζμαηα Οινθιεξώλνληαο απηή ηε κηθξή κειέηε, όια δείρλνπλ όηη ε Python είλαη κία γιώζζα πξνγξακκαηηζκνύ πςεινύ επηπέδνπ πνπ κε ηελ εμνκνίσζή ηεο ζην εξγαιείν PyEmu, είλαη εθαξκόζηκε ζε ηκήκαηα ηεο πιεξνθνξηθήο, ηα νπνία ζρεηίδνληαη πεξηζζόηεξν κε ην πιηθό, παξά κε ην ινγηζκηθό. Τελ δπλαηόηεηα απηή, ηελ έρνπλ ειάρηζηεο γιώζζεο πξνγξακκαηηζκνύ, ελώ αθόκε ιηγόηεξα εξγαιεία όπσο απηό ηνπ PyEmu έρνπλ δεκηνπξγεζεί. Δεδνκέλνπ ηνπ απμεκέλνπ αληαγσληζκνύ ζηνλ εξγαζηαθό ηνκέα θαη ηεο αλάγθεο γηα εμεηδίθεπζε, ε Python ζε ζπλάξηεζε κε ην εξγαιείν PyEmu είλαη έλα ηζρπξό πξνζόλ γηα ηελ κειινληηθή επηηπρία θάζε κεραληθνύ. Είλαη κία λέα γιώζζα πξνγξακκαηηζκνύ πνπ ζπλερώο εμειίζζεηαη θαη πξνζαξκόδεηαη ζηα λέα δεδνκέλα. Θεσξώ, όηη ε γλώζε ησλ παξαπάλσ είλαη ππνρξεσηηθή, γηα θάζε θνηηεηή ηνπ ηκήκαηνο Μεραληθώλ Πιεξνθνξηθήο θαη Τειεπηθνηλσληώλ. 10

7.Αναθοπέρ [1] Παλεπηζηήκην Δπηηθήο Μαθεδνλίαο Πνιπηερληθή Σρνιή Τκήκα Μεραληθώλ Πιεξνθνξηθήο θαη Τειεπηθνηλσληώλ http://icte.uowm.gr/index.php?page=1 [2] Η επίζεκε ζειίδα ηεο Python http://www.python.org/ [3] Ειεύζεξν Λνγηζκηθό / Λνγηζκηθό Αλνηθηνύ Κώδηθα (ΕΛ/ΛΑΚ) http://www.ellak.gr/ [4] PyEmu: A multi-purpose scriptable IA-32 emulator https://www.blackhat.com/presentations/bh-usa-07/pierce/whitepaper/bhusa- 07-pierce-WP.pdf [5]IDAPython http://d-dome.net/idapython/ [6]Pydbg http://py.french.taggy.cz/pydbg-tutorial/ [7]Pefile https://code.google.com/p/pefile/ [8]Pydasm http://libdasm.googlecode.com/svn/trunk/pydasm/readme.txt 11