Question from Tapuz .Net forum: Any good obfuscation product?
שאלה:
האם קיימת תוכנת obfuscator טובה ככה שלא יהיה ניתן לקרוא בכלל את הקוד של התוכנה שלי?
תשובה:
אני לא מאמין שקיים כזה דבר.
לא ניתן ליצור Obfuscation טוב לדוט נט.
פעם בחצי בערך יוצא איזה חידוש מדהים-חד-פעמי-בלתי-ניתן-לפריצה בתחום הזה, ושנה אחר כך בערך מגלים שגם אותו ניתן לפרוץ.
מבחינה הגיונית אצלי בראש (לא כמומחה אבטחה), אני רואה את זה שאם קיים אלג' שיודע לבצע הצפנה כך שבסופו של דבר עדיין ניתן להריץ את הקוד - חייב להיות אלג' נגדי שמאפשר להחזיר את הקוד למצב קריא יחסית.
בכל כנס של מיקרוסופט ישראל תמיד יש איזה דוכן של חברת אבטחה (אחרת) שפתרה בדיוק את הבעיה הזאת ובכל כנס הן מתחלפות.
לפי דעתי, obfuscation זה מאמץ סמלי ומספיק להשתמש במשהו ממוצע+ שיעצור את התוכניתן המומחה וההאקר המתחיל.
יש את ה-Community obusfactor שמגיע עם כל התקנת Visual Studio, מהבחינה של מאמץ סמלי - זה נחשב.
הדרך היחידה לבצע באמת obfuscation זה לא להשאיר קוד MSIL, ולהריץ את הקוד הדוט נטי דרך Linker שייצור EXE בינארי טהור של מערכת ההפעלה בלי צורך בדוט נט פריימורק (על ה-CLR, JIT וה-GC שלה). הבעיה שלי עם הפתרון הזה שעוד לא מצאתי Linker שמוכיח באופן וודאי שהביצועים שלהם משתווים לביצועים של ה-CLR. לפי דעתי, בסופו של דבר לא ניתן ליצור Linker אמיתי לדוט נט שלא יפרוס גירסה זו או אחרת של הדוט נט פריימוורק עם ה-EXE של האפליקציה.
אם לסכם את העניין - לא ניתן להצפין MSIL בצורה חד כיוונית.
זה בדיוק הנקודה - בסופו של דבר ה-CLR עדיין חייב להריץ משהו.
אם ה-MSIL מוצפן בצורה חד כיוונית -ה-CLR לא מריץ קוד ואז למרות ש"ניצחת" והצפנת את התוכנה באופן סופי - אין לך שום תוכנה להריץ.
קישור: http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp?forum=831&msgid=105901793