-
Notifications
You must be signed in to change notification settings - Fork 5
Teoria del ofuscador y un ejemplo
Ofuscador
Les dejo algo de teoría, unos links hacerca de las tecnicas de ofuscacion y un ejemplo de lo que trata la ofuscación.
Código ofuscado es código cuya lógica es intencionadamente difícil de seguir y / o cuya sintaxis es intencionalmente poco clara. Hay varias razones por las que se podría alejarse de las buenas prácticas de programación para producir código ofuscado. Estos incluyen la protección de la propiedad intelectual (prevenir o retrasar los esfuerzos de ingeniería inversa sobre código propietario), programa de seguridad, o con fines recreativos.
Algunos links que pueden ayudar a la comprension y las tecnicas de un ofuscador(El ultimo link trata sobre el concurso internacional de ofuscacion y pueden ver los distintos ejemplosque puede haber):
http://www.brandonparker.net/code_obf.php
http://www.ioccc.org/years.html#2012
NOTA: No se de una manera muy clara de cómo implementar el código ya que como puedan ver en los links hay varias equivalencias en el código.
Ejemplo:
#define o(a,b,c,d) a##f b##f c##f d; a##g b##g c##g d;q-- #define Z(z)if(*j==z) #define c(z,p) Z(z){y;v p##=r;o(b,[q-1]=b,[q] p b,[q]);} #define y q+=t;t=0 #define r w[q] #define v w[q-1] #define w(a,m,f) Z(a){y;r=m(r);q++;o(b,[q-1] = -b,[q-1]f(r)+0b,[0]);} #define A(p,w,o) for(p=0;p<w;p++)(o) #define P(a) for(a=Z;a<Z;a++) #define _ putchar typedef double o; typedef char z; o A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y, E, w[20], bf[20], bg[20],x=-1.3/8,p,d,l=0,h=4e-3,f,m; z e[17] = "FKE<<gMAQUDIYO9"=", k, j; o g(o p, o d){int q =-1,t=0;j=k;while( j ){c(45,-);Z(100){y;q++;r=v;q[bf]=bf[q-1];q[bg]=bg[q-1];}Z(42) {y;v=r;o(b,[q-1]=rb,[q-1] + vb,[q]);}Z(44){t=0;q++;}Z(116){f=v;v=r;r=f;f=bf[q];q[bf]=bf[q-1];bf[q-1]=f;f=q[bg];bg[q]=(q-1)[bg];bg[q-1]=f;
}c(43,+);Z(47){y;v/=r; o(b,[q-1]=b,[q-1]/r-v/ (r*r)*b,[q]);}Z(121){y;q++ ;r=d; bf[ q]=0;bg[q]=1;}
Z(94){y;f=v;v=pow(v,r) ;o(b,[q-1]=r*b,[q-1]* pow(f,r-1)+0*b,[q]);}w(115 ,sin,cos);w(99,cos,sin);
Z(120){y;q++;r=p;bf[q] =1;bg[q]=0;}if(*j>=48 &&*j<58){q++;t=1;r=*j-48 ; bf[q] = 0;(q--)[bg] = 0;
}j++;}H=bf[0] ;K= bg[ 0]; return w[0];}
void s(){int e=0;X=Q*8;f=g (Y*8, L*8 )
;e=(f-X<0)?1: -1;l=0;while((l+=h)<8) {
V=Y*8+l*R;W=L* 8+l*D;X= Q*8+l*U;f=g(V,W);if((f -X)*e>0){if(V>-1&&V<1&&W>
-1&&W<1){p=V;d=W;return ;}else e/=-1;}}p=d=-10 ;}int main(int argc, z **
argv){int c, f;z b[2],Z ;S=0,C=1;k=argv[1];Z = atoi(argv[2])>>1;b[1]=Z*2
&255;b[0]=Z>> 9;J= 3.1415/Z;A(f,6,f[e]^f+1);while(--f>1)_(
(f%2)[b]);_(246);A(c,384,c/3%2?c/6<<2:0);_(_(0));_(_((_(33)
<<3)-9)/23);for(f+=5;f < c/22 ; f++) _(e[f] ^ f - 3);for(;f
> c/29;f--)_(f>15?2*f-
31:c);_(0);for(f=0;f<=
Z*2 ; f++){N = S;E_=1-
J*J/2;T=J*(1-J*J/6);
S=S*E_+C*T;C=C*E_-N*
T;A=-(C*C-S*S);P=-A*
C;E=A*S;G=S*C*2;I=-
G*S;F=G*C;_((_(e[10
]/2-1)<<3)-18);for(
c=-1;c<5;c++)_((c+1)%2?0:-2*c*c+3*c+9);_(44);A(c,9,c&4?(1-c%2
)[b]:0);_(7);for(B=-Z ; B<Z ; B++){_(Z+2);for(O=-Z;O<Z;O++){Y
= (E - P*B/Z - G*O/Z)*x;L = (I - F*B/Z - A*O/Z)*x;Q = (-C +S*
B/Z)*x;R = - Y + E; D =-L+I; U =-Q-C;s();3[w] = sqrt(R*R + D*D + U*U);m=p==-10?1:(4[w]=sqrt(H*H+K*K+1)*w[3],H/=-4[w],K/=-4[w],
fabs(H*R + K*D + U/4[w])*exp(-l*l/2) );_((z)(m * 63)*2 + ((z)((p+1)*6) % 2 + (z)((d+1)*6) % 2 == 1 ? 1 : 0));O?l:(_(128),_(B!=
Z-1 ? Z : Z+1));}_(128);}_(_(129)-129);}_(0x3b);}