מדריך VBReFormer Online
מדריך למשתמש של VBReFormer Online: גררו קובץ הפעלה של VB6 לדפדפן, חקרו את הקוד המשוחזר שלו והורידו פרויקט שניתן לטעון מחדש ב-IDE.
עודכן ב-20.9.202611 פרקים
הסטודיו בדפדפן שלכם. אתם גוררים קובץ הפעלה של Visual Basic 5 או 6, חוקרים את הקוד המשוחזר שלו, ויוצאים עם ארכיון ש-IDE של VB6 פותח מחדש. אין מה להתקין, בכל מערכת — כולל macOS, Linux וגרסאות Windows הישנות מדי עבור אפליקציית שולחן העבודה.
הערה על התרגום. ממשק הסטודיו המקוון אינו זמין בעברית. במדריך זה שמות הלשוניות, התצוגות והכפתורים מצוטטים באנגלית, כפי שהם מופיעים בסטודיו, ובהופעתם הראשונה מצורף תרגום לעברית בסוגריים.
1. פתיחת הסטודיו
אין מה להתקין, אין מה להגדיר ואין צורך ליצור חשבון כדי להתחיל: פתחו את כתובת הסטודיו בדפדפן עדכני, וזהו.
- כל מערכת — הסטודיו תלוי רק בדפדפן. זו הדרך היחידה להשתמש ב-VBReFormer ממחשב Mac, ממחשב Linux, או מ-Windows ישן מ-10.
- אחת-עשרה שפות — סטודיו האינטרנט מוגש באחת-עשרה שפות, כמעט פי ארבעה מאפליקציית שולחן העבודה. הבורר נמצא בכותרת העליונה.
- ערכת נושא בהירה או כהה — הסטודיו עוקב אחר הגדרת המערכת שלכם, וניתן לעקוף אותה.
Français · English · Español · Deutsch · Italiano · Português · 日本語 · 简体中文 · Українська · हिन्दी · العربية
2. גרירת קובץ בינארי
- סמנו את ההצהרה. הסטודיו מבקש מכם להצהיר שאתם הבעלים של התוכנית, או שאתם רשאים לנתח את הקוד שלה. זהו תנאי שימוש, לא פורמליות.
- שחררו את הקובץ. גררו אותו לאזור הגרירה, או עיינו בקבצים שלכם. פורמטים מקובלים:
.exe,.dll,.ocx. גודל מקסימלי: 64 MB — המגבלה מוצגת על המסך במקום להתגלות אחרי העלאה שנכשלה. - תנו לניתוח לרוץ. הסטודיו מציין כל שלב תוך כדי, עם מונה: Receiving the file (מקבל את הקובץ) → Analysing the binary (מנתח את הקובץ הבינארי) → Decompiling (מבצע דקומפילציה) → Inventorying symbols (עורך מלאי סימבולים) → Call graph (גרף קריאות) → Control flow (זרימת בקרה).
הזמן תלוי בגודל ובאופי של הקובץ הבינארי. לשם השוואה, קובץ הפעלה של 9.35 MB עובר מפתיחה לפרויקט כתוב בכשתים-עשרה שניות.
בסיום הניתוח, הסטודיו גם אומר לכם איזה סוג של קובץ בינארי הוא מצא: קוד נייטיב (Native Code), P-code, או סוג לא מוגדר.
3. מה קורה לקובץ שלכם
הקובץ מנותח, ואז נמחק עם הסשן שלכם. שום דבר אינו נשמר.
זה כתוב בדף הגרירה, וכך השירות מתנהג בפועל: הקובץ הבינארי שלכם מעובד למשך סשן העבודה שלכם, ונעלם איתו. הוא אינו מאורכב, אינו מאונדקס ואינו נעשה בו שימוש חוזר.
מה שזה גם מרמז. גם העבודה שלכם אינה שורדת את הסשן. אם תסגרו את הלשונית או שהסשן יפוג, תצטרכו לגרור את הקובץ הבינארי שוב. הורידו את הארכיון לפני שאתם עוזבים. גם הפעלה מחדש של השירות מנתקת סשנים פעילים — אין סיכון לקובץ המקורי שלכם, שנמצא במחשב שלכם, אבל תאבדו את החקירה שבעיצומה.
אם סודיות הקובץ הבינארי שלכם היא עניין חוזי, שימו לב שמהדורת Desktop מטפלת מקומית בכל מה שמסתכם בקריאת הקובץ — פורמט, בייטים, דיסאסמבלי, משאבים — ושולחת לשירות רק את מה שמסתכם בשחזור.
4. ארבע דרכי כניסה לקובץ בינארי
הפאנל השמאלי מציע ארבע נקודות כניסה, והן עונות על ארבע שאלות שונות.
| לשונית | השאלה שהיא עונה עליה |
|---|---|
| Project (פרויקט) | "איך התוכנית הזו מאורגנת?" — עץ הטפסים, המחלקות, המודולים והפרוצדורות שלהם, כפי ש-VB6 ראה אותו. |
| Symbols (סימבולים) | "איפה זה מוגדר?" — המלאי המלא, עם הסוג והמכל של כל סימבול. הוא מבחין בין שמות שנקראו מהקובץ הבינארי לשמות שנאלץ לסנתז, וזה אומר לכם מיד על מה ניתן לסמוך. |
| Search (חיפוש) | "איפה הטקסט הזה מופיע?" — בקוד המשוחזר וגם במקטעי המעצב. |
| Resources (משאבים) | "מה יש שם מלבד קוד?" — סמלים, סמנים, מפות סיביות, טבלאות מחרוזות, פרטי גרסה, עם הסוג, הגודל והתוכן שלהם. מוגש ללא רישיון: משאב נקרא, לא משוחזר. |
בעץ, כל חבר נושא את הנראות שהקובץ הבינארי מצהיר עליה — Public, Private, Friend. חבר שלא ניתן היה לקרוא את הנראות שלו אינו נושא שום סימון: איננו כותבים את מה שאיננו יודעים.
שינוי שם
סטודיו האינטרנט מאפשר לכם לשנות שם של סימבולים, ושינוי השם הוא גלובלי: אתרי קריאה במודולים אחרים עוקבים. זו הפעולה המרכזית בעבודה על קובץ בינארי — הדקומפיילר מחזיר לכם את הלוגיקה, אתם מחזירים לו את השמות.
5. התצוגות
שבע תצוגות, והסטודיו עצמו מציין, מתחת לכל אחת, מה היא מציגה והאם היא דורשת רישיון.
| תצוגה | מה היא מציגה | רישיון |
|---|---|---|
| Source (מקור) | קוד ה-VB6 המשוחזר | תצוגה מקדימה ללא רישיון |
| IR | מה שהדקומפיילר רואה לפני שהוא בונה מחדש את זרימת הבקרה | תצוגה מקדימה ללא רישיון |
| Assembly (אסמבלי) | קוד מכונה x86, עם סימבולים פתורים | מוגש במלואו |
| P-code | קודי הפעולה (opcodes) של המכונה הווירטואלית של VB6 | מוגש במלואו |
| Designer (מעצב) | מקטע המעצב של הטופס | מוגש במלואו |
| Project | ה-.vbp המשוחזר |
מוגש במלואו |
| Structure (מבנה) | מבני הפורמט כפי שנקראו | מוגש במלואו |
קו ההפרדה. מה שנקרא מהקובץ שלכם חינמי; מה שמשוחזר נמכר. הדיסאסמבלי, המבנה, מקטע המעצב וה-
.vbpלקוחים מטבלאות הקיימות בקובץ ההפעלה שלכם. מקור ה-VB6 אינו קיים בשום מקום — יש לבנות אותו מחדש, והעבודה הזו היא המוצר.
מתחת לקוד, הסטודיו מציג גם מה הדקומפיילר מדווח על הפרוצדורה הנוכחית: האבחון, כלומר מה הוא לא הצליח לעשות ולמה. זה הרפלקס שכדאי לאמץ בכל פעם שתוצאה מפתיעה אתכם.
6. מה הקומפילציה שומרת, ומה היא זורקת
פרק זה מסביר מדוע הטפסים שלכם יוצאים קריאים מאוד ומודולי ה-.bas שלכם יוצאים עם שמות טכניים. הכלל פשוט:
את כל מה ש-Visual Basic צריך בזמן ריצה, הוא כתב לקובץ: VBReFormer מוצא זאת שוב. את כל מה שכבר לא היה נחוץ לו אחרי הקומפילציה, הוא זרק — ואיש אינו יכול להחזיר זאת.
מה שורד: שמות של טפסים, מחלקות ומודולים · שמות של פקדים · מטפלי אירועים · חברים ציבוריים של מחלקות · מאפייני ממשק · קריאות ל-runtime של VB (635 פונקציות) · Win32 API (15,680 חתימות) · מבנה הקוד · המחרוזות.
מה לא נמצא בקובץ: הערות · שמות של משתנים מקומיים · שמות של פרמטרים · קבועים בעלי שם, שהוחלפו בערכם · שמות של פרוצדורות במודולי .bas · ההזחה המקורית.
דוגמה שניתן לאמת
הקטע שלהלן לקוח מ-SETUP1.EXE, אשף ההתקנה המצורף ל-Visual Basic 6 — ש-Microsoft מפיצה את קוד המקור שלו. לכן כל מי שבבעלותו VB6 יכול לחזור על ההשוואה הזו.
קוד המקור המקורי, COMMON.BAS:
Sub AddDirSep(strPathName As String)
If Right(Trim(strPathName), Len(gstrSEP_URLDIR)) <> gstrSEP_URLDIR And _
Right(Trim(strPathName), Len(gstrSEP_DIR)) <> gstrSEP_DIR Then
strPathName = RTrim$(strPathName) & gstrSEP_DIR
End If
End Sub
כפי שמוצג על ידי VBReFormer:
Public Sub proc_42C506(ByRef arg_8 As String)
If ((Right(Trim(arg_8), Len("/")) <> "/") And (Right(Trim(arg_8), Len("\")) <> "\")) <> 0 Then
arg_8 = (RTrim$(arg_8) & "\")
End If
End Sub
הלוגיקה זהה, שורה אחר שורה. Right, Trim, Len ו-RTrim$ נושאות שם; העברת ה-ByRef הוסקה נכון. מה שאבד הוא שם הפרוצדורה ושם הפרמטר שלה, והקבועים בעלי השם מופיעים כערכם — הקומפיילר החליף אותם, לא VBReFormer.
קריאת הסמנים
VBReFormer לעולם אינו מנחש: ערך שלא ניתן לקבוע מסומן במקום להיות מומצא.
| סמן | משמעות | מה לעשות |
|---|---|---|
proc_42C506 |
פרוצדורה המזוהה לפי כתובתה | לשנות את שמה — השם מתפשט |
var_18, arg_8 |
משתנה מקומי או פרמטר | לקרוא כיצד הוא בשימוש, ואז לשנות את שמו |
? |
ערך שלא נקבע | להסתכל בתצוגת Assembly באותו מקום |
קובץ המכיל
?יידחה על ידי ה-IDE של VB6. הסמן נמצא שם כדי שאתם תחליטו, לא כדי שיקומפל מחדש כמות שהוא. ערך סביר ושגוי הוא הדבר הגרוע ביותר שדקומפיילר יכול להפיק.
7. הגרפים
שני גרפים, והם אינם מספרים את אותו הסיפור.
- Calls (קריאות) — מי קורא למה: הארכיטקטורה של התוכנית. מסננים עבור Callers (קוראים), Callees (נקראים) או Both (שניהם), ואפשרות להסתיר צמתים מבודדים.
- Flow (זרימה) — לאן הביצוע הולך: הבלוקים, נקודת הכניסה, כותרות לולאות, קשתות אחוריות של לולאות, והבלוקים המסומנים UNREACHABLE (בלתי נגיש).
חמש דרכים לקרוא בלוק
בחרו בלוק בגרף, ואז בחרו מה תרצו לראות בתוכו: Shape (צורה), IR, VB6, Assembly או P-code. אותו קטע תוכנית, חמש רמות קריאה.
יושרה בעיבוד. הסטודיו מציין כמה בלוקים מעוגנים בשורות הרישום, וכמה ללא כתובת מוכחת — ההוראות שלהם נופלות אז לפרוסה הקודמת. כך אתם יודעים איזה חלק מהחיתוך ודאי.
הגרפים דורשים רישיון: מי קורא למה ולאן הביצוע הולך הם הארכיטקטורה של התוכנית. הדיסאסמבלי והמבנה נשארים פתוחים בלעדיו.
8. התצוגה המקדימה והרישיון
ללא רישיון, תצוגת Source אינה נמנעת מכם: היא מוצגת מוסתרת חלקית. אתם רואים את המבנה, את השמות ששוחזרו ואת האיכות האמיתית של השחזור — על הקובץ הבינארי שלכם — לפני שתשלמו דבר.
זה מכוון: מבקר שאינו רואה דבר אינו יכול לשפוט. ואם מנוי פג, אתם רואים מה תקבלו בחזרה במקום דלת סגורה.
תחנת עבודה אחת בכל פעם
רישיון VBReFormer פותח תחנת עבודה אחת בכל פעם — ודפדפן נחשב כתחנת עבודה אחת. אם שלכם עובד במקום אחר, הסטודיו מציע להעביר אותו לכאן מהחשבון שלכם, או להוסיף מקום (seat). זהו סירוב רך: שילמתם, שום דבר לא חסר.
9. הורדת המקורות שלכם
פאנל המסירה מפיק ארכיון .zip המכיל את ה-.vbp ואת הקבצים שלו — .bas, .cls, .frm — הכתובים ב-ANSI, כפי שה-IDE מצפה להם. הפאנל מציין את מספר הקבצים ואת הגודל לפני ההורדה.
קראו את ההערות לפני פתיחת הפרויקט
הסטודיו מציג מה לא ניתן היה לשחזר, עם למה לכל רשומה. מידע מסוים — הפניות חיצוניות, אפשרויות הקומפילציה, מצב ההפעלה — אינו נמצא בשום מבנה של הקובץ הבינארי: הוא לא נמחק, הוא מעולם לא היה שם. לכן הוא מדווח במקום להיות מומצא.
ב-IDE, אם הפניה חסרה, הוסיפו אותה דרך Project ▸ References (פרויקט ▸ הפניות). בסמני ? כלשהם עליכם לטפל ידנית.
הפאנל מציע אז לנתח קובץ בינארי אחר: הסשן מתחיל מחדש, והקובץ הקודם נמחק.
10. Online או Desktop?
שתי המהדורות חולקות את אותו המנוע ומפיקות את אותו הקוד. הן אינן משרתות את אותה המטרה.
| Online | Desktop | |
|---|---|---|
| התקנה | אין | MSI, Windows 10+ |
| מערכות | כולן | Windows 10 ו-11 |
| שפות ממשק | 11 | 3 |
| עץ, סימבולים, חיפוש, שינוי שם | ✔ | ✔ |
| שבע התצוגות | ✔ | ✔ |
| גרפי קריאות וזרימה | ✔ | ✔ |
| ייצוא פרויקט | ✔ (zip) | ✔ (תיקייה) |
| משאבים: מלאי ותוכן | ✔ | ✔ |
| משאבים: חילוץ לקובץ | ✘ | ✔ |
| תצוגת hex מוערת | ✘ | ✔ |
| מעצב מצויר, ייצוא תמונה | ✘ (מקטע טקסט בלבד) | ✔ |
| תיקוני בינארי | ✘ | ✔ |
| הפניות צולבות | ✘ | ✔ |
| דפדפן אובייקטים, דפדפן Win32 API | ✘ | ✔ |
| סימניות, אפשרויות עיבוד | ✘ | ✔ |
| העבודה שורדת את הסשן | ✘ | ✔ |
| חיוב | קרדיטים | מנוי |
בקצרה — Online כדי לפתוח קובץ בינארי, להבין מה הוא עושה ולצאת עם המקורות. Desktop כדי לעבוד על קובץ בינארי לאורך זמן: בייטים, משאבים, הפניות צולבות, תיקונים, ועבודה שאינה נעלמת כשסוגרים את הלשונית.
11. שאלות נפוצות
האם הקובץ הבינארי שלי נשמר? לא. הוא מנותח, ואז נמחק עם הסשן שלכם. ראו פרק 3.
הקובץ שלי גדול מ-64 MB. זו מגבלת הסטודיו, המצוינת לפני שאתם גוררים את הקובץ. עבור קובץ בינארי גדול יותר, למהדורת Desktop אין מגבלת העלאה כזו.
איפה משאבי הקובץ הבינארי? בלשונית Resources משמאל — ללא רישיון. אתם רואים כל רשומה עם הסוג והגודל שלה, ואת התוכן שלה כשפותחים אותה: תמונות מצוירות, טקסט מוצג, וכל דבר אחר מוצג כבייטים במקום להיות מוסתר. חילוץ לקובץ ייחודי למהדורת Desktop, וכך גם תצוגת ה-hex.
מדוע הקוד נעצר באמצע פרוצדורה? זו התצוגה המקדימה: ללא רישיון הגרסה החינמית מציגה את המבנה, את השמות ואת הדיסאסמבלי המלא, אבל הגוף המשוחזר דורש רישיון.
סגרתי את הלשונית ואיבדתי הכול. העבודה אינה שורדת את הסשן. הורידו את הארכיון לפני שאתם עוזבים; הקובץ הבינארי עצמו עדיין נמצא במחשב שלכם.
האם הקוד המיוצא מתקמפל מחדש כמות שהוא? לעיתים קרובות: במערך בדיקה של 149 פרויקטים, 121 מתקמפלים מחדש ללא עריכות. השאר דורשים הוספת הפניה חסרה או טיפול בכמה סמנים.
קובץ ההפעלה שלי ארוז (packed). יש לפרוק אותו תחילה, אחרת מבני ה-VB6 אינם נראים בקובץ.
האם זה חוקי? זה תלוי בתחום השיפוט שלכם ובזכויותיכם על הקובץ הבינארי — וזה בדיוק עניינה של ההצהרה בעת הגרירה. השימוש המיועד הוא שחזור הקוד שלכם, או קוד שיש לכם עליו זכויות או שאתם מורשים לנתח.
ראו גם
מדריך VBReFormer Desktopנסו בלי לקנות