2017-06-09 3 views
0

Je lis quelques articles concernant la sécurité informatique et les logiciels malveillants. J'ai sauté dans un graphique reliant le # of potentially malicious applications avec le # of antiviruses. La légende du graphique a indiqué Applications utilizing obfuscated libraries. Comme prévu, plus il y a d'antivirus, moins il y a de risques d'applications malveillantes.Qu'est-ce qu'une bibliothèque obfusquée?

L'étiquette « obscurcissement » dans le dit:

obfuscation est le processus par lequel le code est modifié de sorte qu'un développeur trouve beaucoup plus difficile de comprendre clairement ce que le programme prévu ne ou comment il fonctionne. Plus le programme est grand, plus l'obscurcissement est grand, car le code s'entremêle pour relier différents segments à travers le programme.

Alors, est-ce juste une question de syntaxe, qui rend le code plus difficile à comprendre pour le programmeur? Je suppose que obfuscated libraries se rapporte à la même chose?

+0

Cela signifie que le fonctionnement de la bibliothèque est obscurci. Le code source est rendu moins lisible. La logique du programme est inversée et inversée, il n'est donc pas évident de voir ce qu'il essaie d'accomplir. – deceze

Répondre

2

À mon avis, il y a deux types de obfuscaton

A. « obfuscation Manuel »: Lorsque le programmeur obscurcit délibérément le code, que ce soit pour l'empêcher d'être compris, ou pour une autre raison, comme la tentative de rendre le binaire compilé plus petit, comme ce morceau incroyable de code C qui est un programme d'échecs de travail

B,i,y,u,b,I[411],*G=I,x=10,z=15,M=1e4;X(w,c,h,e,S,s){int t,o,L,E,d,O=e,N=-M*M,K 
=78-h<<x,p,*g,n,*m,A,q,r,C,J,a=y?-x:x;y^=8;G++;d=w||s&&s>=h&&v 0,0)>M;do{_ o=I[ 
p=O]){q=o&z^y _ q<7){A=q--&2?8:4;C=o-9&z?q["& .$ "]:42;do{r=I[p+=C[l]-64]_!w|p 
==w){g=q|p+a-S?0:I+S _!r&(q|A<3||g)||(r+1&z^y)>9&&q|A>2){_ m=!(r-2&7))P G[1]=O, 
K;J=n=o&z;E=I[p-a]&z;t=q|E-7?n:(n+=2,6^y);Z n<=t){L=r?l[r&7]*9-189-h-q:0 _ s)L 
+=(1-q?l[p/x+5]-l[O/x+5]+l[p%x+6]*-~!q-l[O%x+6]+o/16*8:!!m*9)+(q?0:!(I[p-1]^n)+ 
!(I[p+1]^n)+l[n&7]*9-386+!!g*99+(A<2))+!(E^y^9)_ s>h||1<s&s==h&&L>z|d){p[I]=n,O 
[I]=m?*g=*m,*m=0:g?*g=0:0;L-=X(s>h|d?0:p,L-N,h+1,G[1],J=q|A>1?0:p,s)_!(h||s-1|B 
-O|i-n|p-b|L<-M))P y^=8,u=J;J=q-1|A<7||m||!s|d|r|o<z||v 0,0)>M;O[I]=o;p[I]=r;m? 
*m=*g,*g=0:g?*g=9^y:0;}_ L>N){*G=O _ s>1){_ h&&c-L<0)P L _!h)i=n,B=O,b=p;}N=L;} 
n+=J||(g=I+p,m=p<O?g-3:g+2,*m<z|m[O-p]||I[p+=p-O]);}}}}Z!r&q>2||(p=O,q|A>2|o>z& 
!r&&++C*--A));}}}Z++O>98?O=20:e-O);P N+M*M&&N>-K+1924|d?N:0;}main(){Z++B<121)*G 
++=B/x%x<2|B%x<2?7:B/x&4?0:*l++&31;Z B=19){Z B++<99)putchar(B%x?l[B[I]|16]:x)_ 
x-(B=F)){i=I[B+=(x-F)*x]&z;b=F;b+=(x-F)*x;Z x-(*G=F))i=*G^8^y;}else v u,5);v u, 
1);}} 

appelé Toledo Nanochess développé par le mexicain Oscar Toledo Gutiérrez, cinq fois vainqueur du code international Obfuscated C Concours (IOCCC) .

B. « automatisé obfuscation »: Ce est où le code qui compile en utilisant la compilation juste à temps, le code qui peut être décompilé exactement, subit un processus de automatized « complexifier » et obscurcissant le code sans affecter les codes la performance à l'exécution.

J'espère que cela aide.

+0

Informatif et qui aurait pu savoir il y avait un tel concours. Merci. –