objective-c scrambler

objective-c scrambler

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

guyiphone

New member
אשמח לעזור לך ובתנאי שתרחיב מעט בנושא ...

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

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

BravoMan

Active member
אתה עושה טעות חמורה.

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

guyiphone

New member
תיקון קטן ...

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

BravoMan

Active member
רק למען הסקרנות, אם אתה אכן מכיר כלי

Obfuscator לקוד מקור (אני יודע שקיימים לא מעט כלים כאלה לקוד מקומפל), אשמח ללינק ואני חושב שכך גם השואל המקורי, שכן אם הבנתי נכון, זה בדיוק מה שהוא מחפש. והערה אישית קטנה (אני לא רוצה לפתוח ויכוח לא קשור לפורום, אבל בכל זאת רוצה לציין נקודה קטנה): מתנה שעלולה לסבך אותך מול לקוח היא לא מתנה טובה. אני מבין את הסיבות בגללן מפתח, (או אפילו חברה) ירצו מצד אחד להסתיר את הקוד שלהם ומצד שני לתת ללקוח תמריץ להמשיך לעשות אתם עסקים או להמליץ עליהם לאחרים. אבל, הצרה היא, שלקוחות מצפים שגם מה שקיבלו במתנה יעבוד, ואם יש תקלה הם יצפו שתתקן אותה. ואם תגיד להם "קיבלת את זה חינם, אני לא חייב לתקן" אתה מציג את עצמך באור שלילי. זה אחד המקרים בהם "עדיף להיות חכם מאשר צודק" (משהו שמורה נהיגה שלי לימד אותי בזמנו). המקרה ממנו אני מנסה להזהיר הוא כזה: פונקציה X עובדת תקין ועוברת בדיקות. לאחר שהקוד עובר עיבוד ע"י כלי ערבול כזה או אחר נוצר באג בפונקציה X שלא קיים בגרסה הלא מעורבלת. זה יכול לקרות בקלות בגלל יישומי קומפיילר שאינם מתאימים לתקנים ב-100%, בגלל תקנים רופפים בשפה שכל יצרן מפרש כרעות עיניו או בגלל שהקוד עובר אופטימיזציה בצורה שונה. לכל שינוי בקוד יש פוטנציאל להכניס באג, ובטח שבטח שינוי שנעשה ע"י כלי אוטומטי "חסר שכל". וקוד מעורבל, אם אכן עבר ערבול ייסודי, יהיה קשה עד בלטי אפשרי לדבג. הפתרון הנכון למקרה כזה לדעתי, הוא לעטוף את המנגנון במודול נפרד שיישאר סגור.
 

guyiphone

New member
אני מבין את טענתך אך אי הבנה התעוררה לה ...

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