Devilzc0de Forum Follow @devilzc0de
  • Home
  • Hacking
  • Networking
  • Programming
  • O.S
  • Server
  • Tweets
  • Search
  • Member List
  • Calendar
Current time: 05-20-2013, 12:37 AM Hello There, Guest! (Login — Register)
Devilzc0de Forum › Information Technology › Programming › C / C++ v
« Previous 1 ... 6 7 8 9 10 ... 15 Next »

[Tutor] Obfuscate source code C (bikin source code susah dibaca)

Home General Computer Multimedia Business Lounge

Pages (2): « Previous 1 2
Post Reply 
Tweet
Threaded Mode | Linear Mode
Tutor Obfuscate source code C (bikin source code susah dibaca)
01-15-2012, 02:11 AM
Post: #11
ev1lut10n Offline
./Devilz Officer
Posts: 239
Joined: Aug 2011
Reputation: 82
RE: Obfuscate source code C (bikin source code susah dibaca)
(01-14-2012 10:18 PM)donita Wrote:  salam DCers

wew.. kali ini mari kita ngebahas cara membuat source code kita susah dibaca orang hammer hammer

oke ada beberapa alasan kenapa source code kita di obfuscate:
- untuk melindungi algoritma kita (najong banget yang ini)
- untuk gaya-gayaan (you know me so well lah ngakak)
- untuk menyembunyikan alur dari program kita
- untuk ikut contest obfuscated c code (IOCCC)

halaman wikipedia : http://en.wikipedia.org/wiki/Obfuscated_code

salah satu source code dari wikipedia yg sudah di obfuscated

Oleh Óscar Toledo Gutiérrez, Best of Show entry in the 19th IOCCC, implementasi 8080 emulator
Code:
#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)); }

bisa baca gak tuh alur kerjanya tu program ? ngakak


oke ane gak begitu ahli dalam hal ini, tapi mari kita coba obfuscate code berikut ini :
Code:
#include <stdio.h>

main(){
    printf("devilzc0de");
}

ane obfuscate jadi kyk gini:
Code:
#include <stdio.h>
#define _ printf
#define _m main
#define _i int
#define _f for
#define __d _m(){
#define __e _i s[10] =
#define __v {0, 1,17,-13,3,14,-23,-51,52,1};
#define __i _i b = 100;
#define __l _i i;
#define __z _f(i=0;
#define __c i < 10; i++){
#define __0 b = b + s[i];
#define ___d _("%c",
#define ___e b); }}
__d __e __v __i __l __z __c __0 ___d ___e


[Image: 214rzt3.jpg]




gimana caranya???

pertama-tama, mari kita rubah kata devilzc0de menjadi, hmmm mari kita rubah jadi bentuk ascii char code
ane masukkan kata 'devilzc0de' di http://devilzc0de.org/forum/tools.php?x=decoder
dan mendapatkan hasil seperti berikut untuk ascii char:
Code:
100 101 118 105 108 122 99 48 100 101
untuk orang yg familiar dengan ascii char code pasti tau klo itu adalah sebuah string, mari kita buat semakin susah dengan cara.:
ambil sebuah basis, misalkan angka 100 sebagai basis, lalu kita ambil selisih nya masing,,,
100 ke 100 = 0
100 ke 101 = 1
101 ke 118 = 17
118 ke 105 = -13
105 ke 108 = 3
dan seterusnya sampe kita dapat urutannya seperti berikut:
Code:
0, 1,17,-13,3,14,-23,-51,52,1
nah udah agak mulai susah di terka kan, angka apa itu coba,
mari kita terapkan di source code

berikut source code yg sudah dimodifikasi:
Code:
#include <stdio.h>

main(){
    int selisih[10] = {0, 1,17,-13,3,14,-23,-51,52,1};
    int basis = 100;
    int i;

    for(i=0; i < 10; i++){
        basis = basis + selisih[i];
        printf("%c", basis);
    }
}
nah itu aja udah mulai susah dibaca kan... ketawaketawa


mari kita lanjut lagi kita obfuscate dengan menggunakan #define
berikut syntax untuk #define
Code:
#define <identifier> <replacement token list>                    // object-like macro
#define <identifier>(<parameter list>) <replacement token list>  // function-like macro, note parameters
silahkan googling atau buka buku untuk referensi lebih dalam mengenai #define

mari kita define beberapa fungsi , printf sebagai '_' , int sebagai '_i', for sebagai '_f' dan main sebagai '_m' ini bisa terserah kamu mau jadi apa, coba bandingkan source code dibawah ini dengan source code yg sebelumnya:
Code:
#include <stdio.h>
#define _ printf
#define _m main
#define _i int
#define _f for

_m(){
    _i selisih[10] = {0, 1,17,-13,3,14,-23,-51,52,1};
    _i basis = 100;
    _i i;

    _f(i=0; i < 10; i++){
        basis = basis + selisih[i];
        _("%c", basis);
    }
}

gimana udah mulai ngerti kan?
lanjut, mari kita ganti variable basis dan selisih menjadi b dan s
jadinya seperti ini:
Code:
#include <stdio.h>
#define _ printf
#define _m main
#define _i int
#define _f for

_m(){
    _i s[10] = {0, 1,17,-13,3,14,-23,-51,52,1};
    _i b = 100;
    _i i;

    _f(i=0; i < 10; i++){
        b = b + s[i];
        _("%c", b);
    }
}

hehe itu aja udah susah kan dibacanya, mari kita lanjutkan lagi menggunakan definenya, coba bandingkan source berikut dengan yg sebelumnya:
Code:
#include <stdio.h>
#define _ printf
#define _m main
#define _i int
#define _f for
#define __d _m(){
#define __e _i s[10] =
#define __v {0, 1,17,-13,3,14,-23,-51,52,1};


__d
    __e __v
    _i b = 100;
    _i i;

    _f(i=0; i < 10; i++){
        b = b + s[i];
        _("%c", b);
    }
}

lanjut lagi kita define untuk _i b = 100; dan _i i;
bandingkan source code dibawah ini dengan yg sebelumnya:
Code:
#include <stdio.h>
#define _ printf
#define _m main
#define _i int
#define _f for
#define __d _m(){
#define __e _i s[10] =
#define __v {0, 1,17,-13,3,14,-23,-51,52,1};
#define __i _i b = 100;
#define __l _i i;

__d
    __e __v
    __i
    __l

    _f(i=0; i < 10; i++){
        b = b + s[i];
        _("%c", b);
    }
}

nah udah mulai makin mantap kan... mari dilanjutkan untuk definenya lagi..perhatikan lagi perbandingannya
Code:
#include <stdio.h>
#define _ printf
#define _m main
#define _i int
#define _f for
#define __d _m(){
#define __e _i s[10] =
#define __v {0, 1,17,-13,3,14,-23,-51,52,1};
#define __i _i b = 100;
#define __l _i i;
#define __z _f(i=0;
#define __c i < 10; i++){

__d
    __e __v
    __i
    __l

    __z __c
        b = b + s[i];
        _("%c", b);
    }
}

ayoooo dikit lagiii.. sekarang yg bagian bawahnya ya.. liat lagi ni ane buat jadi seperti ini
Code:
#include <stdio.h>
#define _ printf
#define _m main
#define _i int
#define _f for
#define __d _m(){
#define __e _i s[10] =
#define __v {0, 1,17,-13,3,14,-23,-51,52,1};
#define __i _i b = 100;
#define __l _i i;
#define __z _f(i=0;
#define __c i < 10; i++){
#define __0 b = b + s[i];
#define ___d _("%c",
#define ___e b); }}

__d
    __e __v
    __i
    __l

    __z __c
        __0
        ___d ___e
perhatikan untuk yg ___d dan ___e itu garis bawahnya tiga, karena yg garis bawahnya dua __d dan __e sudah kita define sebelumnya..

oke mari coba kita bersih bersihkan spasi dan newlinenya , jadinya seperti ini :
Code:
#include <stdio.h>
#define _ printf
#define _m main
#define _i int
#define _f for
#define __d _m(){
#define __e _i s[10] =
#define __v {0, 1,17,-13,3,14,-23,-51,52,1};
#define __i _i b = 100;
#define __l _i i;
#define __z _f(i=0;
#define __c i < 10; i++){
#define __0 b = b + s[i];
#define ___d _("%c",
#define ___e b); }}
__d __e __v __i __l __z __c __0 ___d ___e

gimana mantap kan???
dibutuhkan kreatifitas dan ketekunan untuk trial n error sehingga kamu bisa makin mantap meng-obfuscate sebuah code...

dihalaman ini ada source code para pemenang dari IOCCC
http://www.ioccc.org/years.html
silahkan di oprek buat belajar

sekian tutorial dari ane nubitol...
semoga bermanfaat mantap


mantap mas bro mantapmantapmantapmantap
Find all posts by this user
Quote this message in a reply
01-15-2012, 09:12 AM
Post: #12
av01d3r Offline
paling ganteng se akhirat
Posts: 227
Joined: Feb 2011
Reputation: 5
RE: Obfuscate source code C (bikin source code susah dibaca)
mantap om asik
Visit this user's website Find all posts by this user
Quote this message in a reply
01-15-2012, 03:27 PM
Post: #13
ph0eniXb0y Offline
./Devilz Officer
Posts: 70
Joined: Jun 2011
Reputation: 5
RE: Obfuscate source code C (bikin source code susah dibaca)
kapan yah gua ga mabok liat program ginian..
prustasi
Find all posts by this user
Quote this message in a reply
01-16-2012, 11:16 AM
Post: #14
dewancc Offline
./Devilz Commander
Posts: 311
Joined: Dec 2009
Reputation: 1
RE: Obfuscate source code C (bikin source code susah dibaca)
Ini juga bsa dipake ke bahasa pemograman lain :)

Di PHP memanfaatkan enkripsi yg ada dan tinggal di tambah"in kek gtu aja, bisa buat enkripsi source dan jga password + username login ketawa

real_code + numb = source_1

Orang buat descript md5 aja udah pusing gmana klo dbkin modif md5nya...

md5 + 1 + a = pass_encript

Ya udah masuk ke database jga pusing sendiri liat 32 char di descript ketemu tapi gk jadi loginnya wkawka...
( abis dia gk liat proses loginnya kalau ada aksi custom encript save pass ke db, kemudian pada saat login ada logika descriptnya ).

*Hadeh aku kok jadi gila :-S
Find all posts by this user
Quote this message in a reply
02-04-2012, 11:34 AM
Post: #15
ack_attack Offline
adiknya syn-attack
Posts: 27
Joined: Feb 2012
Reputation: 13
RE: Obfuscate source code C (bikin source code susah dibaca)
kakak ketek ~# ijin mempelajari yaa kak?? ^_^
Find all posts by this user
Quote this message in a reply
« Next Oldest | Next Newest »
Pages (2): « Previous 1 2
Post Reply 


Topic Tools
Topic Link :
BBCode :
HTML Code :
View a Printable Version Send Thread to a Friend Subscribe to this thread
Submit Google Submit Face book Submit to Digg Submit to Reddit Submit to Furl Submit to Del.icio.us Submit to Jeqq

Possibly Related Threads...
Thread: Author Replies: Views: Last Post
  [Ask] C++ bikin botak coolkuya 2 158 12-19-2012 07:59 AM
Last Post: rusdy
  [Ask] Need Help, inefficient c source code cr0security 0 84 10-26-2012 05:00 AM
Last Post: cr0security
Sad [Ask] Bikin output segitiga bintang begini modelnya gimana ya? farhan007 5 638 10-16-2012 10:49 PM
Last Post: Rpm46
  Shell Code Generator wenkhairu 15 4,038 08-11-2012 12:20 AM
Last Post: pistol-air
  Paid Botnet Source print V4rcyion 0 188 06-16-2012 08:49 PM
Last Post: V4rcyion
  "USE CASTING IN YOUR C CODE BITCH" garfield 2 239 05-11-2012 01:41 PM
Last Post: wendyaja
  c quiz - find the bug of this c code ev1lut10n 11 844 03-22-2012 05:02 PM
Last Post: ack_attack
  (ASK) Cara menggunakan Code::Blocks IDE on UBUNTU Black.exe 3 704 03-11-2012 10:48 AM
Last Post: DC_Zulfikar
  [Ask] gimana caranya jadiin source ini exe ya? badwolves1986 17 1,334 02-21-2012 04:43 PM
Last Post: yusufelirhab
Tongue [Tutor] Bikin port scanner linuxhit 6 1,634 02-12-2011 04:01 AM
Last Post: putri sitasari

Users Browsing
1 Guest(s)

  • Contact Us
  • devilzc0de
  • Return to Top
  • Mobile Version
  • RSS Syndication
  • Help
Current time: 05-20-2013, 12:37 AM Powered By MyBB, © 2002-2013 MyBB Group. Theme created by Justin S. | Mixed By Chaer.Newbie | Fixed By Aditya

USING THIS SITE INDICATES THAT YOU HAVE READ AND ACCEPT OUR TERMS. IF YOU DO NOT ACCEPT THESE TERMS, YOU ARE NOT AUTHORIZED TO USE THIS SITE