Logo

רד-בורד: ארכיון

ראשי > תיכנות > הרצה של EXE מתוך הזכרון.

21/06/2007 23:27:38 keyme
שלום, אני חדש כאן. באתי בתקווה שיעזרו לי =)

בקיצור, אני צריך להפעיל EXE מבוסס win32 מתוך הזכרון, בלי ליצור / להשתמש בקובץ על הכונן הקשיח. (או כל דבר אחר שנגיש דרך ה file system ).
ז"א CreateProcess רגיל לא יכול לעזור לי כאן. יותר מזה, אני מעדיף לא לעשות Process חדש בכלל. אלא פשוט לכוון את ה Instruction Pointer למקום הנכון, ולתת לזה לרוץ. (בצורה הכי אבסטראקטית של האמירה הנ"ל, ב win32 זה לא ממש פשוט כ"כ).

ניסיתי דיי הרבה בעצמי, אבל לא הלך לי.
אם לא תעזרו לי עם פתרון מלא, לפחות תכוונו אותי. למשל, איך מוצאים את ה entry point של קובץ EXE ?[ההודעה נערכה על-ידי keyme ב-21/06/2007 23:29:48]
22/06/2007 11:10:45 keyme
מישהו ?
זה דיי דחוף ..
22/06/2007 13:17:32 devil kide
יש לי רעיון, אני לא יודע עד כמה זה אפשרי מבחינת ביצוע.
תנסה להכניס את התוכנית לאיזור מסויים ב code segment.
משם להעביר ל BX את מיקום הקוד שאתה רוצה להריץ, ואז לעשות
jmp [bx] כדי לקפוץ למקום שנמצא ב BX.
22/06/2007 13:45:02 Hypathia
קרא על dll injection

devil kide, סגמנט הקוד הוא read only. אבל וינדוס מרשה להריץ קוד מהסטאק.
22/06/2007 14:48:05 devil kide
איך ניתן להריץ קוד מהסטאק?
זה נראה לי קצת בעייתי.
הרי לאחר כל פעולה ה SP משנה את עצמו ולא מתייחס למה שהיה מתחתיו (או מעליו, תלוי איך תיחסו לזה).
אז אם נניח אני עושה באמצע התוכנית JMP לאיזור מסויים שכבר בוצע, הוא נחשב כאילו הוא לא בתוך המחסנית.
ואם אני מבצע פעולות על המחסנית (call,pop,push) זה עלול לפגוע בתפקוד של התוכנית, לא?
22/06/2007 15:12:24 keyme
להריץ קוד מהסטאק זה מה שאני מנסה לעשות. (נניח שתוכן הקובץ נמצא במערך).

איך אני מוצא את ה entry point של התוכנה מה header שלה ? אני יודע שהוא שם, אבל איפה בדיוק ?

חוץ מזה, הסטאק הוא הפוך, לא ? אם אני אוצה להריץ קוד מהסטאק, אני צריך להפוך את סדר המערך ?
22/06/2007 18:07:18 Hypathia
הסטאק הוא וקטור הנמתח מטה. הסטרינג עם השאללקול נכנס לסטאק כשהוא נמתח מעלה. הוראות ביצוע נקראות גם כן, בכוון מעלה הזכרון.
מי שמענין אותך הוא EIP והכתובת בו מתחיל הקוד שלך.
ESP לא משתנה עם כל פעולה, אלא אם אתה מכניס או פורק סחורה מהמחסנית.

דביל קייד, אתה בטוח שאתה מבין ומסוגל לדמיין את מה שאתה אומר? כי אני לא.

keyme, תגדיר את המטרה לשמה אתה צריך את כל זה.
22/06/2007 22:14:03 SkOd
בטח איזה root kit...
22/06/2007 22:59:32 keyme
הצפנה של תוכניות. בהתחלה התוכנית במערך היא מוצפנת. קיים אלגוריטם שפותח את ההצפנה.
אבל הכי חשוב, לא להשאיר סימנים של התוכנית על ה file system... אחרת זה פשוט הורס את כל הרעיון.

זה לא rootkit או משהו ויראלי ... אפשר להשמש בזה להעברת מידע, או כעוד licensing scheme נגד crackerים.

אם גם להגן על התוכנה נגד int 03h , אפשר גם למנוע debugging. לכן הדרך האחרונה לראות את הקוד תהיה שימוש ב memory editor .

יחסית לכל מה שקיים היום, זאת הגנה דיי טובה.

אבל שוב, אמרת "הכתובת בו מתחיל הקוד שלך". איך אני מוצא אותה בקובץ EXE ?
זה לא סתם שאללקוד. ל EXE יש header , ו resources , ועוד הרבה זבל בפנים. איך אני מוצא את נק’ הכניסה לקוד ?
23/06/2007 02:55:19 HLL
אני לא מבין למה אתה צריך את ה EP של התוכנית
אבל אם אתה רוצה להשיג אותו
תקרא על מבנה ה PE של חלונות ’Portable Executable’ (חחחח My Ass עלק...)
תקרא כמו שיפתחיה אמרה לך - DLL Injection או לחילופין - רעיון דומה - Remote Code Injection (או שקראו לזה בלי רימוט...) כך או כך, תצטרך תוכנה חיצונית שמבצעת את אחד מהנ"ל...
אם אתה מדבר על לשנות EXE לפני שמריצים אותה... אז כן... אתה צריך את ה EP... תקרא על PE ...
עמודים: 1