יישומי ערפול שנוצרו באמצעות Dotfuscator (גרסת Visaul Studio 2022)

עודכן דף :
תאריך יצירת דף :

תקציר

יישומים המבוססים על סדרת .NET של מסגרות נוצרים במה שמכונה שפת ביניים משותפת, כך שניתן לקרוא אותם בצורה הקרובה לקוד המקור המקורי באמצעות כלי פירוק וכדומה. סעיף זה מתאר כיצד לטשטש מחלקות ושמות שיטות לפורמטים שאינם קריאים בקלות באמצעות הגרסה החינמית של Dotfuscator, כלי הערפול שמגיע עם Visual Studio.

הוא מתואר באמצעות Visual Studio 2022, אך ניתן להשתמש בו גם בגירסאות אחרות של Dotfuscator.

סביבת הפעלה

סטודיו חזותי
  • סטודיו חזותי 2022

אודות דוטפוסקטור

Dotfuscator הוא כלי ערפול שמקשה על קריאת קוד מקור כאשר הוא מפורק עבור יישומים שנכתבו עם משפחת המסגרות .NET (להלן .NET). Dotfuscator מגיע עם Visual Studio בחינם ותמורת תשלום.

הגרסה החינמית אינה זמינה אלא אם כן רבות מהתכונות שלה מוגבלות או ש-Visual Studio מופעל, אך כל אחד יכול להשתמש בה כל עוד ה-Visual Studio מותקן בה. לגרסה בתשלום יש תכונות ערפול רבות עוצמה שאינן נמצאות בגרסה החינמית, אך היא מוצעת במחיר שקשה לציבור הרחב להרשות לעצמו.

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

על פירוק

ציינתי קודם לכן שיישומים שנכתבו ב- .NET יכולים בקלות לפרק ולקרוא את קוד המקור המקורי, אך מה שקורה בפועל הוא שאם אתה מפרק קובץ .exe (או קובץ .dll) כפי שמוצג באיור הבא, אתה יכול כמעט לשחזר את קוד המקור המקורי, כגון מרחב שמות, שם מחלקה, שם שיטה וכו '.

סוגי תוכניות שיש לטשטש

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

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

התקנת דוטפוסקטור

יישום זה מגיע עם Visual Studio 2022 אך אינו כלול בהתקנה הסטנדרטית (בחלק מהאולפנים החזותיים בעבר הוא עשוי להיות מותקן מאפס).

כדי להוסיף דוטפוסקטור: התחל את Visaul Studio ובחר קבל כלים ותכונות מתוך כלים.

בחר "רכיבים בודדים" מהכרטיסייה למעלה, בדוק "הגנה מונעת - Dotfuscator" בקבוצה "כלי קוד" ולחץ על לחצן התקן בפינה השמאלית התחתונה. בעת ביצוע פעולה זו, סגור את קונסולת Visual Studio.

הליך ערפול

מתאר את השלבים כדי להפוך את השמות האלה למבלבלים ומעורפלים.

צור יישום ב- Visual Studio, בנה קובץ .exe ולאחר מכן לחץ על . צור קובץ DLL. עד כה, זה אותו דבר כמו יצירת יישום רגיל. האפליקציה שאתה יוצר אמורה להיות מיועדת לאלה שנוצרו בגירסת ה- Build של המהדורה. (כי בדרך כלל אינך מפרסם ב-Debug.)

לאחר שתיצור .exe או .dll, בחר כלים מתפריט Visual Studio ולאחר מכן בחר הגנה מונעת - קהילת Dotfuscator.

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

הישארו ולחצו על הלחצן 'אישור'.

דוטפוסקטור מתחיל. היישום עובד מעצמו, כך שתוכל לטשטש קבצים שאינם רלוונטיים לפרויקט הפתוח כעת. (במקרה של הגרסה החינמית של היישום עצמו, ההנחה היא ש- Visual Studio מופעל.) )

במאמר זה, אני אטשטש פרויקט יישום .NET 6.0 WPF שנבנה עם ברירות מחדל כדוגמה.

בחר "קלט" מהרשימה בצד ימין ולחץ על כפתור "+".

בחר את קובץ התוכנית שברצונך לטשטש. יישומים שנכתבו במסגרת .NET טשטשו לעתים קרובות את .exe, אך ב- .NET וב- .NET Core, תוכניות הן לעתים קרובות .dll ישויות. ליישומי NET WPF יהיו גם ישויות .dll, לכן בחרו .dll.

הוא יתווסף לרשימה. אם הוא מורכב ממספר קבצי DLL, הוסף יותר מאחד.

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

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

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

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

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

תוכניות מעורפלות נשמרות בתיקיה בשם "Dotfuscated" במקום שבו שמרת את קובץ הפרויקט.

מפה.xml הוא קובץ תוצאת ערפול, כך שתוכל למחוק אותו בבטחה.

מכיוון שלא ניתן להפעיל את .NET 6.0 WPF על-ידי DLL בלבד, העתק את "XXXX.exe" ו- "XXXX.runtimeconfig.json" שנוצרו בזמן בניית הפלט לאותה תיקיה והפעל אותה. אם אתה יכול להתחיל כרגיל, אין בעיה לעת עתה. אם אינך יכול להפעיל אותו, ייתכן שחסרים לך קבצים או שאתה יוצר תוכנית שהופכת ללא עקבית עקב ערפול.

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

שים לב ששמות מחלקות המוגדרים בספריות .NET אינם כפופים לשינוי שם מכיוון שהם קיימים כמסגרת.

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

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

אל תכלול ערפול

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

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

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

מצב ספריה

כאשר אתה בוחר את מכלול הקלט, אתה יכול לראות כי "מצב ספריה" מסומן.

"מצב ספריה" הוא לצרף לקבצי DLL שעשויים להיקרא על-ידי תוכניות אחרות. אם נבדק, שיעורים ציבוריים ומאפיינים הנקראים על ידי תוכניות אחרות אינם נכללים בערפול.

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

ערפול של .exe של קובץ יחיד (לא מאושר)

חקירות של פריט זה ב- Visual Studio 2022 אינן מאושרות כעת.

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