اشکال زدایی – GDB قادر به دسترسی به حافظه کتابخانه عمومی c نیست

من سعی کردم دسترسی به حافظه کتابخانه ای c را در حافظه داشته باشم، اما به نوعی، من از خواندن آدرس در

محدود شده ام، کسی می تواند به من بگوید مشکلی است؟

این خط فرمان GDB من است [19659004] (gdb) disass main
توزیع کد مونتاژ برای عملکرد اصلی:
0x0000057d <+0>: lea 0x4 (٪ esp)،٪ ecx
0x00000581 <+4>: و $ 0xfffffff0،٪ esp
0x00000584 <+7>: pushl -0x4 (٪ ecx)
0x00000587 <+10>: فشار٪ ebp
0x00000588 <+11>: mov٪ esp،٪ ebp
0x0000058a <+13>: فشار٪ ebx
0x0000058b <+14>: فشار٪ ecx
0x0000058c <+15>: زیر $ 0x400،٪ esp
0x00000592 <+21>: تماس 0x480 <__x86.get_pc_thunk.bx>
0x00000597 <+26>: اضافه کردن $ 0x1a69،٪ ebx
0x0000059d <+32>: mov٪ ecx،٪ eax
0x0000059f <+34>: mov 0x4 (٪ eax)،٪ eax
0x000005a2 <+37>: افزودن $ 0x4،٪ eax
0x000005a5 <+40>: mov (٪ eax)،٪ eax
0x000005a7 <+42>: زیر $ 0x8،٪ esp
0x000005aa <+45>: فشار٪ eax
0x000005ab <+46>: lea -0x408 (٪ ebp)،٪ eax
0x000005b1 <+52>: فشار٪ eax
0x000005b2 <+53>: تماس 0x400
0x000005b7 <+58>: افزودن $ 0x10،٪ esp
0x000005ba <+61>: زیر $ 0xc،٪ esp
0x000005bd <+64>: lea -0x408 (٪ ebp)،٪ eax
0x000005c3 <+70>: فشار٪ eax
0x000005c4 <+71>: تماس 0x3f0 0x000005c9 <+76>: افزودن $ 0x10،٪ esp
0x000005cc <+79>: زیر $ 0xc،٪ esp
0x000005cf <+82>: فشار دادن $ 0xa
0x000005d1 <+84>: تماس 0x420 0x000005d6 <+89>: افزودن $ 0x10،٪ esp
0x000005d9 <+92>: mov $ 0x0،٪ eax
0x000005de <+97>: lea -0x8 (٪ ebp)،٪ esp
0x000005e1 <+100>: pop٪ ecx
0x000005e2 <+101>: pop٪ ebx
0x000005e3 <+102>: pop٪ ebp
0x000005e4 <+103>: lea -0x4 (٪ ecx)،٪ esp
0x000005e7 <+106>: ret
پایان تخلیه مونتاژ کننده
(gdb) x / 1i 0x420
0x420 : jmp * 0x18 (٪ ebx)
(gdb) x / 1x 0x18
0x18: نمی تواند به حافظه در آدرس 0x18 دسترسی پیدا کند

متشکرم!

اشکال جایگزین برای کاراکترهای خاص در ترمینال

یک مسئله را در مورد یک هک محبوب برای وب سایت سرگرم کننده حل کردم، وقتی که به ایده ی زیر رسیدم:

آیا امکان دارد نماینده – به عنوان مثال یک علامت '/' (فقط اسلش) در ترمینال (لینوکس) در دیگری راه – به عنوان مثال هگزادسیمال:

مثال:

 سی دی / و غیره /

به عنوان

 cd٪ 2F و غیره٪ 2F

این به نحوی امکان پذیر است؟ اگرچه در این مثال من از یک شخصیت خاص (٪) استفاده می کنم.

مشابه اشکال Y2K، یک اشکال تاریخ تولد توسط سال است؟

پاسخ: 2038

اشکال Y2K، همچنین مسأله سال 2000 را نامیده بود، در ابتدائی ترین و پر هزینه ترین مسئله ای بود که به علت عمل گسترده ای که نماینده تاریخ 4 رقمی سال (به عنوان مثال "1985") به عنوان تنها دو عدد آخرین نشان دهنده موقعیت آن در قرن بیستم (به عنوان مثال "85"). به نظر می رسد نظارت فوق العاده ساده، اما در درجه اول رشد برنامه نویسان با تمرکز بر اقتصاد ذخیره سازی در برنامه های اولیه و به درجه خاص، پیش بینی برنامه های کاربردی خود را بدون تغییر به مدت طولانی. برای مثال، اگر شما یک برنامه برای کنترل یک پست برق یا یک شبکه ی ATM در سال 1981 بنویسید، احتمالا پیش فرض شما نیست که همان کد ای که قرار داده اید تقریبا به طور کامل در هنگام پایان سال 1999 تغییری نخواهد کرد. 19659003] یک موضوع تاریخی مشابهی نیز وجود دارد که بر روی رونق تا سال 2038 تکیه دارد. اما این مسئله پیچیده تر است، چرا که این کار به عنوان برنامه ای ناکارآمد است که شامل 4 اسلات برای سال باشد، اما مسئله ای با استانداردهای به طور گسترده ای استفاده شده است کتابخانه زمان. در اینجا دلیل این است که همه چیز ممکن است غلط باشد (و به همین دلیل است که به راحتی حل می شود). اکثر برنامه های مبتنی بر C از کتابخانه زمان استاندارد استفاده می کنند و کتابخانه زمان استاندارد از یک فرمت 4 بایت برای ذخیره سازی زمان استفاده می کند. زمان در کتابخانه استاندارد در ثانیه تعیین می شود، از 1 ژانویه 1970 در ساعت 12:00:00 صبح به عنوان «0» (اولین لحظه) و هر ثانیه پس از آن به عنوان عدد صحیح نمایش داده می شود.

اگر شما با نحوه ذخیره سازی کامپیوترها آشنا هستید، می توانید ببینید که کجا این اتفاق می افتد. حد ذخیره سازی 4 بایت ذخیره سازی 2،147،483،647 است. با استفاده از فرمول در کتابخانه زمان استاندارد، 2،147،483،647 ثانیه پس از 1 ژانویه 1970، 19 ژانویه 2038 است. در آن روز، مقدار عدد صحیح به حداکثر می رسد، رول می شود و منجر به یک شماره نامعتبر منفی و در نتیجه هر برنامه های کاربردی با استفاده از کتابخانه مشکلات مربوط به محاسبه تاریخ را دارند.

خوشبختانه، چون این مسئله با یک کتابخانه که به طور گسترده ای مورد استفاده است و نه به صورت هزار و هزاران برنامه کاربردی و سیستم های مختلف (به عنوان اشکال Y2K) دست کدگذاری شده است، نسبتا آسان است به سادگی هر برنامه آسیب دیده با یک کتابخانه به روز شده که از مقدار 8 بایت برای ذخیره سازی زمان (که اجازه می دهد تا برای مقادیر تا 9،223،372،036،854،775،807) استفاده می شود را ذخیره می کند. با اصلاح جدید اجرا شده، مسئله ای با رایانه ها و تاریخ ها برای 292.5 میلیارد سال نخواهد بود.

تصویری از اندرو شیوا / ویکیمدیا

قانونی – آیا می توانم در اشتباهات مشروع در آزمون فانتزی اشکال کنم؟

در طی برخی آزمایشات اخیر فضای مجازی، من نیاز به ضبط یک پلاگین با استفاده از Wireshark داشتم، و سپس آن را بارها و بارها بارگذاری کرد تا تست سرور محلی میزبان (که در محدوده برنامه فالون است) است.

با این حال، من متاسفانه PAP را به طور صحیح وارد کرد، به این معنی که همه نوع دیگر (ترافیک اینترنتی) در آنجا وجود داشت. سپس آن را با استفاده از Mutiny fuzzed کردم.

بنابراین، هنگام پخش مجدد fuzzed pcap، من به طور تصادفی تعداد زیادی از ترافیک فازی را به اینترنت فرستادم، به طور عمده به CDNs به نظر می رسد (اساسا هر وب سایت کامپیوتر من در حالی که ضبط فایل pcap را مشاهده کردید.

این یک اشتباه صادقانه بود و من اکنون مشکل را با اجرای Wireshark و ابزار پخش بسته به عنوان یک گروه لینوکس که دسترسی به اینترنت را با iptables مسدود کرده ام، کاهش داده است.

نگرانی من این است این ممکن است با فرستادن این ترافیک برخی از انواع قوانین سوء استفاده از رایانه را خراب کرد. بدیهی است که قصد این نیست که این یک اشتباه بود و من هیچ نتیجه ای از ارسال ترافیک نداشتم، البته البته می توانست تاثیری بر روی سرور راه دور داشته باشد – من حدس می زنم که من هرگز نمی دانم.

آیا کسی این را قبلا تجربه کرده است؟ آیا پلیس در حال ضربه زدن است یا چیزی درباره آن نگران نباشد؟