Apakah ada kode obfuscator untuk PHP? [Tutup]


212

Adakah yang menggunakan obfuscator yang bagus untuk PHP? Saya sudah mencoba beberapa tetapi mereka tidak bekerja untuk proyek yang sangat besar. Mereka tidak dapat menangani variabel yang disertakan dalam satu file dan digunakan dalam yang lain, misalnya.

Atau apakah Anda punya trik lain untuk menghentikan penyebaran kode Anda?


11
Anda yakin perlu melakukannya?
Ceria

5
@ StevenA.Lowe: Waspadalah mengolok-olok PHP. :-)
Marco Demaio

89
Namun pertanyaan lain yang sangat bagus, konstruktif terkait pemrograman dalam format Q&A sempurna yang ditutup sebagai tidak konstruktif. Malu pada stack overflow ...
Petr

6
Itu Stack Overflow. Satu-satunya hal yang lebih produktif daripada pertanyaan tertutup yang seharusnya tidak ditutup adalah api pengguna ketika beberapa jorok miskin datang ke sini dan meminta bantuan.
Mac

2
Jika Anda pikir ini tidak boleh ditutup, pilih untuk membuka kembali.
Ira Baxter

Jawaban:


240

Anda dapat mencoba PHP protect yang merupakan PHP obfuscator gratis untuk mengaburkan kode PHP Anda.
Ini sangat bagus, mudah digunakan dan juga gratis.
EDIT: Layanan ini tidak hidup lagi.

Adapun apa yang orang lain telah tulis di sini tentang tidak menggunakan kebingungan karena dapat rusak dll:
Saya hanya punya satu hal untuk menjawab mereka - jangan mengunci pintu rumah Anda karena ada yang bisa mengambil kunci Anda.
Inilah yang terjadi, kebingungan tidak dimaksudkan untuk mencegah pencurian kode 100%. Itu hanya perlu membuatnya menjadi tugas yang memakan waktu sehingga akan lebih murah untuk membayar coder asli. Semoga ini membantu.


105
1 untuk menunjukkan fakta bahwa kebingungan adalah tentang membuatnya lebih sulit, bukan tidak mungkin.
Ashkan Kh. Nazary

3
perhatikan bahwa mengenkripsi kode sumber Anda alih-alih mengaburkannya tidak membuat tidak mungkin untuk mendekripsi, hanya saja sangat sulit untuk melakukannya.
xorinzor

9
Sudah mencobanya, tetapi tidak menyukainya. Itu hanya mengubah nama variabel, tidak menghapus komentar ..
Pisu

1
@Schwern, Biarkan pintu Anda tidak terkunci, maka sewa Columbo dan pengacara yang sangat baik, untuk melindungi diri Anda sendiri;)
David Newcomb

2
@ David Newcomb - Siapa yang ingin membayar pengacara yang sangat bagus ketika Anda bisa mengunci pintu?
azoundria

109

Orang akan menawarkan Anda obfuscator, tetapi tidak ada jumlah kebingungan dapat mencegah seseorang dari mendapatkan kode Anda. Tidak ada Jika komputer Anda dapat menjalankannya, atau dalam kasus film dan musik jika dapat memutarnya, pengguna dapat melakukannya. Bahkan mengompilasinya ke kode mesin hanya membuat pekerjaan sedikit lebih sulit. Jika Anda menggunakan obfuscator, Anda hanya membodohi diri sendiri. Lebih buruk lagi, Anda juga melarang pengguna Anda memperbaiki bug atau membuat modifikasi.

Perusahaan musik dan film belum cukup setuju dengan ini, mereka masih menghabiskan jutaan dolar untuk DRM.

Dalam bahasa yang ditafsirkan seperti PHP dan Perl itu sepele. Perl dulu memiliki banyak kode obfuscator, maka kami menyadari bahwa Anda dapat mendekompilasi mereka dengan mudah.

perl -MO=Deparse some_program

PHP memiliki hal-hal seperti DeZender dan Show My Code .

Saranku? Tulis lisensi dan dapatkan pengacara. Satu-satunya pilihan lain adalah tidak memberikan kode dan alih-alih menjalankan layanan yang dihosting.

Lihat juga entri perlfaq pada subjek .


220
Saya sebagian besar setuju dengan Anda, tetapi OP meminta rekomendasi produk, bukan kuliah tentang manfaat open source.
Eli

36
Tidak ada hubungannya dengan Open Source, yaitu tentang menumbuhkan kode tidak hanya bisa melihatnya. Kenyataannya adalah bahwa setiap kode atau data yang berjalan pada mesin pengguna pada akhirnya transparan tidak peduli bagaimana Anda mengkompilasi atau mengaburkan atau mengenkripsi itu, berhenti penuh. OP perlu memahami hal itu.
Schwern

7
@JamShady: Kebingungan tidak berarti Anda tidak dapat memperbaiki bug atau membuat modifikasi. Jika Anda dengan bodohnya mengaburkan kode sumber, membuang yang asli, dan bersikeras mempertahankan hasil yang dikaburkan, ya, Anda tidak akan dapat melakukan apa pun. Obfuscator yang baik bersikeras Anda menyimpan kode Anda dan pemetaan untuk hasil yang dikaburkan; Anda dapat men-debug / memodifikasi kode asli Anda, mengirimkan tambalan yang dikaburkan kepada pelanggan Anda, dan bahkan mendiagnosis masalahnya dengan menggunakan peta untuk mengonversi keluhan yang dikaburkan kembali menjadi yang dapat dibaca. Dia tidak memiliki peta, yang membuat ini aman.
Ira Baxter

34
Pertanyaan: Bagaimana, Jawab: Anda tidak boleh = tidak membantu
cmc

26
@ cmc Saya yakin banyak orang akan langsung menjawab pertanyaan itu, jadi tidak ada salahnya saya mengambil cara yang berbeda. Setengah poin dari meminta seorang ahli adalah mereka tahu ketika Anda mengajukan pertanyaan yang salah untuk menyelesaikan masalah yang sebenarnya. Ini adalah aplikasi "5 Whys". en.wikipedia.org/wiki/5_Whys Masalah / pertanyaan sebenarnya adalah "bagaimana saya menghentikan orang agar tidak bisa membaca / mencuri kode PHP saya". Jawabannya adalah jika Anda mengirimkan kode yang tidak bisa, tetapi Anda dapat membuang banyak waktu dan uang untuk mencoba dan mendapatkan rasa aman yang salah. Bukankah itu lebih bermanfaat daripada daftar obfuscator?
Schwern

31

Tidak ada yang sempurna. Jika Anda hanya ingin sesuatu menghentikan non-programmer maka inilah sedikit skrip yang saya tulis yang dapat Anda gunakan:

<?php
$infile=$_SERVER['argv'][1];
$outfile=$_SERVER['argv'][2];
if (!$infile || !$outfile) {
    die("Usage: php {$_SERVER['argv'][0]} <input file> <output file>\n");
}
echo "Processing $infile to $outfile\n";
$data="ob_end_clean();?>";
$data.=php_strip_whitespace($infile);
// compress data
$data=gzcompress($data,9);
// encode in base64
$data=base64_encode($data);
// generate output text
$out='<?ob_start();$a=\''.$data.'\';eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();ob_end_clean();?>';
// write output text
file_put_contents($outfile,$out);

19
Luar biasa? Setiap halaman dilengkapi dengan solusi lengkap untuk mendapatkan sumber: jalankan "gzuncompress (base64_decode ($ a))". Ya, ini akan menghentikan non-programmer. Tetapi kemudian kode sumber asli akan menghentikan non-programer, siapa yang butuh pengkodean untuk itu? Satu-satunya orang yang akan melihat ini bermaksud untuk merekayasa balik itu adalah seorang programmer PHP.
Ira Baxter

2
Sebagian besar waktu non-programmer mencoba dengan mencari beberapa string dalam kode sumber yang ingin mereka ubah, saya juga mencari solusi yang hanya menghentikan non programer dari perubahan kode sumber misalnya nama domain, nama basis data, pengguna dll
Asad kamran

Ini jawaban yang sangat membantu bagi saya. Saya hanya tertarik mencegah pengguna agar tidak mudah membuka "database.php" saya di notepad dan melihat nama pengguna dan kata sandi basis data saya.
TimH - Codidact

20

Saya tidak yakin Anda dapat memberi label kebingungan pada bahasa yang ditafsirkan sebagai tidak ada gunanya (Saya tidak dapat menambahkan komentar ke posting Schwern, jadi inilah entri baru).

Saya pikir ini agak picik untuk menganggap Anda tahu semua skenario yang mungkin terjadi di mana seseorang ingin mengaburkan kode, dan Anda menganggap bahwa siapa pun akan benar-benar mau pergi ke apa pun yang diperlukan untuk melihat kode yang pernah dikaburkan. Pertimbangkan skenario saya saat ini:

Saya bekerja untuk perusahaan konsultan yang sedang mengembangkan situs berbasis PHP yang besar dan cukup canggih. Proyek ini akan di-host di server klien yang meng-hosting situs lain yang dikembangkan oleh konsultan lain. Secara teknis, kode apa pun yang kami tulis adalah milik klien, jadi kami tidak dapat melisensikannya. Namun, konsultasi lain (pesaing) dengan akses ke server dapat menyalin kode kami tanpa terlebih dahulu mendapat izin dari klien. Karena itu, kami memiliki alasan tulus untuk kebingungan - untuk membuat upaya yang diperlukan agar pesaing memahami kode kami lebih dari upaya menciptakan salinan pekerjaan kami dari awal.


16

Lihat SD Thicket PHP Obfuscator kami untuk obfuscator yang berfungsi baik dengan set halaman besar yang sewenang-wenang. Ini beroperasi terutama dengan mengacak nama pengenal. Dengan aplikasi sederhana ke besar, ini dapat membuat kode sangat sulit untuk dipahami, yang merupakan tujuan keseluruhan.

Itu tidak membuang-buang energi pada skema "eval (decode ( encodedprogramcode ))" ", yang dilakukan oleh banyak PHP" obfuscators "[ini adalah" encoder ", bukan" obfuscator "s], karena setiap clod dapat menemukan panggilan itu dan jalankan eval-decode sendiri dan dapatkan kode yang di-decode.

Ini menggunakan parser tepat bahasa untuk memproses PHP; itu akan memberi tahu Anda jika program Anda secara sintaksis tidak valid. Lebih penting lagi, ia tahu seluruh bahasa dengan tepat; itu tidak akan hilang atau bingung, dan itu tidak akan merusak kode Anda (selain itu apa yang terjadi jika Anda mengaburkan "salah", misalnya, gagal mengidentifikasi API publik dari kode dengan benar).

Ya, itu mengaburkan pengidentifikasi secara identik di seluruh halaman; jika tidak melakukan itu, hasilnya tidak akan berhasil.


1
Penanda: Anda dapat meminta izin untuk mengatakan mengapa Anda menandai ini. Ini menjawab pertanyaan OP secara langsung, termasuk masalah spesifiknya.
Ira Baxter

Dari apa yang saya tahu ini adalah EXE yang berjalan di bawah Windows saja? Setidaknya eval adalah file .exe ...
Craig Jacobs

File eval adalah penginstal berbasis .exe. Kebenaran yang rumit adalah produk yang diinstal biasanya berjalan dari skrip .cmd karena ada bahasa pemrograman paralel di bawahnya, tetapi Anda tidak akan pernah melihatnya. Itu dirancang terutama sebagai produk Windows; Namun, jika Anda menginstalnya di Linux dengan Wine, itu akan berjalan dengan skrip .sh yang diinstal dengan itu seolah-olah itu adalah alat Linux asli. Jika Anda menggunakan bagian GUI (opsional, kebanyakan orang ingin menjalankannya sebagai skrip dalam proses pembuatan produksi), ia menggunakan Java asli pada Windows, dan Java asli di Linux.
Ira Baxter

Benarkah Thicket membutuhkan tambahan ruang hosting? Jika ya, bagaimana cara menginstal di hosting bersama?
Stephen Adelakun

@StephenAdelakun: Thicket tidak memerlukan perubahan ke server. Unduh dan periksa dokumentasinya.
Ira Baxter

14

Yang terbaik yang saya lihat adalah Zend Guard .


2
SD PHP Obfuscator sama baiknya, dan biayanya sekitar 1/5.
Ira Baxter

1
@SalmanPK Dan alasan untuk itu seharusnya jelas?
The Pellmeister

@SalmanPK Membutuhkan tambahan untuk ruang hosting web. Zend Guard mungkin juga demikian. Tidak yakin mana yang paling utama. Pokoknya, masalahnya adalah ia mengurangi audiens potensial Anda.
James P.

1
PHP Obfuscator SD mengubah semua menjadi huruf kecil. Itu akan menjadi masalah jika Anda menggunakan kerangka kerja.
Amil Waduwawara

1
@JamesPoulson: Tidak jelas apakah komentar Anda diarahkan ke obfuscator SD PHP. Hanya untuk menjadi jelas, itu tidak memerlukan addon ke ruang hosting web.
Ira Baxter

10

Coba yang ini: http://www.pipsomania.com/best_php_obfuscator.do

Baru-baru ini saya menulisnya di Jawa untuk mengaburkan proyek PHP saya, karena saya tidak menemukan yang baik dan kompatibel yang siap ditulis di internet, saya memutuskan untuk meletakkannya online sebagai saa, jadi semua orang menggunakannya secara gratis. Itu tidak mengubah nama variabel antara skrip yang berbeda untuk kompatibilitas maksimum, tetapi mengaburkan mereka sangat baik, dengan logika acak, setiap instruksi juga. String ... semuanya. Saya percaya ini jauh lebih baik daripada codeeclip buggy ini, yaitu dengan cara ditulis dalam PHP dan sangat lambat :)


Terlihat bagus ... tapi apakah itu aman? Maksud saya, bisakah orang lain mendekripsi dengan mudah?
shasi kanth

Saya dapat meyakinkan Anda bahwa pada saat ini TIDAK ADA yang dapat menghapus kode yang dikaburkan oleh obfuscator ini.
PatlaDJ

3
[Kutipan diperlukan] - Enkripsi homebrew adalah keamanan melalui ketidakjelasan, yang tidak ada keamanan sama sekali.
Chris Baker

8
"Saya dapat meyakinkan Anda bahwa pada saat ini TIDAK ADA yang dapat menghapus kode" Bahkan PHP? Jika PHP bisa melakukannya maka orang lain juga bisa. Terlihat sebagai kode sampel di situs Anda, di suatu tempat Anda akan memiliki statemen eval yang membuang kode, mengubahnya menjadi gema dan kode Anda akan ditampilkan.

3
PERINGATAN: Metode ini dapat didekodekan kembali menjadi nama variabel semula, lihat: lombokcyber.com/en/detools/decode-pipsomania
Zane Hooper

3

Thicket ™ Obfuscator untuk PHP

Alat PHP Obfuscator mengacak kode sumber PHP untuk membuatnya sangat sulit untuk dipahami atau direkayasa ulang (misalnya). Ini memberikan perlindungan signifikan untuk kekayaan intelektual kode sumber yang harus di-host di situs web atau dikirim ke pelanggan. Ini adalah anggota keluarga SD Source Code Obfuscators.


TrueBug.com tidak dapat dijangkau. Saya tahu saya memposting komentar setelah lebih dari 3 tahun, tetapi bisakah Anda membantu dengan url baru trueBug, jika ada?
Stephen Adelakun

@StephenAdelakun Apakah Anda hanya perlu TrueBug? Gunakan ini: TruBug PHP Obfuscator .
Praveen Kumar Purushothaman

Maaf, tautannya tidak berfungsi. Atau apakah saya melewatkan sesuatu?
Stephen Adelakun

@StephenAdelakun Saya baru saja memeriksa sekarang, berfungsi.
Praveen Kumar Purushothaman

1
@StephenAdelakun Kenapa hanya itu? :(Itu perangkat lunak yang mati. Ada yang lebih baik dan mengagumkan sekarang bukan?
Praveen Kumar Purushothaman

2

Menggunakan SourceGuardian bagus karena dilengkapi dengan GUI yang keren dan mudah digunakan.

Namun perlu diperhatikan:

Perhatikan ketentuan-ketentuan lisensi lucu yang sebelumnya.

  • Anda hanya diperbolehkan menjalankan 1 per mesin - sejauh ini dapat diterima
  • Jika Anda ingin menjalankan antarmuka baris perintah di mesin lain, katakan server web Anda, ANDA AKAN MEMBUTUHKAN LISENSI LAIN (Ya, itu lucu dan saya dapat mendengar Anda tertawa juga).

2
Itu tampak normal bagi saya! 2 mesin = 2 lisensi! Biasanya yang dilakukan orang adalah menyandikan semuanya di satu mesin, lalu mengunggahnya ke yang lain.
David Newcomb

@davidnewcomb Anda sepertinya tidak mengerti maksudnya. Anda biasanya mengenkripsi kode pada mesin dev Anda sebelum mengirimnya. Jika Anda perlu melakukannya secara online antarmuka baris perintah juga memerlukan lisensi tambahan, yang jelas tidak benar. Anda cenderung meletakkan antarmuka baris perintah pada server web dan bukan pada kotak lokal Anda.
Herr

2
TL; DR perlindungan yang baik, persyaratan lisensi bodoh.
Herr

1
Harus 1 lisensi per pengguna, bukan per mesin.
beppe9000

@ beppe9000 Setuju!
Herr

-16

Kebingungan hanya menambahkan lapisan bug potensial dan kerentanan keamanan lain ke program Anda. Tolong jangan lakukan itu.

Jenis orang yang menulis perangkat lunak kebingungan biasanya tampak sangat samar dan tidak terampil.

Jika kode Anda "hebat", cracker akan berusaha keras untuk menyebarkannya, terlepas dari apakah itu dikaburkan atau tidak. Jika tidak ada yang tahu / peduli dengan kode Anda, mereka mungkin juga tidak.


7
Tidak terampil? Berdasarkan bukti apa? Saya menulisnya. Periksa bio saya sebelum Anda melakukan generalisasi. semanticdesigns.com/Company/People/idbaxter
Ira Baxter

5
@ Isa: Pernyataan saya masih berlaku. Sebagian besar kode yang dikaburkan dapat rusak dalam beberapa menit. Maksud saya secara khusus, kebanyakan orang yang melakukannya tidak terampil, tidak semua . Hal pertama yang terlintas dalam pikiran saya adalah Ioncube, dan tentu saja, ia memiliki kerentanan yang diterbitkan: osvdb.org/show/osvdb/41708 . Kemudian lagi Anda mungkin bisa sebagian menyalahkan bahwa pada persyaratan keamanan PHP tidak jelas.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

3
Kebingungan, jika dilakukan dengan alat yang andal, tidak mengubah apa pun tentang keandalan suatu program. Kompilasi biner adalah semacam kebingungan ekstrim, namun saya kira Anda yakin bahwa mesin PHP Zend dapat diandalkan. (Kebingungan atau kompilasi yang dilakukan dengan alat yang buruk seharusnya tidak masuk hitungan).
Ira Baxter

1
siapa pun dengan setengah otak tahu bahwa php sedang berjuang (baca "tidak ada") di pasar perangkat lunak perusahaan dunia nyata karena itu tidak dikaburkan pada asp.net. Saya sangat muak dengan penginjil lemah yang mengatakan hal lain. (dan ya, itulah ketidaktahuan yang disengaja). Open Source sudah terlalu lama dan sudah dicoba dan ternyata terlalu sering ingin ada kesimpulan lain selain ini: hobi? Sumber Terbuka. Pekerjaan? Enkripsikan. Hanya orang bodoh / idiot / orang yang hidup dalam gelembung / memiliki ayah kaya yang pernah bisa berpikir berbeda.
conners

2
Komentar itu hampir tidak dapat dipahami oleh saya, tetapi tampaknya menyiratkan bahwa tidak masuk akal untuk menjual perangkat lunak sumber terbuka atau perangkat lunak yang dibangun berdasarkan perangkat lunak sumber terbuka. Jika Anda tidak memperhatikan, Java adalah "perusahaan", open source, dan sama suksesnya dengan .NET. perusahaan saya menghasilkan jutaan dolar, dan kami tidak pernah menggunakan kebingungan. Tanyakan kepada diri Anda sendiri: apa gunanya menjual perangkat lunak jika Anda tidak dapat mendukung / memperbaikinya (yaitu: Anda baru saja memecahkan perangkat lunak orang lain dan menjualnya kembali)?
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.