Institutional Repository
Technical University of Crete
EN  |  EL

Search

Browse

My Space

Dynamic analysis for Python

Gianni Gioel

Simple record


URIhttp://purl.tuc.gr/dl/dias/D9DEBC91-E6C1-4C6B-A643-F122C6FDFCF6-
Identifierhttps://doi.org/10.26233/heallink.tuc.105001-
Languageel-
Extent77 σελίδεςel
TitleΔυναμική ανάλυση για Pythonel
TitleDynamic analysis for Pythonen
CreatorGianni Gioelen
CreatorΓιαννη Γιοελel
Contributor [Thesis Supervisor]Ioannidis Sotiriosen
Contributor [Thesis Supervisor]Ιωαννιδης Σωτηριοςel
Contributor [Committee Member]Samoladas Vasilisen
Contributor [Committee Member]Σαμολαδας Βασιληςel
Contributor [Committee Member]Christou Georgiosen
Contributor [Committee Member]Χρηστου Γεωργιοςel
PublisherΠολυτεχνείο Κρήτηςel
PublisherTechnical University of Creteen
Academic UnitTechnical University of Crete::School of Electrical and Computer Engineeringen
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 SummaryDynamic 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 ItemDiploma Worken
Licensehttp://creativecommons.org/licenses/by/4.0/en
Date of Item2025-10-09-
Date of Publication2025-
SubjectΔυναμική ανάλυσηel
SubjectDynamic analysisen
Bibliographic CitationΓιοέλ Γιάννη, "Δυναμική ανάλυση για Python", Διπλωματική Εργασία, Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών, Πολυτεχνείο Κρήτης, Χανιά, Ελλάς, 2025el
Bibliographic CitationGioel Gianni, "Dynamic analysis for Python", Diploma Work, School of Electrical and Computer Engineering, Technical University of Crete, Chania, Greece, 2025en

Available Files

Services

Statistics