RElax 


מספר פרויקט: 141101

שמות הסטודנטים המציגים:
אלעד לוז
חן סבירסקי

שם הפרויקט: RElax  

שם המנחה: פרופ' שמואל טישברוביץ

שם הסדנה: סדנת צה"ל

 

תקציר הפרויקט:

הפרויקט הינו כלי שיתופי עבור reverse-engineering (RE) של קוד תוכנה, המציע פתרון אלגוריתמי ייחודי שלא קיים בשוק. מלאכת ה-RE  היא תהליך מחקרי המעסיק מומחי אבטחה למטרות שונות כגון האקינג, מחקר תוכנות זדוניות, חיקוי, העתקה של קוד ועוד.

התהליך לרוב מורכב, ארוך וכרוך בפענוח עשרות אלפי שורות של קוד מכונה (אסמבלי). מאחר והמחקר מתבצע על קוד שעבר קומפילציה, אין למשתנים או לפונקציות שבו שמות בעלי משמעות ועיקר התהליך מתמקד בפענוח משמעותם ותיוגם מחדש.

השוק מציע כיום שני סוגי כלים להצעות אוטומטיות של תיוג: הראשון מבצע השוואה חכמה וגמישה (אך בסיבוכיות גבוהה) ומאפשר השוואת חתימות של מקטעי פונקציות בין שני קבצים. דוגמה לכלי כזה היא Zynamics BinDiff. הסוג השני מבצע השוואה נאיבית ופשוטה (בסיבוכיות נמוכה) של מקטעי פונקציות בקובץ למול מאגר רחב של פונקציות. דוגמה לכלי כזה היא Crowdstrike CrowdRE. השילוב בין השיטות בכדי לקבל השוואה חכמה וגמישה בסיבוכיות נמוכה למול מאגר רחב של פונקציות אינו פרקטי כיום מפאת הצורך במשאבי חישוב עצומים.

הפרויקט שלנו הוא פתרון אלגוריתמי לבעיה, אשר מאפשר גם את עיקרון ההשוואה החכמה והגמישה וגם עבודה מול מאגר עצום של פונקציות, וכל זאת בסיבוכיות זמן ריצה נמוכה ביותר. מימשנו את האלגוריתם אשר הצענו, בדקנו את ביצועיו (על מאגרי ענק), ומימשנו תוסף לתוכנת ה- RE הפופולארית בשוק - IDA.

אלגוריתם התיוג המהיר מתבסס על למידה מוקדמת של פונקציות קוד מתוך מאגרים של עשרות מיליוני פונקציות. הלמידה מומשה כתהליך שאינו תלוי בארכיטקטורת הקוד ומתבססת על שיטות מתקדמות מתחומים כגון unsupervised machine learning, data mining, בינה מלאכותית ועוד. זמן הריצה של הלמידה נמדד בימים והתרחש על שרת ייעודי חזק שהונגש לנו במיוחד.

היכולת להעריך דמיון בין שתי פונקציות קוד היא שימושית ונדרשת בתחומים רבים במדעי המחשב, ולהערכתנו האלגוריתם שלנו יספק קירוב טוב דיו על מנת להיות רלוונטי לחלקם.