[C] GNU/Linux exec() Functions Family
#1
Selamat malam warga IBT, selamat hari raya Idul Fitri 1434 H, mohon maaf lahir batin sebelumnya.
Oke langsung saja, kali ini ane mau ngebahas keluarga dari fungsi exec() yang terdapat pada bahasa C di lingkungan GNU/Linux.

Sekilas tentang exec
1. Fungsi exec ini ketika di invoke atau dipanggil maka ia akan me-replace process dengan program baru yang dieksekusi oleh fungsi ini.

2. Terdapat pada file unistd.h
3. Hanya akan mengembalikan sebuah nilai (return value) jika terdapat kesalahan dalam proses pengeksekusian oleh fungsi ini. Dalam hal ini, return value nya adalah -1

Deklarasi fungsi
Code:
#include <unistd.h>

extern char **environ;

int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg,..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[], char *const envp[]);
int execve(const char *filename, char *const argv[], char *const envp[]);

Varian dari fungsi exec

1. Fungsi yang memiliki huruf p
Code:
execvp
execlp

kedua fungsi ini mencari file executable pada tiap path yang terdapat didalam environment variable PATH.
Namun, apabila terdapat karakter slash "/" pada argumen pertama, maka PATH akan diabaikan.

2. Fungsi yang memiliki huruf v
Code:
execvp
execv
execve

Fungsi - fungsi ini menerima argumen untuk program yang akan dieksekusi sebagai NULL-terminated array pointer ke string. Dan element terakhir dari array ini harus NULL

3. Fungsi yang memiliki huruf l
Code:
execl
execle
execlp

Fungsi - fungsi ini menerima argumen untuk program yang akan dijalankan menggunakan mekanisme varargs dari bahasa C.
Misalnya: arg0,arg1,arg2,arg3,argn...

4. Fungsi yang memiliki huruf e di akhir nama
Code:
execve
execvpe
execle

Fungsi - fungsi ini menerima argument terakhir sebagai environment variable, argument ini bertipe array dari pointer ke string. Dan tiap string harus berbentuk seperti ini -> "VARIABLE=value". Dan element terakhir dari array ini harus NULL


Contoh penggunaan
Code:
#include <stdio.h>
#include <unistd.h>

int main()
{
    /* Variabel untuk menampung argument untuk program yang akan dijalankan
       index pertama berisi nama program yang akan dieksekusi */
    char* args[] = {"ls","-l","/",NULL};
    
    /* Eksekusi! */
    execvp("ls",args);
    
    fprintf(stderr, "Error ketika mengeksekusi program\n");
}

Sekian dari saya, mohon maaf kalo banyak kesalahan, saya juga masih belajar.
Kritikan, saran, masukan akan sangat membantu proses belajar saya.
Jangan lupa koreksi kalau ada kesalahan. Thanks
Wassalam !

Referensi:
http://man7.org/linux/man-pages/man3/exec.3.html
http://man7.org/linux/man-pages/man2/execve.2.html

#2
nice om. tapi yang sering dipake di shellcoding tuh "execve" Big Grin wkwkwk. tp gpp kok. Big Grin

#3
(08-13-2013, 10:50 PM)alkaaf Wrote: nice om. tapi yang sering dipake di shellcoding tuh "execve" Big Grin wkwkwk. tp gpp kok. Big Grin

Woh, ane baru tau om. Belum pernah belajar shellcoding... >.<

Code ane diatas juga ada yang salah, ane ga ngeliat tombol edit dimanapun, jadi ga bisa ane revisi secara langsung.....
root@zombie:~# echo gua ganteng thank you Smile) > /var/log/syslog

#4
hehe lapor aja ke momod om. ntar di benerin

#5
pm ane om biar ane benerin mana yg mau dibenerin Big Grin
Every Second, Every Minutes, Every Hours, Every Days Its Never End

#6
(08-14-2013, 11:48 AM)ekawithoutyou Wrote: pm ane om biar ane benerin mana yg mau dibenerin Big Grin

Nahh, om eka penyelamat... Tunggu om, ane pm sekarang...

(08-14-2013, 06:59 AM)alkaaf Wrote: hehe lapor aja ke momod om. ntar di benerin

Iyaa siap om, tuh udah ada om eka. haha thanks Big Grin
root@zombie:~# echo gua ganteng thank you Smile) > /var/log/syslog

#7
Apakah Sudah betul Big Grin kalo masih salah PM lagi yak
Every Second, Every Minutes, Every Hours, Every Days Its Never End

#8
(08-14-2013, 12:15 PM)ekawithoutyou Wrote: Apakah Sudah betul Big Grin kalo masih salah PM lagi yak

Sejauh ini sudah betul om, terima kasih banyak Big Grin
root@zombie:~# echo gua ganteng thank you Smile) > /var/log/syslog

#9
(08-14-2013, 12:17 PM)T3rminate1 Wrote:
(08-14-2013, 12:15 PM)ekawithoutyou Wrote: Apakah Sudah betul Big Grin kalo masih salah PM lagi yak

Sejauh ini sudah betul om, terima kasih banyak Big Grin

Ok om Sep Wink
Every Second, Every Minutes, Every Hours, Every Days Its Never End

#10
bagus bro, anu ni bukanya yang buat bikin exploit ya mas bro






Users browsing this thread: 1 Guest(s)