Dasturlash

LLM‑yordamida kod dekompilyatsiyasi: Tajribalar va Yangi Yondashuvlar

25-mart, 2026, 14:0012 ko'rish3 daqiqa o'qish
LLM‑yordamida kod dekompilyatsiyasi: Tajribalar va Yangi Yondashuvlar

Kiruvchi so'z

Sun'iy intellekt (AI) texnologiyalari dasturiy ta'minot tahlili va qayta tiklash jarayonlarida yangi imkoniyatlar yaratmoqda. Ushbu maqolada LLM‑yordamida dekompilyatsiya (kompilyatsiya qilingan kodni asl manbaga yaqin holga qaytarish) bo'yicha amaliy tajribalar, funksiyalarni o'xshashlik asosida tanlash strategiyasi va Claude kabi LLM agentlarining ishlash usullari yoritiladi.

Dekompliyatsiya jarayonida muammolar

Ilk bosqichda funksiya qiyinligini taxmin qilish uchun logistika regressiya modeli ishlatilgan. Model instruktsiya soni, nazorat oqimi murakkabligi kabi ko'rsatkichlarni hisobga olib, eng “oson” funksiyalarni birinchi navbatda tahlil qilgan. Bu usul dastlab samarali bo'lsa-da, oxir-oqibat qiyin funksiyalar qolib, jarayon sekinlashdi.

Funksiya o'xshashligini vektorli tavsiflar bilan aniqlash

Keyinchalik assembly instruktsiyalarini matnli embedding orqali funksiyalarni yuqori o'lchamli fazoda joylashtirish sinovdan o'tkazildi. Bu yondashuv Claude modeliga o'xshash funksiyalarni tanib, ularning dekompilyatsiya natijalaridan foydalangan holda yangi funksiyalarni qayta yaratishga yordam berdi.

  • O'xshash funksiyalarni topish uchun maxsus vosita ishlab chiqildi.
  • Natija: dekompilyatsiya muvaffaqiyati sezilarli darajada oshdi.

Exact similarity vs. embedding

Bir necha mingta kandidat bo'lgani uchun har bir juftlikni to'liq o'xshashlikni hisoblash ham amaliy edi. Bu usul tezkor qidiruv (RAG) tizimlarida keng qo'llaniladigan embeddingga qaraganda aniqroq natija berdi.

Levenshtein masofasi asosida soddalashtirilgan yondashuv

Ko'p parametrli qo'lda yaratilgan o'xshashlik formulasi o'rniga Coddog vositasi qo'llanildi. Bu vosita opcode ketma-ketliklari orasidagi Levenshtein masofasini hisoblab, 0‑1 oralig'ida normalizatsiya qilingan o'xshashlik ko'rsatkichini beradi. Natijada, murakkablik kamaydi va samaradorlik oshdi.

Claude agentining maxsus “skill”lari

Proyekt ikki muhim Claude skillidan foydalangan:

  • gfxdis.f3dex2 – N64 grafik protsessorining (RDP) mikro kodini tahlil qilish.
  • decomp-permuter – dekompilyatsiya qilingan kodni oxirgi foizlarda mukammallashtirish uchun millionlab kichik o'zgarishlar kiritish.

Ammo permuter ko'pincha keraksiz o'zgarishlar (masalan, noaniq o'zgaruvchi qayta ishlatilishi) kiritib, Claude’ni noto'g'ri yo'naltirganligi sababli olib tashlandi.

Kod tozalash va hujjatlashtirish

Tozalangan, inson o'qishi oson kodlar o'xshashlik asosidagi rejalashtirishda yaxshiroq namuna bo'ldi. Claude’ni har bir funksiyani alohida tahrir qilishga chaqirish orqali ham kodni avtomatik tozalash amalga oshirildi.

Agentlar va ish jarayonini boshqarish

Bir nechta worktree (ish daraxti) yaratish, hook (oldindan belgilangan kod bloklari) orqali Claude’ning noto'g'ri harakatlarini cheklash, va Nigel nomli orkestratsiya vositasi yordamida vazifalarni paralel bajarish kabi choralar joriy etildi.

  • Hooklar SHA1 hash o'zgarishini bloklaydi.
  • Nigel konfiguratsiya fayli orqali har bir vazifa uchun kirish manbai va prompt belgilash imkonini beradi.

Model tanlash: Claude vs. GLM

Claude yuqori darajadagi mantiqiy tahlil uchun ajoyib, lekin tokenlar (so'z birligi) chekloviga ega. Shuning uchun GLM (z.ai) modeliga asoslangan glaude vositasi mehanik vazifalar uchun qo'llanildi – bu token sarfini kamaytiradi.

Qolgan qiyinchiliklar

Hozirgi kunda eng katta to'siqlar:

  • 1 000 dan ortiq instruktsiyaga ega bo'lgan katta funksiyalar Claude uchun juda qiyin.
  • Makrolar orqali yaratilgan grafik kodlar (display list) LLM’lar uchun murakkab.
  • Matritsa va vektor hisoblash funksiyalari, masalan, inverse square root, hali ham dekompilyatsiya qilinmayapti.

Kelgusi “frontier” modellari bu muammolarni hal qilishga yordam berishi kutilmoqda.

Xulosa

LLM‑yordamida dekompilyatsiya jarayoni bir qator texnik yondashuvlar, maxsus vositalar va agentlar orkestratsiyasi orqali samarali amalga oshiriladi. Funksiya o'xshashligini aniq hisoblash, kodni tozalash, va model tanlash kabi bosqichlar muvaffaqiyat kaliti hisoblanadi. Bu tajribalar boshqa eski o'yin yoki dastur loyihalariga ham tatbiq etilishi mumkin.

Manba: Hacker News
#LLM #dekompilyatsiya #Claude #AI #kod tahlili
Telegram da muhokama qilish