تشويش الكود

هذه المقالة يتيمة. ساعد بإضافة وصلة إليها في مقالة متعلقة بها
من ويكيبيديا، الموسوعة الحرة

هذه نسخة قديمة من هذه الصفحة، وقام بتعديلها علاء (نقاش | مساهمات) في 20:20، 14 ديسمبر 2019 (تخصيص بذرة قالب:بذرة أمن الحاسوب). العنوان الحالي (URL) هو وصلة دائمة لهذه النسخة، وقد تختلف اختلافًا كبيرًا عن النسخة الحالية.

التشويش

التشويش أو التعقيد في تطوير البرمجيات، هو إجراء متعمد لإنتاج كود(نص برمجي) مشوش من كود عادي، بحيث يصعب على الإنسان المبرمج قراءته.

المبرمجون قد يتعمدون تشويش النصوص البرمجية، لإخفاء الغرض منها، مبدأها، أو لمنع العبث أو الهندسة العكسية أو لتحدي شخص ما ،أن يقرأها. توجد برامج عديدة تحول الأكواد البرمجية القابلة للقراءة إلى أكواد مشوشة غير قابلة للقراءة تسمى مشوشات.

التشويش في لغات البرمجة

هيكلة وسمات بعض اللغات البرمجية كالسي، والسي بلس بلس، والبيرل؛ تجعلها سهلة التشويش أكثر من غيرها.

مثال

المثال 1 في الأسفل يعرض كود أهلا بالعالم بـلغة السي وهو من أبسط الأكواد البرمجية، وفي المثال 2 كود أهلاً بالعالم [1] مشوشاً.

مثال 1

 #include <stdio.h>
 
 int main(void)
 {
    printf("Hello, world!\n");
    return 0;
 }


مثال 2

#include "stdio.h"
#define e 3
#define g (e/e)
#define h ((g+e)/2)
#define f (e-g-h)
#define j (e*e-g)
#define k (j-h)
#define l(x) tab2[x]/h
#define m(n,a) ((n&(a))==(a))

long tab1[]={ 989L,5L,26L,0L,88319L,123L,0L,9367L };
int tab2[]={ 4,6,10,14,22,26,34,38,46,58,62,74,82,86 };

main(m1,s) char *s; {
    int a,b,c,d,o[k],n=(int)s;
    if(m1==1){ char b[2*j+f-g]; main(l(h+e)+h+e,b); printf(b); }
    else switch(m1-=h){
        case f:
            a=(b=(c=(d=g)<<g)<<g)<<g;
            return(m(n,a|c)|m(n,b)|m(n,a|d)|m(n,c|d));
        case h:
            for(a=f;a<j;++a)if(tab1[a]&&!(tab1[a]%((long)l(n))))return(a);
        case g:
            if(n<h)return(g);
            if(n<j){n-=g;c='D';o[f]=h;o[g]=f;}
            else{c='\r'-'\b';n-=j-g;o[f]=o[g]=g;}
            if((b=n)>=e)for(b=g<<g;b<n;++b)o[b]=o[b-h]+o[b-g]+c;
            return(o[b-g]%n+k-h);
        default:
            if(m1-=e) main(m1-g+e+h,s+g); else *(s+g)=f;
            for(*s=a=f;a<e;) *s=(*s<<e)|main(h+a++,(char *)m1);
        }
}

مراجع

  1. ^ Obfuscated C Code نسخة محفوظة 28 نوفمبر 2016 على موقع واي باك مشين.