什么是混淆库?

What is an obfuscated library?

我正在阅读一些关于计算机安全和恶意软件的文章。我跳进了一张将 # of potentially malicious applications# of antiviruses 相关联的图表。该图的标题为 Applications utilizing obfuscated libraries。正如预期的那样,防病毒软件越多,恶意应用程序的机会就越少。

SO 中的标签 "obfuscation" 表示:

Obfuscation is the process by which the code is altered so that a developer finds it much harder to understand clearly what the intended program does or how it operates. The larger the program the greater the obfuscation, as code becomes intertwined linking different segments through out the program.

那么是不是只是语法问题,故意让程序员更难理解代码?我想 obfuscated libraries 属于同一件事?

在我看来,混淆有两种类型

一个。 "Manual Obfuscation": 程序员故意混淆代码的地方,要么是为了防止它被理解,要么是出于其他一些原因,比如试图使编译后的二进制文件更小,就像这段令人惊叹的 C 代码一个有效的国际象棋程序

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);}}

称为 Toledo Nanochess 由墨西哥 Oscar Toledo Gutiérrez 开发,他曾五次获得国际混淆 C 代码竞赛 (IOCCC) 的冠军。

乙。 "Automated Obfuscation": 这是使用即时编译编译的代码,可以准确反编译的代码,经过 "complexifying" 的自动化过程并在不影响代码的情况下混淆代码运行时的性能。

希望对您有所帮助。