Jadi gini, tadi saya sempat cek source code yang diobfuscate menggunakan PHPObfuscator entah versi berapa. Nah, yang menarik adalah, ternyata PHPObfuscator yang digunakan mencoba untuk mendeteksi apakah script tersebut dijalankan dengan modul evalhook. Berikut ini adalah potongan script yang dimaksud:

error_reporting(0);
if (extension_loaded("\x65\x76\141\154\x68\157"."o\153")) {
    unlink(__FILE__);
    die();
}

Berikut ini adalah potongan kode tersebut yang lebih mudah dibaca:

error_reporting(0);
if (extension_loaded("evalhook")) {
    unlink(__FILE__);
    die();
}

Nah, kode tersebut akan melakukan harakiri alias menghapus dirinya sendiri jika dijalankan dengan modul evalhook. Salah satu cara yang bisa digunakan untuk melewati proteksi semacam itu, adalah dengan menghapus bagian tersebut. Namun ada cara lain, yaitu melakukan kompilasi ulang evalhook dan mengubahnya menjadi nama lain, misalnya koohlave. Caranya cukup mudah, cukup clone repositori evalhook dari github, ubah namanya sesuai keinginan, lalu kompilasi dan instalasi ulang seperti ini:

% git clone https://github.com/drubicza/evalhook
% cd evalhook
% mv php_evalhook.h php_koohlave.h
% mv evalhook.c koohlave.c
% sed -i 's/evalhook/koohlave/g' *
% sed -i 's/EVALHOOK/KOOHLAVE/g' *
% phpize
% ./configure
% make -j4
% sudo make install

Berikut ini adalah contoh modul evalhook yang telah dikompilasi ulang dan melewati proteksi tersebut:

% cat test.php
<?php
if (extension_loaded("evalhook")) {
    unlink(__FILE__);
    die();
}
echo "w00t\n";
?>

% php -d extension='koohlave.so' test.php
w00t

Bisa terlihat bahwa kita telah berhasil melewati proteksi tersebut :D . Sekian journal singkat kali ini, semoga bermanfaat. Terima kasih kepada Allah SWT, dan Anda yang telah membaca tutorial ini.

Jika versi php nya kek gini

if (extension_loaded("evalhook")) {
    unlink(__FILE__);
    die();
}

Lalu kalau versi python nya gimana gan tau gak,? Misalnya jika file di jalankan menggunakan file binary selain python maka file nya akan terhapus ,ya hampir sama kek yang diatas, contoh:

python file.pyc ☑️ Uncompyle6 file.pyc ❎ pycdc file.pyc ❎ pydisasm file.pyc ❎

Nah jadi file tersebut gak bisa di decompile menggunakan module tersebut, aku udah muter² di google tapi kebanyakan jawaban nya gak sesuai harapan, udah nyoba juga pake if tapi gak berhasil,

Pakai if nya seperti apa? Btw, kalau pakai python lebih mudah untuk didecompile dan semacamnya. Kalau emg serius, bikin pakai C/C++ atau assembly aja.

pernah ku coba kaya gini ,tapi cuman ngaruh saat file di jalankan saja,

if 'file.py' not in sys.argv[0]:
    exit()
elif sys.argv[0] == 'file.pyc':
    exit()
else:
    main()

dan baru sadar kemarin klo file python ya di harus di jalankan menggunakan python agar berfungsi , maka nya pas di decompile menggunakan module lain tetap bisa,

Ada Saran Gak Gan Compile Python Yang lumayan Buat orang pusing saat di decompile?

Ini pasti obfuscate nya eddikiddiw ya gan?

Yup, benar 💯