התגובות שלי בפורום
-
מאתתגובות
-
Yoniמשתתף
כותרת: תחת Win98…
יכולתי לגרום למסך כחול "לא מזיק" להופיע ע"י פסיקת
int 0
או
into.יתכן שזה עובד גם ב-95 וב-ME.
בשביל לגרום למסך כחול (אמיתי) ב-WinNT/2K/XP תצטרך לעשות קצת יותר (לכתוב דרייבר שקורס במצב 0 ולגרום לקורבן להתקין אותו).
Yoniמשתתףכותרת: מי פירט עליהם?
Yoniמשתתףכותרת: LOL
אני בטוח לא עליתי בפיזיקה, זה פשוט לא התחום שלי.
(אני טוב בזה אבל לא מתעניין כמו במתמטיקה ומדעי המחשב…)באותו הזמן? מה הם חושבים שאין אנשים שטובים בשני התחומים? באסה.
לאיזה תחרות תלך?Yoniמשתתףכותרת: חברים שלי (שנמצאים שם) אומרים שכן,
אבל הם לא יכולים לומר לי מה הם עושים שם. לא נורא.Yoniמשתתףכותרת: חייה! מקום ראשון!
Yoniמשתתףכותרת: TheWizard: לא הגיוני לפי הרמז
"רמז -אפשרי מצב שבו מס´ המופעים של מס´ מסויים הוא 0"Yoniמשתתףכותרת: גם אתה היית שם?
איך מוכיחים את המקבילית???
ובכלל, איך היה?Yoniמשתתףכותרת: אני זוכר את זה ככה –
נגדיר "רדיוס" של ריבוע בתור חצי מהצלע שלו.
נקבל שהשטח של ריבוע הוא
4R^2
וההיקף הוא
4*2R
נשרטט מעגל החסום בתוך הריבוע.
למעגל יהיה אותו רדיוס כמו הריבוע – לכן השטח וההיקף יהיו מאותו "סדר גודל"… רק צריך לשנות את הקבוע 4 האופייני לריבוע לפאי, האופייני למעגל.כמובן שאפשר גם לשרטט מעגל במערכת צירים ולחשב את השטח שלו בעזרת חשבון אינטגרלי. אבל אז הבעיה שלך קרוב לוודאי תהפוך ללזכור את נוסחת המקום הגיאומטרי של מעגל, ואיך עושים אינטגרציה לפי חלקים.
Yoniמשתתףכותרת: תוכל בבקשה להגיד לי מי אתה?
אני לא אכעסYoniמשתתףכותרת: תיקון: מחזירה משתנה = מחזירה ערך*
אופסYoniמשתתףכותרת: דניאל צודק:
למי שלא יודע, הפקודה
call x
שקולה לפקודות (השנייה לא באמת קיימת)
push return_address
mov eip, xוהפקודה
ret
שקולה לפקודה (שלא באמת קיימת)
pop eipוזהו ההסבר בקצרה של ה-Call stack.
בקשר ל-goto: אני לא מכיר קומפיילר שיתן לך לעשות משהו כמו
goto HeapFree
וגם אם כן, איך תעביר פרמטרים?
בקיצור הכי כדאי לעשות כאן Inline ASM.דרך אגב, יש שימוש ל-goto!
חבר שלי פעם יצר מנגנון להצפנת פונקציות בזמן אמת. כלומר: בקובץ ה-exe חלק מהפונקציות מוצפנות, וכאשר מתבצעת קריאה לפונקציה מוצפנת, היא מבצעת "Decrypt" לעצמה, מבצעת את הקוד, ובסוף מצפינה את עצמה שוב. (כלומר בכל פונקציה מוצפנת, הקוד "גלוי" רק כאשר הפונקציה מתבצעת.)לצורך העניין היו לו שני מאקרו-ים: ENCRYPT_START ו-ENCRYPT_END, ופונקציה מוצפנת נראית ככה:
void f()//0
{
ENCRYPT_START
// code
ENCRYPT_END
}בפונקציה מוצפנת שמחזירה משתנה, אי אפשר לעשות return כי אז זה ידלג על ה-ENCRYPT_END. הפתרון היה:
int g()//0
{
int retval = 0;//0
ENCRYPT_START
// …code…
retval = 1; goto end;//0
// …code…
end://0
ENCRYPT_END
return retval;//0
}Yoniמשתתףכותרת: הפורום קצת הרס לי את המשוואות…
הדוגמה היא:
מינוס 32760 פחות 10 שווה 32766.
וכן להפך, 32766 ועוד 10 שווה מינוס 32760.
התוצאה נשארת זוגית ולכן האלגוריתם שלי עדיין עובד.Yoniמשתתףכותרת: לא נראה לי שזה משנה…
כל עוד המספר הראשון נשאר זוגי, גם אם הוא עובר מעבר למקסימום/מינימום הערכים שלו הוא ישאר זוגי…
למשל: (נניח 16 סיביות)
-32760 – 10 = 32766
וכן
32766 + 10 = -32760Yoniמשתתףכותרת: ASM4LIFE
סתם…
השפה האהובה עלי זה ערבוב של C ו-C++ עם קצת Inline ASM.
חשבתי פעם על C מול C++ והגעתי למסקנה שיש המון דברים ש-"אי אפשר" לתכנת ב-C++ (כלומר אובייקטים יהיו שם ממש רעיון גרוע), אך כמובן ש-C++ זה דבר טוב בהרבה מקרים. אז אני מערבב בין השניים.
בקשר ל-Inline ASM, חוץ מהעניין של האופטימיזציה, הגעתי לפני כמה ימים לדבר חביב שאי-אפשר לפתור אותו בלי Inline ASM. (ב-Win32)
פונקציה אחת מקצה בלוק זיכרון, והופכת אותו ל"בר-ביצוע" (executable) באמצעות VirtualProtect. היא מעתיקה פונקציה שנייה לאותו בלוק זיכרון ואז קוראת לה דרך שם. לצורך העניין הפונקציה השנייה צריכה לשחרר את הזיכרון שבה היא נמצאת.
אם נקרא לפונקציה המשחררת, אז כשהיא תחזור ה-EIP יהיה בלתי חוקי והתוכנה תקרוס.
פתרתי את זה בערך ככה:
push MemBlock
push 0
call GetProcessHeap
push eax
jmp HeapFree
מתי שה-HeapFree תגיע ל-ret היא תחזור ישר לפונקציה שקראה לפונקציה הזאת. נחמד לא?Yoniמשתתףכותרת: מה נשמע יובל?
אמרנו 11 7 3 9…
עם האלגוריתם שלי:
Add(1, 2, -3);//0
Add(1, 3, -7);//0
Add(1, 4, -11);//0
Add(1, 2, 6);//0
Add(2, 3, -6);//0
Add(1, 3, 6);//0
והכל אפס. מה רע? -
מאתתגובות