pe file structure

cyberia2ooo

New member
pe file structure

בוקר טוב... אני עכשיו מנסה להכיר יותר טוב את מבנה קובץ הexecutble בwindows, קובץ הpe. עכשיו נתקלתי במשהו שלא מצאתי לו הסבר בשום מקום. אחרי הpe header עצמו, ואחרי הsection table אבל לפני הsection הראשון יש לי מרווח די גדול של בתים(416) שאני לא מצליח לחבר אותם לשום section קיים ולשום דבר אחר. הבלוק הזה מכיל בהתחלה קצת מידע בינארי, ואז שמות של הdllים שהם imported ע"י הexecutble ואז 0 עד תחילת הsection הראשון. השמות שם הם לא השמות שמשמשים כhints לטעינת dllים, השמות שמשמשים בטעינה נמצאים במקום אחר (לפחות כשאני מחפש אותם לפי הIAT) (אני מניח שתחילת הsection היא בהיסט של PointerToRawData ,מהsection header, מתחילת הקובץ)
 

voguemaster

New member
אתה יכול להעלות את הקובץ ?

או שזה איזה קובץ סודי כזה ?
מה שלדעתי קורה זה שעשית טעות חישובית כלשהי. אחרי ה-PE HEADER הרגיל יש את ה-OPTIONAL HEADER שאורכה 224 בתים (בדיוק) והיא מכילה נתונים כאלו ואחרים (שדות שהם ULONG ו-USHORT וכד'), פלוס בסוף שלה אתה יכול למצוא את ה-data directories. אחרי ה-PE OPTIONAL HEADER, בקפיצה הבאה ל-alignment של הקובץ (בד"כ 4096 בתים) ניתן למצוא את ה-SECTION הראשון. לדעתי פשוט לא התחשבת בכל הגורמים האפשריים שניתן לקרוא מה-HEADER אבל זה רק הימור
. אווף, המשחקים האלה עם ה-PE פשוט מרגיזים. זה מזכיר לי שבעבודה הקודמת שלי הייתי צריך לכתוב סקריפט PERL שיודע למצוא את ה-resource section, לעבור על העץ של ה-resources (הם מנוהלים ב n-tree) ולהוציא משם את גרסת הקובץ.
משימה חמודה...
 

cyberia2ooo

New member
זה אכן קובץ מסווג

c:\windows\system32\calc.exe אבל אל תספר לאף אחד :) לא.. זו לא טעות חישובית. בnt optional header כתוב שהheader נגמר ב400h אבל הsection table נגמר ב260h ובין 260 ל400 יש את הרשימה הזו... אחרי שהתסכלתי קצת על הdirectory table ראיתי שזה מתאים לrva של bound import table אבל לאיפה אני יכול להכניס את זה? (בהנחה נגיד שאני טוען את כל הקובץ לזכרון, אבל לא בקריאה אחת, אני לא רוצה למפות אותו)
 

cyberia2ooo

New member
שאני אשקר?

תבדוק... תפתח אותו עם pe explorer הוא יגיד לך שה bound import שלו יושב בrva של 0x1000260 כאשר הrva הזה לא נופל תחת אף section אחר... (בכלל לפי הpe header הheader נגמר ב0x400)
 

voguemaster

New member
לא בדקתי את הנושא מחוסר זמן

אבל, ניסית לבדוק את ה-data directories ? בגדול הם אלו שבסופו של דבר קובעים איפה כל דבר יושב, למרות שיש ב-HEADER מידע על ה-SECTIONים. תשמע מה שאתה אומר די מוזר ונשמע כמו משהו לא טיפוסי בעליל. אין לי כרגע הסבר אבל אני יכול למצוא לך אחד
 
למעלה