URI | http://purl.tuc.gr/dl/dias/D9DEBC91-E6C1-4C6B-A643-F122C6FDFCF6 | - |
Identifier | https://doi.org/10.26233/heallink.tuc.105001 | - |
Language | el | - |
Extent | 77 σελίδες | el |
Title | Δυναμική ανάλυση για Python | el |
Title | Dynamic analysis for Python | en |
Creator | Gianni Gioel | en |
Creator | Γιαννη Γιοελ | el |
Contributor [Thesis Supervisor] | Ioannidis Sotirios | en |
Contributor [Thesis Supervisor] | Ιωαννιδης Σωτηριος | el |
Contributor [Committee Member] | Samoladas Vasilis | en |
Contributor [Committee Member] | Σαμολαδας Βασιλης | el |
Contributor [Committee Member] | Christou Georgios | en |
Contributor [Committee Member] | Χρηστου Γεωργιος | el |
Publisher | Πολυτεχνείο Κρήτης | el |
Publisher | Technical University of Crete | en |
Academic Unit | Technical University of Crete::School of Electrical and Computer Engineering | en |
Academic Unit | Πολυτεχνείο Κρήτης::Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών | el |
Content Summary | Η δυναμική ανάλυση προγραμμάτων αποτελεί μια κρίσιμη τεχνική για την κατανόηση, παρακολούθηση και τον έλεγχο της συμπεριφοράς εφαρμογών κατά τον χρόνο εκτέλεσης. Στην παρούσα διπλωματική εργασία παρουσιάζεται το Cerbex, ένα νέο πλαίσιο δυναμικής ανάλυσης που στοχεύει ειδικά στη γλώσσα προγραμματισμού Python. Το εργαλείο αξιοποιεί τον μηχανισμό εισαγωγών της Python ώστε να παρεμβάλλει κώδικα παρακολούθησης κατά τη φόρτωση των βιβλιοθηκών, εισάγοντας άγκιστρα και περιτυλίγματα (wrappers) σε συναρτήσεις χωρίς να τροποποιεί τον πηγαίο κώδικα. Συνδυάζοντας ενσωμάτωση κώδικα παρακολούθησης (instrumentation) στο επίπεδο εισαγωγής Python αρθρωμάτων και με την αξιοποίηση του μηχανισμού sys.setprofile για C-επεκτάσεις, το Cerbex παρέχει κάλυψη τόσο στον Python κώδικα όσο και σε βιβλιοθήκες χαμηλού επιπέδου, όπως οι math, numpy και pandas. Ο πυρήνας του Cerbex υποστηρίζει δύο διακριτές λειτουργίες: στη λειτουργία μάθησης καταγράφει τα γεγονότα εκτέλεσης και τις εξαρτήσεις των αρθρωμάτων σε αρχεία όπως τα events.json και dependencies.json, ενώ στη συνέχεια τα συνδυάζει για να παραχθεί το allowlist.json. Στη λειτουργία επιβολής αξιοποιεί το ενιαίο αυτό αρχείο ώστε να αποτρέπει μη εξουσιοδοτημένες εισαγωγές και κλήσεις συναρτήσεων σε πραγματικό χρόνο. Παράλληλα, οι αναλύσεις εξάγουν πρόσθετα δεδομένα όπως αρχεία perf.log για επιδόσεις και types.log για τύπους επιστροφής. Η αρχιτεκτονική του εργαλείου είναι αρθρωτή, βασισμένη σε πρόσθετα εργαλεία ανάλυσης, επιτρέποντας την εύκολη επέκταση με νέες μορφές ελέγχου. Ενδεικτικά, το PerfAnalyzer καταγράφει χρόνους εκτέλεσης συναρτήσεων, ενώ το TypeExtractor συλλέγει τύπους επιστροφής, δείχνοντας την ευελιξία της προσέγγισης.
Η αξιολόγηση του Cerbex καταδεικνύει ότι το εργαλείο εισάγει αισθητή σχετική επιβάρυνση σε μικρής κλίμακας ή βραχύβιες εκτελέσεις, όπου το σταθερό κόστος του μηχανισμού ενσωμάτωσης γίνεται κυρίαρχο.
Αντίθετα, σε πιο σύνθετες εφαρμογές, μεγάλα πλαίσια και υπολογιστικά εντατικά
σενάρια, η σχετική επιβάρυνση μειώνεται σημαντικά, με αποτέλεσμα το Cerbex να
αποδίδει ιδιαίτερα καλά. Σε τέτοια περιβάλλοντα, η δυνατότητα για ορατότητα,
επιβολή πολιτικών και εις βάθος κατανόηση της εκτέλεσης συνδυάζεται με
ικανοποιητική απόδοση, καθιστώντας το εργαλείο ιδανικό για μεσαία και βαριά φορτία. | el |
Content Summary | Dynamic program analysis is a critical technique for understanding, monitoring, and controlling the behavior of applications during runtime. This thesis presents Cerbex, a new dynamic analysis framework specifically targeting the Python programming language. The tool leverages Python’s import mechanism to interpose monitoring code during library loading, inserting hooks and wrappers around functions without modifying the source code. By combining instrumentation at the Python module import level and with the use of the sys.setprofile mechanism for C extensions, Cerbex provides coverage across both Python code and low-level libraries such as math, numpy, and pandas.
The core of Cerbex supports two distinct modes of operation: in learning mode, it records execution events and module dependencies into files such as events.json and dependencies.json, which are then combined to produce allowlist.json. In enforcement mode, this consolidated file is used to prevent unauthorized imports and function calls in real time. In parallel, the analyses generate additional logs, including perf.log for performance and types.log for return types. The tool’s architecture is modular, based on pluggable analyzers, enabling easy extension with new forms of control. For instance, the PerfAnalyzer logs function execution times, while the TypeExtractor collects return types—demonstrating the flexibility of the approach.
The evaluation of Cerbex shows that the tool introduces a noticeable relative overhead in small-scale or short-lived executions, where the fixed cost of the instrumentation mechanism dominates. In contrast, in more complex applications, large frameworks, and computationally intensive scenarios, the relative overhead decreases significantly, allowing Cerbex to perform particularly well. In such environments, the ability to provide visibility, enforce policies, and achieve in-depth understanding of execution is combined with satisfactory performance, making the tool well-suited for medium and heavy workloads. | en |
Type of Item | Διπλωματική Εργασία | el |
Type of Item | Diploma Work | en |
License | http://creativecommons.org/licenses/by/4.0/ | en |
Date of Item | 2025-10-09 | - |
Date of Publication | 2025 | - |
Subject | Δυναμική ανάλυση | el |
Subject | Dynamic analysis | en |
Bibliographic Citation | Γιοέλ Γιάννη, "Δυναμική ανάλυση για Python", Διπλωματική Εργασία, Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών, Πολυτεχνείο Κρήτης, Χανιά, Ελλάς, 2025 | el |
Bibliographic Citation | Gioel Gianni, "Dynamic analysis for Python", Diploma Work, School of Electrical and Computer Engineering, Technical University of Crete, Chania, Greece, 2025 | en |