7

++Dev-C חוזרת לחיים

 
פורסם בתאריך 15th אוקטובר 2011 ע"י SoleSoul

כמו הרבה אנשים שלמדו ++C לפני כמה שנים, את הצעדים הראשונים שלי עשיתי בסביבת פיתוח בשם ++Dev-C.

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

המשך לקרוא

טיול קצר בתכנות דרייברים

מדריך לכתיבת דרייבר בסיסי עבור כל גרסאות Windows

פורסם בתאריך 5th מרץ 2011 ע"י vbCrLf

לפני כשבועיים פרסם אחד מחברי פורום ההאקינג הישראלי (Ratinho) אתגר מעניין. קראק-מי פשוט שמבקש סיסמה ומחזיר Good job או Wrong password בהתאם. המטרה הייתה לפרוץ את התוכנה שתחזיר תמיד Good job, גם אם הוכנסה סיסמה לא נכונה, ומכיוון שההשוואה מתבצעת בעזרת קריאה פשוטה ל-lstrcmp בלי שום נסיון להסתיר או לסבך משהו, כל מה שצריך לעשות זה לשנות את ה-JNZ שאחריה ל-JMP.

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

אבל אז זה היה פשוט מדי, ורציתי להיות מקורי יותר. אז מה שעשיתי היה לשכתב (Inline Hooking) את lstrcmp שבתוך Kernel32 שתחזיר תמיד 0 (המחרוזות שוות). כל תהליך טוען את המודולים למרחב הכתובות שלו (באופן תאורטי לפחות), ככה שהשינוי השפיע רק על הקראק-מי (קוד מקור, לרשימת הפתרונות).

חשבתי שהייתי מקורי, עד שראיתי את הפתרון שהציע Zerith, משתמש אחר בפורום. הוא הפתיע את כולם בסיבוך של הפתרון שלו… הוא כתב דרייבר שעושה הוקינג להנדלר של ה-Page Fault (אפשר לקרוא על זה בוויקיפדיה, אבל מה שחשוב לנו הוא שכל פעם שמערכת ההפעלה צריכה קטע שלא נמצא בזיכרון בפועל, Page Fault קורה), שברגע שקורה Page Fault, אם הוא קוד הקראק מי, במקום לטעון את הקוד מהדיסק הוא מכניס בעצמו קוד שכבר פרוץ (שינוי של ה-JMP).

התלהבתי כשראיתי את זה, והחלטתי שאני חייב ללמוד את הנושא לעומק. אז התחלתי 🙂

המשך לקרוא

7

הנדסה קרבית: שולים מוקשים

טכניקות לשליטה על תוכנות רצות בעזרת DLL Injection ו-Code Cave

פורסם בתאריך 28th פברואר 2011 ע"י vbCrLf

זה הוא הפוסט האינפורמטיבי הראשון שלי בבלוג הזה. Digital Whisper גליון מספר 18 שוחרר הערב, ובו המאמר הראשון (ואני מקווה שלא האחרון) שכתבתי עבורו. המאמר מדבר על הזרקת קבצי DLL לתוך תוכנה שרצה – אחת הטכניקות הכי כיפיות שאני מכיר. היא מאפשר שליטה מוחלטת בתוכנה שאליה אנו מזריקים (שבמאמר זה שולה המוקשים הוא הקורבן). אגב, אם כל מה שאתם רוצים זה לרמות הקישו xyzzy ואח"כ Shift-Enter ו-Enter בתוך שולה המוקשים ותהנו 🙂

זה הזמן להודות לצוות Digital Whisper – אפיק קסטיאל (cp77fk4r) וכל צוות העורכים והעורכת על המגזין הזה שתורם רבות לקהילה הישראלית.

הקדמה

במאמר זה אני רוצה להציג טכניקות מעניינות בשליטה על תהליך רץ ב-Windows, או במקרה שלנו- רמאות בשולה המוקשים. התוכנה שניצור תעצור את הזמן ותגרום לשולה המוקשים לגלות לנו איפה מוחבא כל מוקש, והכל בעזרת עריכות זיכרון פשוטות. כדי לעשות את זה נשתמש בטכניקה הנקראת הזרקת DLL. אנחנו נשתמש ב-Visual C++ (וכמובן שאפשר להשתמש בכל IDE ומהדר אחר) עבור בניית מזרק ו-DLL, נשתמש ב-OllyDbg וב-LordPE כדי לאסוף מידע ולבצע קצת עריכות בקובץ. וכמובן את שולה המוקשים של Windows XP. נדרש ידע בסיסי ב-OllyDbg, רצוי ידע ב-C++ (כדי להבין את הקוד).

המשך לקרוא