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

یکی از پروژههای فنی جنجالی که در رتبههای بالای بخش Newest هکر نیوز قرار گرفت، پروژه متنباز NLC (Natural Language Compiler) متعلق به لوئیس سوبرکوئوا (Luis Sobrecueva) است. این پروژه ثابت میکند که مدلهای زبانی بزرگ (LLMها) دیگر تنها برای نوشتن کدهای سطح بالا مانند پایتون یا سی کاربرد ندارند، بلکه میتوانند فایلهای اجرایی ماشین (ELF Binaries) را بایتبهبایت، بدون نیاز به کامپایلر (GCC/Clang)، اسمبلر یا لینکر تولید کنند.
در این آزمایش، تنها ابزار میان مدل زبانی و فایل اجرایی سیستمعامل لینوکس، ابزار تبدیل هگز به باینری (xxd -r) است.
پروژه NLC چگونه کار میکند؟
رویکرد NLC متکی بر یک حلقه بازخورد خودکار (Automated Feedback Loop) در حدود ۱۰۰ خط اسکریپت Bash است. کل جریان پردازش به این ترتیب عمل میکند:
- ارسال مشخصات متنی (Spec): یک توصیف دقیق از عملکرد برنامه و معماری به همراه ساختار هدرها به مدل داده میشود.
- تولید بایتهای هگزادسیمال: مدل مستقیماً هدرهای ELF، هدرهای برنامه (Program Headers) و بایتهای خام کد ماشین را به صورت هگز برمیگرداند.
- تبدیل به فایل اجرایی: خروجی توسط
xxd -rبه فایل باینری خام تبدیل میشود. - اجرا و تست واقعی: اگر برنامه سرور باشد، یک درخواست
curlبه آن زده میشود؛ و اگر بازی گرافیکی باشد، اسکرینشات پنجره رندرشده آن با تصویر مرجع مقایسه میشود. - حلقه تصحیح خودکار: در صورت کرش، سگفالت یا فرمت نامعتبر، گزارش واقعی ابزار
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 نشان میدهد مرزهای مهندسی نرمافزار در حال جابهجایی است. در این پارادایم جدید، سورسکد واقعی همان «مشخصات متنی دقیق و آزمونهای اعتبارسنجی خودکار» است و فایلهای باینری به عنوان یک خروجی میانی و مصرفشدنی بهشمار میروند.



