GammaCyber

כתיבת קוד — שיעור 44

Reverse Engineering — Ghidra, IDA ו-Binary Analysis

כל 1 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.

T3 · בינוני400 נק'~25 דק'algorithmic
פרסור כותרת ELF
ממש parse_elf(data) שמפרק את כותרת ה-ELF מרצף בתים. בדוק magic (0x7F 'E' 'L' 'F') → אם שגוי החזר {'magic_ok': False}. אחרת חלץ: class (בית 4: 1→32, 2→64), endian (בית 5: 1→'little', 2→'big'), ו-type (בתים 16–17 כ-uint16 לפי ה-endianness: 1→'REL', 2→'EXEC', 3→'DYN', 4→'CORE'). החזר מילון.
דוגמאות
parse_elf(bytes של בינארי PIE 64-bit) → {'magic_ok':True,'class':64,'endian':'little','type':'DYN'}
parse_elf(b'NOPE...') → {'magic_ok': False}
פתרון-ייחוס פרסור כותרת ELF ›
def parse_elf(data) -> dict: d = bytes(data) if len(d) < 18 or d[:4] != b'\x7fELF': return {'magic_ok': False} cls = {1:32, 2:64}.get(d[4]) endian = {1:'little', 2:'big'}.get(d[5]) t = int.from_bytes(d[16:18], 'little' if endian=='little' else 'big') typ = {1:'REL', 2:'EXEC', 3:'DYN', 4:'CORE'}.get(t, 'UNKNOWN') return {'magic_ok': True, 'class': cls, 'endian': endian, 'type': typ}
הפתרון נשמר מקומית אוטומטית.