zone alarm

mikmik21i

New member
zone alarm

מכירים את האופציה ב ZONE ALARM (פייר-וואל) שאפשר ללחוץ על כפתור "BLOCK ALL CONNECTIONS) והיא חוסמת את כל התקשורת פנימה והחוצה מהמחשב.. וכשלוחצים שוב היא מחזירה הכל כרגיל... היא לא מנתקת את האינטרנט אלא עושה PAUSE לכל התקשורת.. יש למישהו כיוון מאיפה לתקוף את הבעיה ולהכין כזה דבר?
 

טרמפיסט

New member
בקלות

כל מה שנדרש הוא SubClassing לכל מסרי ופונקציות הקומוניקציה. במילים אחרות עליך לבנות Sniffer פשוט אשר מנטר את כל פעולות ה-Winsock במערכת ויודע אילו מהן להעביר הלאה ואילו לא: במקרה שלך - אף אחת. דוגמאות לכך ניתן למצוא ברחבי האינטרנט, כשבאופן אישי אני ממליץ על המודול שהכי הצרפתין Erwan. L אשר זרוע הערות והארות על הקוד. אם תצטרך עזרה בפישוט הדברים אשמח לעזור לך מנסיוני.
 

mikmik21i

New member
מצאתי את הקוד שדיברת עליו אבל לא מתקדם.

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

טרמפיסט

New member
המשך

ידוע הרי שבהתרחש פעולות שונות במערכת מופעלים אירועים שונים; כך גם הן פעולות מערכת בסיסיות: בהתרחש פעולה מסויימת היא יודעת לאיזו כתובת בזכרון לפנות שם נמצאת הפונקציה המטפלת בה ומהווה פונקצית האירוע התואמת להתרחשות שהתקיימה. פעולת ה-Hook למעשה ממפה מחדש את אותה פונקציה: היא נותנת לתרחישים הספציפים שאותם ציינו כתובת חדשה שתהווה פונקצית האירוע שלהם אך זו למעשה הפונקציה שלנו - אותה אנחנו כתבנו. אחרי שבחנו את הפעולות שהתרחשו לפי שביעות רצונינו אנו נדרשים להעביר אותן הלאה לפונקציות האירוע המקוריות בכדי שהמערכת תדע אף היא שהאירועים התרחשו ותפעל בהתאם. בסופו של דבר אנו רק "מזריקים" פונקציה החוצצת בין האירוע שהתרחש לבין פונקצית האירוע של המערכת. אם נעצור את הנתונים אצלינו ולא נעביר אותם הלאה - לא תדע המערכת שהאירוע אכן התרחש ולא תפעל בהתאם. באופן דומה פועלים KeyLoggers למינהם: הם מזריקים פונקצית אירוע משלהם החוצצת בין התרחשות הקשות המקלדת לבין פונקצית המערכת המטפלת בהן: הם רושמים בצד את ההקשה שהתבצעה בכל פעם ומעבירים את ההקשות הלאה לשליטת המערכת, כך שההקלטה אינה מורגשת. תוכנת ה-Sniffer שבה עיינת למעשה מנטרת את פעולות התקשורת פנימה והחוצה ע"י מיפוי מחדש של כתובת פונקצית האירוע כפי שנכתב כאן, אך לא בוחרת לעשות שום דבר פרט להצגת הנתונים. לאחר שהתוכנה הציגה אותם היא מעבירה את האירוע הלאה בשלימותו לשליטת הפונקציה המקורית של המערכת ורק אז יודעת המערכת שהאירוע התרחש והנתונים התקבלו. במקרה שלך לא תרצה אמנם להציג את הנתונים אך תרצה למנוע מהנתונים לעבור הלאה לידיעת המערכת: אם תבחר שלא להעביר את אירועי התקשורת לידיעת המערכת היא לא תדע שהם אכן התקיימו וכך למעשה חסמת את ההתקשרות פנימה והחוצה.
 

mikmik21i

New member
הלכתי לנסות

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

mikmik21i

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

נראה כאילו שהתוכנה לא חוטפת את המסרים אלא רק מאזינה להם מבלי להיכנס באמצע כחוצץ. זאת אני יכול לראות מפני שאני שם נקודות עצירה בכל מיני מקומות ולאחר שאני לוחץ START אמור להתבצע HOOK ומאותו רגע ואילך הפוקטים אמורים לעבור לתוכנה והיא תחליט מה לעשות איתם (להעביר למערכת או להשאיר אצלה).. אבל שכל פעם שיש עצירה (BREAK POINT) התוכנה נעצרת אומנם בעמצע ההעברה ועדיין HOOK פועל ככה שהפוקטים אמורים ללכת לתוכנה ולא למערכת.. ומשום שהתוכנה בעצירה התקשורת אמורה להיות תקועה... אבל אם אני מנסה, הכל עובד כרגיל. מקווה שהבנת את המצב ואת הדרך שאני מנסה לברר מאיפה ההחזרה של הפוקטים למערכת מתבצעת. קצת מסתבךעם זה ואם זאת ממשיך לנסות, אשמח לעזרה נוספת...
 

mikmik21i

New member
שמתי לב לדבר נוסף, אולי זאת הבעיה

ברגע שמתבצעת עצירה ואני מחזיר את התוכנה להרצה, התוכנה ביצעה UNHOOK... כלומר צריך ללחוץ STOP ושוב PLAY כדי להמשיך לקבל את הרצף של הפוקטים... האם זאת פעולה אוטומטית של UNHOOK ברגע עצירה של התוכנה ובגלל זה אני לא מוצא את השורה הנכונה שצריך לבטל?!
 

טרמפיסט

New member
Hook ו-Debugging לא הולכים יחד

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

mikmik21i

New member
צודק זה כמעט תמיד קורס

אני אנסה למצוא KEYLOGGER שעובד עם HOOK ונראה אם אני מתקדם.. אמשיך לעדכן, תודה.
 

טרמפיסט

New member
הצעה נוספת

הורד דוגמת קוד ל-KeyLogger כלשהוא: גם שם יהיה Hook אך הרבה הרבה פחות קוד מסביב כך שתוכל ממש לראות איך הדברים עובדים ברמה העקרונית. אחרי שהבנת חזור לקוד ה-Sniffer וראה איך הדברים משתלבים שם.
 

mikmik21i

New member
../images/Emo10.gif אני לא מצליח... ניסיתי כבר שורה שורה

השתמשתי ב NULL וב 0 בכל מקום שיכול להיות הגיוני.... ניסיתי לעבוד עם KEYLOGGER אבל גם שם, הבנתי איך הוא עובד אבל לא הצלחתי לחסום את המקלדת מלהקליד
. ניסיתי אפילו לשים MSGBOX שאמור לעשות עצירה ל"המתנה" אבל הוא פשוט נותן 15 MSGBOX במכה ולא עושה שום עצירה... http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=42170&lngWId=1 בבקשה, זה הקישור לקוד של ERWAN שהפנית אותי אליו. אם תוכל לעזור לי ספציפית במה לשנות בו זה יהיה גדול כי אני פשוט הלכתי לאיבוד
 

טרמפיסט

New member
תשובה

חפש את הפונקציה הבאה ובצע בה את השינויים הבאים:
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If uMsg = WINSOCKMSG Then WindowProc = 1 Else WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam) End If End Function​
השינוי הבא מבטל את הטיפול בפונקציה ומחזיר ערך שגיאה (non zero) למערכת. במצב כזה התוכנה אמורה לתקוע לך את כל מסרי המערכת הקשורים בתקשורת עד שתלחץ על Stop. נסה זאת רק מקובץ exe מקומפל ולא בהרצה מסביבת העבודה.
 

mikmik21i

New member
עשיתי לא עובד ../images/Emo10.gif

שיניתי את הפונקצייה קימפלתי EXE הרצתי ו START.. התקשורת זורמת כרגיל
 

mikmik21i

New member
בבקשה, אתה לא יודע כמה זה חשוב לי.

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