הגנת DLL ו EXE בדוט נט משיטת patch
-
עוד המון פרטים וקוד מקור של השיטה כאן:
http://www.codeproject.com/KB/msil/reflexil.aspxיש למישהו רעיונות להגנה :?:
פורסם במקור בפורום CODE613 ב05/08/2013 11:38 (+03:00)
-
קודם צריך להבין איך זה עובד,
כל אסמבלי (DLL/EXE) דוטנטי כתוב בשפה די קריאה המכונה CLI.
כשהאסמבלי מורץ מתבצע הידור (קומפילציה) שלו עד לשפת מכונה.ממילא, קל מאוד לצפות בקוד המקור ולדעת את סודותיו, ואף לערוך אותו.
יש הרבה צופי/עורכי אסמבלי דוטנטי, חלקם חינמיים (לדוגמא http://www.jetbrains.com/decompiler).אז איך מתגוננים?
הנה מאמר בנושא: http://www.underwar.co.il/15-DigitalWhisper/d577/מה שמוצע שם זה ערפול הקוד, באנגלית: obfuscators.
איפה משיגים בחינם? אולי פה תמצאו: http://stackoverflow.com/questions/805549/free-obfuscation-tools-for-netיש אחד רשמי בתשלום של מיקרוסופט מובנה בVS האולטימייט כמדומני.
בהצלחה.
פורסם במקור בפורום CODE613 ב05/08/2013 13:27 (+03:00)
-
קודם כל יישר כח גדול על כל המידע המפורט,
לי יש בVS את מה שהזכרת שקוראים לו Dotfuscator
אבל התוצאות שהוא נותן לא מספקות כלל, הנה הדוח שהוא מציג בסוף ערפול של תוכנית קטנטנה:Build Statistics Total Renamed Percent Renamed Types: 70 13 18.57% Methods: 446 78 17.49% Fields: 558 148 26.52%
וחוץ מזה יש עוד בעיה איתו שהוא בונה את כל הDLL מחדש ואז ה'האש' של ה DLL משתנה והוא כבר לא מתאים להאש שבמניפסט [מדובר על תוסף לוורד] ואי אפשר להתקין.
לכן בניתי מאקרו שמחליף שמות של משתנים ופונקציות כו' וזה עושה 100% של החלפת שמות מכל הסוגים.
אבל עדיין הרפלקטור מצליח להציג את את כל הקוד המעורפל.השאלה אם אפשר לעשות שהרפלטור לא יהיה מסוגל להציג שמות של פונקציות למשל על ידי שהם יכילו תוים כמו מעבר שורה או מעבר עמוד וכדומה. ואת זה במאקרו אני לא יכול לעשות כי אז הקוד לא יתקמפל.
פורסם במקור בפורום CODE613 ב06/08/2013 11:41 (+03:00)
-
שגילתי את הרפלקטור לראשונה זה היתה לי מכה רצינית בנוגע לנט פתאום קלטתי שכל התוכנות שלי חשופות. וכל המאמצים שלי לחסום את התוכנות מיותרים.
זה היה הקש (או האבן) ששבר את גב הגמל ומאז אני ממעט לפתח בנט.פעם עיינתי בתוכנה של קול הלשון וראיתי שם חיבור לftp והיה כתוב שם את הסיסמא לחיבור שחור על גבי לבן. אמרתי בא ננסה להיכנס ניסתי וזה נכנס. נכנסתי לאיזה דיסק קשיח ענק היה שם מלא חומר כולל גיבויים של כל מיני גירסאות של האתר (asp). אמרתי לעצמי אולי יש רק הרשאות קריאה אבל אין כתיבה אז העתקתי קובץ למחשב שלי ומחקתי אותו בשרת וזה עבד. אחרי זה החזרתי אותו למקומו. למחורת בבוקר שלחתי מייל למפתח שלהם והוא חסם את השם משתמש הזה.
זה יכול לגרום להרבה בעיות אבטחה בגלל שאי אפשר לסמוך על חסינות של הקוד. במיוחד מי שלא מודע לזה.
הקטע שזה מעולם לא היה אסמבלי ואני לא הייתי קורא לזה אסמבלי זה פשוט קוד מקור שמקומפל בקובץ אחד.לדעתי תוסיף זבל לתוכנה. כל מיני פונקציות לא קשורות או איזה מחלקה ענקית כמו zlib.
תקודד מחרוזות בצורה כזאת"\u0053" + "\u0046"
אפשר עוד ועוד לעשות קשיים כדי להגיע למצב ששווה לתכנת מחדש ולא לגנוב.
אבל אף פעם זה לא יהיה חסום הרמטי.פורסם במקור בפורום CODE613 ב06/08/2013 12:22 (+03:00)
-
זה היה הקש (או האבן) ששבר את גב הגמל ומאז אני ממעט לפתח בנט.
אז במה אתה כן מפתח?
פעם עיינתי בתוכנה של קול הלשון וראיתי שם חיבור לftp והיה כתוב שם את הסיסמא לחיבור שחור על גבי לבן. אמרתי בא ננסה להיכנס ניסתי וזה נכנס. נכנסתי לאיזה דיסק קשיח ענק היה שם מלא חומר כולל גיבויים של כל מיני גירסאות של האתר (asp). אמרתי לעצמי אולי יש רק הרשאות קריאה אבל אין כתיבה אז העתקתי קובץ למחשב שלי ומחקתי אותו בשרת וזה עבד. אחרי זה החזרתי אותו למקומו. למחורת בבוקר שלחתי מייל למפתח שלהם והוא חסם את השם משתמש הזה.
זה סיפור מצמרר וגם אני שמעתי סיפורים על כמה מתכנתים שפירסמו את התוכנות שלהם ללא עירפול מינימלי.
אבל אף פעם זה לא יהיה חסום הרמטי.
אם אתה רוצה לראות מה זה ערפול כמו שצריך פתח ברפלקטור את הרפלקטור בעצמו....
פורסם במקור בפורום CODE613 ב06/08/2013 12:59 (+03:00)
-
שגילתי את הרפלקטור לראשונה זה היתה לי מכה רצינית בנוגע לנט פתאום קלטתי שכל התוכנות שלי חשופות. וכל המאמצים שלי לחסום את התוכנות מיותרים.
זה היה הקש (או האבן) ששבר את גב הגמל ומאז אני ממעט לפתח בנט.אלא בתוכנות קוד פתוח
פעם עיינתי בתוכנה של קול הלשון וראיתי שם חיבור לftp והיה כתוב שם את הסיסמא לחיבור שחור על גבי לבן.
גם אם היו מתחכמים מאוד, חכם קטן היה עולה על הסיסמה.
גם בC++.
הטעות שלהם היא בהקצאת משתמש עם 1) הרשאות כתיבה 2) גישה למקומות שלא צריך.הקטע שזה מעולם לא היה אסמבלי ואני לא הייתי קורא לזה אסמבלי זה פשוט קוד מקור שמקומפל בקובץ אחד.
זה משחק מילים מטעה. מה שהתכוונו במילה זה קבוצת מחלקות וכו' מקובצים ביחד. לא התכוונו בכלל לקימפול.
לדעתי תוסיף זבל לתוכנה. כל מיני פונקציות לא קשורות או איזה מחלקה ענקית כמו zlib.
תקודד מחרוזות בצורה כזאת"\u0053" + "\u0046"
זה בדיוק מה שעושות התוכנות שהזכרתי, רק צריך לדעת להשתמש איתם טוב.
הבעיה שלו שחלק מהקוד שלו אמור להישאר שלם ללא שינוי.פורסם במקור בפורום CODE613 ב06/08/2013 13:33 (+03:00)
-
לי יש בVS את מה שהזכרת שקוראים לו Dotfuscator
אבל התוצאות שהוא נותן לא מספקות כללרחמים, הכלי הנ"ל עושה את העבודה לדעתי.
לא לחינם אנשים קונים אותו. תלמד איך להשתמש בו.לגבי שאלתך ראה אולי בקישורים תצא פיתרון:
http://stackoverflow.com/questions/11596514/how-to-use-dotfuscator-with-vsto
http://social.msdn.microsoft.com/Forums/windows/en-US/92ef0ad2-532a-41f1-ae11-3addbe9f0434/clickonce-deployment-issue-file-has-different-computed-hash-than-specified-in-manifest-urgent
http://stackoverflow.com/questions/3416223/how-to-use-obfuscation-for-clickonceפורסם במקור בפורום CODE613 ב06/08/2013 13:43 (+03:00)
-
העצבים שהיו לי שמיקרוסופט לא משקיעה כלום כדי שהקוד יהיה מוגן. ואם אתה רוצה קוד מוגן תשלם כסף. וגם זה לא יוצא מוגן כמו אסמבלי (אמיתי).
ממילא אני לא יכול לסמוך על החברה הזאת.אני היום מפתח בjs. וגם בjs אפשר לערבל בדיוק כמו שאפשר בנט. וכל המערבלים הם מערבלים חינמים ללא תשלום מערבלים מצויינים.
גם אפשר להגן על קוד js באמצעות צילום של קוד ריצה ויש כלים שעושים את זה. מצלמים את הקוד ויש לך קוד בינארי ממש.@דוד ל.ט.
זה בדיוק מה שעושות התוכנות שהזכרתי, רק צריך לדעת להשתמש איתם טוב.
הבעיה שלו שחלק מהקוד שלו אמור להישאר שלם ללא שינוי.אני מכיר את התוכנות האלו ולכן זה מה שהצעתי.
התוכנה הכי טובה בתחום לדעתי
http://www.eziriz.com/זה מצפין מחרוזות מצפין מקורות מקודד את התוכנה וברפלקטור לא יהיה אפשר לראות כלום זה יראה כמו תוכנה אסמבלית לכל דבר.
יש לזה גירסת נסיון 30 יום
הגירסה הרגילה עולה כסףפורסם במקור בפורום CODE613 ב06/08/2013 14:06 (+03:00)
-
גם אפשר להגן על קוד js באמצעות צילום של קוד ריצה ויש כלים שעושים את זה. מצלמים את הקוד ויש לך קוד בינארי ממש.
זה הכי טוב, אבל זה מעלה סימני שאלה על הביצועים בjs.
אם הקוד מכונה שנוצר יכול לרוץ בלי בעיה על כל מכונה, זה אומר שאין מינימום אופטימזציה למכונה.פורסם במקור בפורום CODE613 ב06/08/2013 17:28 (+03:00)
-
אני רוצה לחדד את הנקודה, בכל תוכנה שרוצים להגן עליה יש שני חלקים:
- הקוד מקור ולזה ערפול סביר עושה את העבודה כי כבר לא שווה לפורץ הפוטנציאלי להתעסק איתו אלא לכתוב את הקוד לבד.
- מניעת עריכת הDLL בשיטת patch הנ''ל ולזה כמעט שלא יכול לעזור הערפול כיון שהפורץ ניגש ישר לפונקציה שבה התוכנה מתחילה [ entrypoint ] ומשנה אותה או מוחק את הקוד הפנימי שלה. או שהוא ניגש לכל פונקציה אחרת שמזהה אותה כבודקת רשיון וכדומה.
ולכן כעת שיש לנו ערפול מצויין אם ע''י התוכנות שהזכרו ואם ע''י מאקרו יש לנו פתרון לחלק הראשון, אבל לחלק השני אנו צריכים עדיין פתרון.
מה שחשבתי הוא לקרוא את הDLL ישירות ולמצוא בו את שמות המשתנים ולהוסיף לכל שם תוים מיוחדים כמו מעבר עמוד או מעבר שורה וכדומה כדי שיהיה בלתי אפשרי לפתוח DLL זה ברפלקטור.
והשאלה שלי איך עושים את זה? איך אפשר למצוא בתוך כל הבינארי את שמות המשתנים? בקיצור איך בנוי הDLL ?פורסם במקור בפורום CODE613 ב07/08/2013 11:34 (+03:00)