DedSec Project

Στατικά ευρήματα και μετρημένη συμπεριφορά — DedSec Project

Στατική και δυναμική ανάλυση: παρατήρηση έναντι εκτέλεσης Μοντέλο και όρια συμπερασμάτων Η στατική ανάλυση εξετάζει bytes και δομή χωρίς εκτέλεση, ενώ η δυναμική παρατηρεί συγκεκριμένη…

Στατική και δυναμική ανάλυση: παρατήρηση έναντι εκτέλεσης

Μοντέλο και όρια συμπερασμάτων

Η στατική ανάλυση εξετάζει bytes και δομή χωρίς εκτέλεση, ενώ η δυναμική παρατηρεί συγκεκριμένη συμπεριφορά σε ελεγχόμενο περιβάλλον. Καμία δεν καλύπτει τα πάντα. Μια συμβολοσειρά σε binary δεν αποδεικνύει ότι εκτελείται η αντίστοιχη λειτουργία· ένα runtime test δεν καλύπτει όλους τους κλάδους.

Αυτοτελές δοκιμαστικό δείγμα

import ast
source = """def choose(flag):
    if flag:
        return "red"
    return "blue"
"""
tree = ast.parse(source)
names = [n.name for n in ast.walk(tree) if isinstance(n, ast.FunctionDef)]
assert names == ["choose"]  # static finding
space = {}
exec(compile(tree, "<owned-toy-source>", "exec"), space)
assert space["choose"](True) == "red"
assert space["choose"](False) == "blue"

Βήματα έρευνας και ελέγχου

Εκτέλεσε μόνο δικό σου ή προηγουμένως ελεγμένο κώδικα. Για άγνωστα binaries προτίμησε στατική εξέταση και απομονωμένα περιβάλλοντα χωρίς πραγματικά credentials και με αναλώσιμα δεδομένα. Σημείωσε χωριστά τι υπάρχει στη δομή και τι πράγματι εκτελέστηκε. Το coverage δεν εγγυάται όλα τα paths.

Πρακτικό εργαστήριο

Πρόσθεσε τρίτο κλάδο και δοκίμασε σκόπιμα μόνο τους δύο. Φτιάξε πίνακα με τις δομικά δυνατές εκβάσεις και τις παρατηρημένες. Εξήγησε γιατί ένας κρυφός side effect δεν εντοπίζεται από απλή στατική λίστα function names.

Πίνακας κάλυψης αντί για μία επιτυχημένη εκτέλεση

Γράψε δικό σου parser με τρία branches: valid, empty, malformed. Η στατική ανάλυση εντοπίζει τις πιθανές διαδρομές, αλλά αν τρέξεις μόνο τα δύο πρώτα fixtures έχεις παρατηρήσει δύο αποτελέσματα, όχι όλα. Πρόσθεσε τρίτο test και σύγκρινε το πραγματικό αποτέλεσμα με την πρόβλεψη. Η στατική προσέγγιση μπορεί να μη γνωρίζει τι θα γίνει μέσω reflection ή runtime configuration· η δυναμική προσέγγιση δεν καλύπτει κώδικα που δεν εκτελέστηκε. Κατέγραψε είσοδο, μεταβλητές περιβάλλοντος και έκδοση εργαλείων χωρίς να ισχυρίζεσαι πλήρη κάλυψη από ένα μόνο run.