בפשטות, פירוק הוא ההיפוך של הידור: תרגום קובץ הפעלה לשפה ברמה גבוהה יותר.
נניח שאתה מאבד את המקור של פרויקט דלפי ויש לך רק את הקובץ ההפעלה: הנדסת רוורס (פירוק) שימושית אם המקורות המקוריים אינם זמינים.
האם, "מקורות לא זמינים", האם זה אומר שנוכל לפרק פרויקטים של דלפי של אנשים אחרים? ובכן, כן ולא ...
האם פירוק אמיתי אפשרי?
לא ברור שלא. פירוק אוטומטי לחלוטין אינו אפשרי - שום מפענח לא יכול היה לשחזר בדיוק את קוד המקור.
כאשר נערך פרויקט של דלפי ומקושר לייצור קובץ הפעלה עצמאי, מרבית השמות המשמשים בתוכנית מומרים לכתובות. אובדן שמות זה פירושו שמפענח יצטרך ליצור שמות ייחודיים לכל הקבועים, המשתנים, הפונקציות והנהלים. גם אם מושגת מידה מסוימת של הצלחה, "קוד המקור" שנוצר חסר שמות משתנים ופונקציות משמעותיות.
ברור כי תחביר של שפת המקור כבר לא קיים בהפעלה. יהיה קשה מאוד למפרק לפרש את סדרת ההוראות לשפת מכונה (ASM) שקיימת בקובץ הפעלה ולהחליט מה הייתה הוראות המקור המקוריות.
מדוע ומתי להשתמש בפירוק
ניתן להשתמש בהנדסת הפוך מכמה סיבות, שחלקן הן:
- שחזור קוד המקור שאבד
- העברת יישומים לפלטפורמת חומרה חדשה
- קביעת קיומם של וירוסים או קוד זדוני בתוכנית
- תיקון שגיאה כאשר הבעלים של היישום אינו זמין לביצוע התיקון.
- שחזור קוד המקור של מישהו אחר (כדי לקבוע למשל אלגוריתם).
האם זה חוקי?
הנדסת הפוך אינה מפצחת, אם כי לעיתים קשה לשרטט את הקו הדק בין שני אלה. תוכנות מחשב מוגנות על ידי חוקי זכויות יוצרים וסימנים מסחריים. במדינות שונות יש חריגים שונים לזכויות בעל זכויות היוצרים. הנפוצים ביותר קובעים שזה בסדר לפרק: למטרות הפרשנות כאשר מפרט הממשק לא הושג, עבור למטרות תיקון שגיאות כאשר בעל זכויות היוצרים אינו זמין לבצע את התיקון, לקביעת חלקים מהתוכנית שאינם מוגנים על ידי זכויות יוצרים. כמובן שעליכם להיזהר מאוד / צרו קשר עם עורך הדין שלכם אם אתם בספק אם מותר לכם לפרק את קובץ ה- exe של התוכנית.
הערה: אם אתם מחפשים סדקים של דלפי, מחוללי מפתח או סתם מספרים סידוריים: אתם באתר הלא נכון. אנא זכור שכל מה שתמצא כאן כתוב / מוצג למטרות חקר / חינוך בלבד.
נכון לעכשיו, בורלנד אינה מציעה שום מוצר שמסוגל לפרק קובץ הפעלה (.exe) או "היחידה הידור של דלפי" (.dcu) חזרה לקוד המקור המקורי (.pas).
דלפי יחידה מורכבת (DCU)
כאשר נערך פרויקט של דלפי או מפעיל נוצר קובץ יחידה מורכבת (.pas). כברירת מחדל הגירסה הידועה של כל יחידה מאוחסנת בקובץ בפורמט בינארי נפרד עם שם זהה לקובץ היחידה, אך עם סיומת ה- .DCU. לדוגמה unit1.dcu מכיל את הקוד והנתונים המוצהרים בקובץ unit1.pas.
משמעות הדבר היא שאם יש לך מישהו, למשל, מקור מורכב מרכיב כל שעליך לעשות הוא להפוך אותו ולקבל את הקוד. שגוי. פורמט קובץ DCU אינו מתועד (פורמט קנייני) ועשוי להשתנות מגירסה לגירסה.
אחרי המהדר: דלפי הנדסת הפוך
אם תרצה לנסות לפרק קובץ הפעלה של דלפי, אלה כמה מהדברים שאתה צריך לדעת:
קבצי מקור של תוכניות דלפי מאוחסנות בדרך כלל בשני סוגים של קבצים: קבצי קוד ASCII (.pas, .dpr) וקבצי משאבים (.res, .rc, .dfm, .dcr). קבצי Dfm מכילים את הפרטים (המאפיינים) של האובייקטים הכלולים בטופס. בעת היצירה exe, דלפי מעתיק מידע בקובצי .mdf לקובץ הקוד המוגמר .exe. קבצי טפסים מתארים כל רכיב בטופס שלך, כולל הערכים של כל המאפיינים העקשניים. בכל פעם שאנו משנים את מיקום הטופס, כיתוב של כפתור או מקצה נוהל אירוע לרכיב, דלפי כותב את השינויים האלה בקובץ DFM (לא את קוד הליך האירוע - זה מאוחסן ב- pas / dcu קובץ). על מנת לקבל את ה- "dfm" מקובץ ההפעלה עלינו להבין איזה סוג משאבים מאוחסנים בתוך הפעלה Win32.
כל התוכניות שנערכו על ידי דלפי כוללות את הסעיפים הבאים: CODE, DATA, BSS, .idata, tls, .rdata, .rsrc. החשובים ביותר מנקודת מבט של פירוק הם הקטעים CODE ו- .rsrc. בתוך ה "הוספת פונקציונליות לתוכנית דלפי"מאמר מוצג כמה עובדות מעניינות על פורמט ההפעלה של דלפי, מידע בכיתה ומשאבי DFM: כיצד להקצות מחדש אירועים שיטפלו על ידי מטפלי אירועים אחרים המוגדרים באותה צורה. עוד יותר: כיצד להוסיף מטפל אירועים משלך, להוסיף את הקוד להפעלה, שישנה את הכיתוב של כפתור.
בין סוגים רבים של משאבים המאוחסנים בקובץ exe, RT_RCDATA או המשאב המוגדר על ידי יישום (נתונים גולמיים) מכיל את המידע שהיה בקובץ DFM לפני ההרכבה. על מנת לחלץ את נתוני DFM מקובץ exe נוכל לקרוא ל- שמות EnumResource פונקצית API... למידע נוסף על חילוץ DFM מהפעלה, ראה: קידוד סייר דלפי מאמר.
אומנות הנדסת ההפוך הייתה באופן מסורתי ארץ מכשפים טכניים, המכירה את שפת ההרכבה והבאגים. הופיעו מספר מפקחי דלפי המאפשרים לכל אחד, אפילו עם ידע טכני מוגבל, להפוך את מהנדסי ההפעלה של מרבית קבצי ההפעלה של דלפי.
אם אתה מעוניין בתוכניות דלפי להנדסת רוורס אני מציע לך להעיף מבט ב"מפרקים "הבאים הבאים:
מפענח של קבצי הפעלה (EXE) ו- ספריות דינמיות (DLL), נכתב בדלפי והוצא להורג בסביבת Windows32. מטרת הפרויקט הסופי היא פיתוח התוכנית המסוגלת לשחזר את מרבית דלפי הראשונית קודי מקור מהקובץ הידור אך IDR, כמו גם מפרקי דלפי אחרים, עדיין לא יכולים לעשות זאת. עם זאת, IDR נמצא במעמד משמעותי כדי להקל על תהליך כזה. בהשוואה למפרקי דלפי אחרים ידועים, התוצאה של ניתוח IDR היא בעלת השלמות והאמינות הגדולות ביותר.
Revendepro מוצא כמעט את כל המבנים (כיתות, סוגים, נהלים וכו ') בתוכנית, ומייצר את הייצוג הפאשלי, נהלים ייכתבו במכלול. בגלל מגבלה מסוימת במכלול לא ניתן לחדש את הפלט שנוצר. המקור לפירוק זה זמין באופן חופשי. לרוע המזל זהו מפענח היחיד שלא הצלחתי להשתמש בו - הוא מתבקש לחריג כשאתה מנסה לפרק חלק מהקובץ ההפעלה של דלפי.
מציל מקור EMS הוא יישום אשף קל לשימוש שיכול לעזור לכם לשחזר את קוד המקור שאבד. אם אתה מאבד את מקורות הפרויקט של Delphi או C ++ Builder, אך ברשותך קובץ הפעלה, כלי זה יכול להציל חלק ממקורות שאבדו. המציל מייצר את כל טפסי הפרוייקט ומודולי הנתונים עם כל המאפיינים והאירועים שהוקצו. להליכי אירוע שהופקו אין גוף (זה לא מפענח), אלא יש כתובת של קוד בקובץ ההפעלה. ברוב המקרים מציל מציל 50-90% מזמנך לשיקום הפרוייקט.
DeDe היא תוכנית מהירה מאוד שיכולה לנתח הפעלות שהוכנו עם דלפי. לאחר הפירוק DeDe נותן לך את הדברים הבאים:
- כל קבצי ה- dfm של היעד. תוכל לפתוח ולערוך אותם באמצעות דלפי.
- כל השיטות שפורסמו בקוד ASM שהוגדרו היטב עם אזכורים למחרוזות, שיחות פונקציה מיובאות, שיחות שיטות מחלקות, רכיבים ביחידה, Try-Except ו- Try-End חסימה. כברירת מחדל, DeDe מאחזר רק את מקורות השיטות שפורסמו, אך אתה יכול גם לעבד הליך אחר בהפעלה אם אתה יודע את קיזוז ה- RVA באמצעות הכלים | פרק את תפריט Proc.
- הרבה מידע נוסף.
- אתה יכול ליצור תיקיית פרויקטים של דלפי עם כל קבצי ה- dfm, pas, dpr. הערה: קבצי pas מכילים את קוד ה- ASM שהוגש לעיל היטב. אי אפשר לחבר אותם מחדש!