پرش به محتوای اصلی
آبیدرنت
کوردیشروع پروژه
بازگشت به اخبار
هوش مصنوعیکامپایلربرنامه نویسی

پروژه NLC: تولید مستقیم فایل‌های باینری توسط هوش مصنوعی بدون نیاز به کامپایلر

سوران منصوری
سوران منصوری
مهندس Backend
رفتن به سایت خبرگزاری
تولید مستقیم فایل‌های باینری لینوکس با پروژه NLC و هوش مصنوعی

پروژه متن‌باز NLC نشان می‌دهد که مدل‌های زبانی بزرگ چگونه می‌توانند بدون نیاز به کامپایلر، اسمبلر یا لینکر و تنها با اتکا به یک حلقه اعتبارسنجی خودکار، فایل‌های باینری اجرایی و هدرهای ELF را بایت‌به‌بایت تولید کنند.

یکی از پروژه‌های فنی جنجالی که در رتبه‌های بالای بخش Newest هکر نیوز قرار گرفت، پروژه متن‌باز NLC (Natural Language Compiler) متعلق به لوئیس سوبرکوئوا (Luis Sobrecueva) است. این پروژه ثابت می‌کند که مدل‌های زبانی بزرگ (LLMها) دیگر تنها برای نوشتن کدهای سطح بالا مانند پایتون یا سی کاربرد ندارند، بلکه می‌توانند فایل‌های اجرایی ماشین (ELF Binaries) را بایت‌به‌بایت، بدون نیاز به کامپایلر (GCC/Clang)، اسمبلر یا لینکر تولید کنند.

در این آزمایش، تنها ابزار میان مدل زبانی و فایل اجرایی سیستم‌عامل لینوکس، ابزار تبدیل هگز به باینری (xxd -r) است.

پروژه NLC چگونه کار می‌کند؟

رویکرد NLC متکی بر یک حلقه بازخورد خودکار (Automated Feedback Loop) در حدود ۱۰۰ خط اسکریپت Bash است. کل جریان پردازش به این ترتیب عمل می‌کند:

  1. ارسال مشخصات متنی (Spec): یک توصیف دقیق از عملکرد برنامه و معماری به همراه ساختار هدرها به مدل داده می‌شود.
    1. تولید بایت‌های هگزادسیمال: مدل مستقیماً هدرهای ELF، هدرهای برنامه (Program Headers) و بایت‌های خام کد ماشین را به صورت هگز برمی‌گرداند.
      1. تبدیل به فایل اجرایی: خروجی توسط xxd -r به فایل باینری خام تبدیل می‌شود.
        1. اجرا و تست واقعی: اگر برنامه سرور باشد، یک درخواست curl به آن زده می‌شود؛ و اگر بازی گرافیکی باشد، اسکرین‌شات پنجره رندرشده آن با تصویر مرجع مقایسه می‌شود.
          1. حلقه تصحیح خودکار: در صورت کرش، سگفالت یا فرمت نامعتبر، گزارش واقعی ابزار readelf همراه با کد خروج (Exit Code) مجدداً به عنوان پرامپت به مدل بازگردانده می‌شود تا نقص را در تلاش بعدی اصلاح کند.

            بررسی سطوح پیاده‌سازی و مقایسه حجم باینری‌ها

            نویسنده پروژه برای بررسی عمق درک مدل زبانی، آن را در سه سطح مختلف آزمایش کرده است:

            • سطح A: مدل کد C تک‌فایلی تحویل می‌دهد که با GCC کامپایل می‌شود.
              • سطح B: مدل کدهای اسمبلی خالص همراه با فراخوانی مستقیم سیستمی (Raw Syscalls) و بدون libc تحویل می‌دهد که با as و ld لینک می‌شود.
                • سطح C (مرحله اصلی): کل ساختار ELF مستقیماً به عنوان بایت‌های هگز تولید می‌شود؛ بدون هیچ کامپایلر یا لینکری.

                  نتیجه کاهش حجم باینری‌های تولیدشده در معماری x86-64 و مقایسه آن با کامپایل استاتیک استاندارد قابل توجه است:

                  نوع برنامهکد C استاتیک (gcc -Os -static)اسمبلی خالص (as + ld)بایت‌های خام تولیدی مدل (Raw ELF)ضریب کاهش حجم
                  Hello World۷۰۶,۵۷۶ بایت۸,۸۶۴ بایت۱۶۵ بایت۴,۲۸۲ برابر کوچک‌تر
                  HTTP Web Server۷۴۳,۴۳۲ بایت۹,۲۶۴ بایت۴۳۹ بایت۱,۶۹۳ برابر کوچک‌تر
                  بازی تتریس (تحت X11)۷۱۰,۶۸۰ بایت۸,۰۳۲ بایت—۸۸ برابر کوچک‌تر

                  یک وب‌سرور HTTP کامل که در تنها ۴۳۹ بایت گنجانده شده، نمونه واقعی از حد نهایی بهینه‌سازی بدون هدرها و پدینگ‌های پیش‌فرض لینکرها است.

                  اجرای بازی تتریس روی سرور X11 بدون کتابخانه‌ها

                  در سطح اسمبلی، مدل زبانی توانسته یک بازی تتریس تعاملی و قابل بازی روی سرور گرافیکی X11 (لینوکس) بنویسد. این برنامه هیچ وابستگی به libc یا کتابخانه‌های کمکی ندارد و ارتباط با نمایشگر گرافیکی را مستقیماً از طریق Unix Domain Socket مربوط به X11 مدیریت می‌کند. صحه‌سنجی عملکرد بازی نیز از طریق اسکریپت تست و ثبت اسکرین‌شات از مراحل چرخش، سقوط و حذف خطوط انجام شده است.

                  چالش‌ها و جنبه‌های امنیتی

                  با وجود جذابیت فنی، این آزمایش محدودیت‌ها و پیامدهای مهمی را به همراه دارد:

                  • عدم قطعیت (Non-deterministic): اجرای مشخصات ممکن است در بار اول درست عمل کند یا نیازمند چندین چرخه تصحیح باشد (مثلاً خطای جابه‌جایی نیم‌بایت در هدر ELF که منتهی به خطای آدرس‌دهی حافظه می‌شود).
                    • عدم امکان بازبینی انسانی (Auditability): باینری‌های تولیدشده مستقیم، سورس‌کد معادل ندارند. بررسی کدهای مخرب یا باگ‌های منطقی در آن‌ها نیازمند فرآیند سنگین مهندسی معکوس و دی‌اسمبلینگ است.
                      • چالش‌های امنیتی: تولید بایت‌های خام و بدون ردپای کامپایلرها می‌تواند برای تولید بدافزارهای دگرگون‌پذیر (Polymorphic) که سیستم‌های تشخیص امضامحور سنتی (Signature-based Antivirus) را دور می‌زنند، مورد سوءاستفاده قرار گیرد؛ هرچند ابزارهای تحلیل رفتار (EDR) همچنان قادر به ثبت سیستم‌کال‌های آن‌ها خواهند بود.

                        جمع‌بندی

                        پروژه NLC نشان می‌دهد مرزهای مهندسی نرم‌افزار در حال جابه‌جایی است. در این پارادایم جدید، سورس‌کد واقعی همان «مشخصات متنی دقیق و آزمون‌های اعتبارسنجی خودکار» است و فایل‌های باینری به عنوان یک خروجی میانی و مصرف‌شدنی به‌شمار می‌روند.

                        هوش مصنوعیکامپایلربرنامه نویسیلینوکسامنیت سایبری

                        خبرهای مرتبط

                        مایکروسافت ۱۴۱۳ آسیب‌پذیری امنیتی را اصلاح کرد؛ یک نقص ویندوز مورد سوءاستفاده قرار گرفته است.
                        تحول در استانداردهای امنیت سایبری: انتشار چارچوب جامع OWASP برای ارزیابی و تست نفوذ سامانه‌های هوش مصنوعی و وب‌اپلیکیشن‌ها
                        آسیب‌پذیری بحرانی Atlassian چند ساعت پس از انتشار جزئیات فنی هدف حمله قرار گرفت
                        جهش فناوری پردازش کوانتومی و یکپارچه‌سازی آن با زیرساخت‌های رایانش ابری