Dalam dunia pengembangan software ataupun aplikasi ada satu buah istilah yang mengarah pada menciptakan kebingungan. Hal ini sama seperti apa yang terjadi dirumah atau berkomunikasi dengan teman baik kamu. Analoginya seperti ini lebih kurang seperti ini

Nafri ingin pergi meninggalkan rumahnya tetapi ia tidak bisa meninggalkannya karena jika kuncinya dibawa pergi maka orang rumah akan kesulitan untuk membuka rumahnya dikarenakan orang rumahnya tidak memiliki kunci tersebut. Jadi pada akhirnya nafri yang bingung pun menciptakan kebingungan itu sendiri. Nafri berinisiatif untuk meletakkan kunci rumahnya dibawah pot bunga yang ada di perkarangan rumahnya. Setelah itu nafri pun mengabarkan bahwa kunci berada pada posisi dibawah pot bunga kepada orang rumah. Orang lain yang melewati rumah atau sempat datang kerumah ternyata tidak ada orang dan kedatangan salah seorang maling pun tentu tidak akan mengira kalau kunci rumah tersebut ada di balik pot bunga”

cerita pertama dari nafri tersebut ia ingin membuat orang lain merasa kebingungan, tapi sebenarnya hal itu tidak akan membuat orang lain merasa bingung apabila orang lain mengetahui alur cerita dan meningkatkan rasa penasarannya dengan penulusuran ataupun proses inteligensi.

Hal diatas juga terjadi pada dunia coding mengoding tentunya. Menciptakan kebingunan itu ada seninya sendiri dan yang pada akhir tujuannya membuat orang-orang sulit untuk mengerti dan bukan malah membuat orang-orang mudah untuk mengerti.

caranya pasti mudah sekali dan jawaban itu adalah “buatlah sebuah ketidak biasaan” ketika membuat sesuatu yang tidak biasa membuat orang akan sulit menebak ataupun memprediksi.

Seni ini masuk kedalam sebuah seni komunikasi dan mengamankan komunikasi itu sendiri agar tidak terlihat dengan jelas.

Ini juga yang akhirnya memberikan pekerjaan bagi orang-orang yang suka berfikir kebalik dari biasanya dan dalam dunia perteknisan dikenal dengan istilah “reverse engineering”.

Tugas seorang reverse engineering adalah memecahkan puzzle yang sudah diciptakan oleh orang lain dengan tujuan bermacam-macam.

Oh ya ini ada kompetisinya loh!

Mengasah Otak

Dikenal dengan istilah brain teaser yang salah satu penggemarnya itu adalah Archimedes yakni seorang ahli dalam bidang matematika. Kembali ke topik bahwa membuat kebingungan ini ada kontesnya juga loh!

beberapa diantaranya seperti Obfuscated Perl Contest bertahan sampai tahun 2000an, International Obfuscated C Code Contest yang di kendarai oleh Landon Curt Noll dan Larry Bassel ini bertahan sampai sekarang atau terakhir 2019 lalu.

[!VIDEO https://www.youtube.com/embed/rwOI1biZeD8]

Jadi seni membuat kebingungan ini agar tidak bisa ditebak dan kebalikannya menebak hal yang sulit untuk ditebak.

obfuscator di Pemrograman

Beberapa orang yang takut akan kodingannya diketahui dengan jelas ia membuat buram kodenya untuk dilihat dengan jelas oleh “bahasa manusia” dan membuat sesuatu yang sesungguhnya bukan jadi sebuah masalah bagi komputer untuk mengetahuinya dengan jelas. Hal ini tentu akan mencegah dari kerusakan terhadap program yang sudah dirancang dari mengklabui nama yang sebenarnya menjadi nama yang menipu atau hal-hal yang bersifat abstrak.

#include <stdio.h>
           #define n(o,p,e)=y=(z=a(e)%16 p x%16 p o,a(e)p x p o),h(
                                #define s 6[o]
             #define p z=l[d(9)]|l[d(9)+1]<<8,1<(9[o]+=2)||++8[o]
                                #define Q a(7)
           #define w 254>(9[o]-=2)||--8[o],l[d(9)]=z,l[1+d(9)]=z>>8
                               #define O )):((
                  #define b (y&1?~s:s)>>"\6\0\2\7"[y/2]&1?0:(
                               #define S )?(z-=
                    #define a(f)*((7&f)-6?&o[f&7]:&l[d(5)])
                               #define C S 5 S 3
                       #define D(E)x/8!=16+E&198+E*8!=x?
                             #define B(C)fclose((C))
                       #define q (c+=2,0[c-2]|1[c-2]<<8)
                          #define m x=64&x?*c++:a(x),
                         #define A(F)=fopen((F),"rb+")
                    unsigned char o[10],l[78114],*c=l,*k=l
                          #define d(e)o[e]+256*o[e-1]
#define h(l)s=l>>8&1|128&y|!(y&255)*64|16&z|2,y^=y>>4,y^=y<<2,y^=~y>>1,s|=y&4
+64506; e,V,v,u,x,y,z,Z; main(r,U)char**U;{

     { { { } } }       { { { } } }       { { { } } }       { { { } } }
    { { {   } } }     { { {   } } }     { { {   } } }     { { {   } } }
   { { {     } } }   { { {     } } }   { { {     } } }   { { {     } } }
   { { {     } } }   { { {     } } }   { { {     } } }   { { {     } } }
   { { {     } } }   { { {     } } }   { { {     } } }   { { {     } } }
    { { {   } } }    { { {     } } }    { { {   } } }    { { {     } } }
      { { ; } }      { { {     } } }      { { ; } }      { { {     } } }
    { { {   } } }    { { {     } } }    { { {   } } }    { { {     } } }
   { { {     } } }   { { {     } } }   { { {     } } }   { { {     } } }
   { { {     } } }   { { {     } } }   { { {     } } }   { { {     } } }
   { { {     } } }   { { {     } } }   { { {     } } }   { { {     } } }
    { { {   } } }     { { {   } } }     { { {   } } }     { { {   } } }
     { { { } } }       { { { } } }       { { { } } }       { { { } } }

                                   for(v A((u A((e A((r-2?0:(V A(1[U])),"C")
),system("stty raw -echo min 0"),fread(l,78114,1,e),B(e),"B")),"A")); 118-(x
=*c++); (y=x/8%8,z=(x&199)-4 S 1 S 1 S 186 S 2 S 2 S 3 S 0,r=(y>5)*2+y,z=(x&
207)-1 S 2 S 6 S 2 S 182 S 4)?D(0)D(1)D(2)D(3)D(4)D(5)D(6)D(7)(z=x-2 C C C C
C C C C+129 S 6 S 4 S 6 S 8 S 8 S 6 S 2 S 2 S 12)?x/64-1?((0 O a(y)=a(x) O 9
[o]=a(5),8[o]=a(4) O 237==*c++?((int (*)())(2-*c++?fwrite:fread))(l+*k+1[k]*
256,128,1,(fseek(y=5[k]-1?u:v,((3[k]|4[k]<<8)<<7|2[k])<<7,Q=0),y)):0 O y=a(5
),z=a(4),a(5)=a(3),a(4)=a(2),a(3)=y,a(2)=z O c=l+d(5) O y=l[x=d(9)],z=l[++x]
,x[l]=a(4),l[--x]=a(5),a(5)=y,a(4)=z O 2-*c?Z||read(0,&Z,1),1&*c++?Q=Z,Z=0:(
Q=!!Z):(c++,Q=r=V?fgetc(V):-1,s=s&~1|r<0) O++c,write(1,&7[o],1) O z=c+2-l,w,
c=l+q O p,c=l+z O c=l+q O s^=1 O Q=q[l] O s|=1 O q[l]=Q O Q=~Q O a(5)=l[x=q]
,a(4)=l[++x] O s|=s&16|9<Q%16?Q+=6,16:0,z=s|=1&s|Q>159?Q+=96,1:0,y=Q,h(s<<8)
O l[x=q]=a(5),l[++x]=a(4) O x=Q%2,Q=Q/2+s%2*128,s=s&~1|x O Q=l[d(3)]O x=Q  /
128,Q=Q*2+s%2,s=s&~1|x O l[d(3)]=Q O s=s&~1|1&Q,Q=Q/2|Q<<7 O Q=l[d(1)]O s=~1
&s|Q>>7,Q=Q*2|Q>>7 O l[d(1)]=Q O m y n(0,-,7)y) O m z=0,y=Q|=x,h(y) O m z=0,
y=Q^=x,h(y) O m z=Q*2|2*x,y=Q&=x,h(y) O m Q n(s%2,-,7)y) O m Q n(0,-,7)y)  O
m Q n(s%2,+,7)y) O m Q n(0,+,7)y) O z=r-8?d(r+1):s|Q<<8,w O p,r-8?o[r+1]=z,r
[o]=z>>8:(s=~40&z|2,Q=z>>8) O r[o]--||--o[r-1]O a(5)=z=a(5)+r[o],a(4)=z=a(4)
+o[r-1]+z/256,s=~1&s|z>>8 O ++o[r+1]||r[o]++O o[r+1]=*c++,r[o]=*c++O z=c-l,w
,c=y*8+l O x=q,b z=c-l,w,c=l+x) O x=q,b c=l+x) O b p,c=l+z) O a(y)=*c++O r=y
,x=0,a(r)n(1,-,y)s<<8) O r=y,x=0,a(r)n(1,+,y)s<<8))));
system("stty cooked echo"); B((B((V?B(V):0,u)),v)); }

yang diatas, Terlihat indah kan?

Menerapkan obfuscation ini juga memberikan dampak yang baik dari efektifnya waktu eksekusi, memori jadi tidak letih untuk bekerja, jadi lebih rahasia.

Oh ya perusahaan pembuat software tentunya menerapkan ini apalagi jika pada software tersebut terdapat lisensi dalam penggunaannya. Contohnya Game, Software-software yang sejuta umat seperti office yang memiliki serial key untuk dipecahkan.

Pada akhirnya pihak office dan banyak pabrikan software lainnya membuat sistem cek lisesnsi secara online di belakang layar tapi kenyataannya proses cekking tersebut dikelabui dengan membuat topeng baru yang terlihat sama seperti ibunya sendiri tapi sebenarnya itu adalah setan yang sedang berubah wujud.

Tetapi ini juga membuat beberapa hal yang

Hakcipta selalu jadi perdebatan

anyone can pick your lock, don’t lock your house door!