PHP için bir kod obfuscator var mı? [kapalı]


212

PHP için iyi bir obfuscator kullanan var mı? Bazılarını denedim ama çok büyük projeler için çalışmıyorlar. Örneğin, bir dosyaya dahil edilen ve başka bir dosyada kullanılan değişkenleri işleyemezler.

Veya kodunuzun yayılmasını durdurmak için başka hileleriniz var mı?


11
İhtiyacınız olduğundan emin misiniz?
Neşeli

5
@ StevenA.Lowe: PHP ile dalga geçmekten kaçının. :-)
Marco Demaio

89
Yine yapıcı olmayan olarak kapatılan mükemmel Soru-Cevap formatında gerçekten iyi, yapıcı bir programla ilgili soru. Yığın taşması üzerine utanç ...
Petr

6
Bu Yığın Taşması. Kapatılmaması gereken kapalı sorulardan daha verimli olan tek şey, bazı zayıf sloblar buraya geldiğinde ve yardım istediğinde kullanıcı alevleridir.
Mac

2
Bunun kapatılmaması gerektiğini düşünüyorsanız, yeniden açmak için oy verin.
Ira Baxter

Yanıtlar:


240

PHP kodunuzu gizlemek için ücretsiz bir PHP obfuscator olan PHP korumasını deneyebilirsiniz .
Çok güzel, kullanımı kolay ve aynı zamanda ücretsiz.
EDIT: Bu hizmet artık yayında değil.

Diğerlerinin burada, vb
.
Bu tam olarak böyledir, gizleme% 100 kod hırsızlığını önlemeye yönelik değildir. Sadece zaman alıcı bir görev yapması gerekiyor, böylece orijinal kodlayıcıyı ödemek daha ucuz olacak. Bu yardımcı olur umarım.


105
+1, gizlemenin onu Zorlaştırmak, imkansız değil olduğunu belirtmek için.
Aşkan Kh. Nazary

3
kaynak kodunuzu gizlemek yerine şifrelemenin de şifresini çözmeyi imkansız hale getirmediğini unutmayın, bunu yapmak gerçekten zor.
xorinzor

9
Denedim ama beğenmedim. Sadece değişken isimlerini değiştirir, yorumları kaldırmaz ..
Pisu

1
@Schwern, Kapının kilidini açık bırak, sonra Columbo ve gerçekten iyi bir avukat tut, kendini örtbas et;)
David Newcomb

2
@David Newcomb - Kapıyı kilitlediğinizde kim gerçekten iyi bir avukat ödemek ister?
azoundria

109

İnsanlar size gizleme önermezler, ancak hiçbir gizlilik kodunuzun birisinin kodunuza girmesini engelleyemez. Yok. Bilgisayarınız onu çalıştırabilirse veya oynatabiliyorsa film ve müzik durumunda, kullanıcı ona ulaşabilir. Makine koduna derlemek bile işi biraz daha zorlaştırıyor. Bir obfuscator kullanıyorsanız, sadece kendinizi kandırıyorsunuz. Daha da kötüsü, kullanıcılarınızın hataları düzeltmesine veya değişiklik yapmasına izin vermiyorsunuz.

Müzik ve film şirketleri bu konuda henüz tam bir anlaşmaya varamadılar, hala milyonlarca insanı DRM'ye harcıyorlar.

PHP ve Perl gibi yorumlanan dillerde önemsizdir. Perl eskiden çok sayıda kod gizleyiciye sahipti, sonra onları önemsiz bir şekilde koda edebileceğinizi fark ettik.

perl -MO=Deparse some_program

PHP DeZender ve Show My Code gibi şeylere sahiptir .

Benim tavsiyem? Bir lisans yazın ve bir avukat edinin. Diğer tek seçenek kodu vermemek ve bunun yerine barındırılan bir hizmeti çalıştırmaktır.

Ayrıca konuyla ilgili perlfaq girdisine de bakınız .


220
Çoğunlukla sizinle aynı fikirdeyim, ancak OP, açık kaynakların esası hakkında bir ders değil, bir ürün önerisi istedi.
Eli

36
Açık Kaynak ile bir ilgisi yoktur, bu sadece kodu görmek için değil, kodu ezmekle ilgilidir. Gerçek şu ki, bir kullanıcının makinesinde çalışan herhangi bir kod veya veri, onu nasıl derlediğinize, gizlediğinize veya şifrelediğinize bakılmaksızın tamamen şeffaftır. OP bunu anlamalı.
Schwern

7
@ JamShady: Gizleme, hataları düzeltemeyeceğiniz veya değişiklik yapamayacağınız anlamına gelmez. Kaynak kodu aptalca gizlerseniz, orijinali atın ve gizlenmiş sonucu koruma konusunda ısrar ederseniz, evet, hiçbir şey yapamazsınız. İyi gizleyiciler , kodunuzu ve ısrarla sonuçlanan eşlemeyi korumanız konusunda ısrar eder ; orijinal kodunuzda hata ayıklama yapabilir / değiştirebilir, gizlenmiş yamaları müşterilerinize gönderebilir ve hatta gizlenmiş şikayetleri tekrar okunabilir hale getirmek için haritayı kullanarak sorunlarını teşhis edebilirsiniz. Haritaya sahip değil, bu da bunu güvenli kılıyor.
Ira Baxter

34
Soru: Nasıl, Cevap:
Yardımcı

26
@cmc Pek çok insanın soruyu doğrudan cevaplayacağından eminim, bu yüzden farklı bir yol tutuşumda kayıp yok. Bir uzmana sormanın yarısı, gerçek sorunu çözmek için yanlış soru sorduğunuzda bildikleri bilgisidir. Bu "5 Whys" bir uygulamadır. en.wikipedia.org/wiki/5_Whys Asıl sorun / soru "insanların PHP kodumu okuyabilmelerini / çalabilmelerini nasıl engelleyebilirim" dir. Cevap, gönderemediğiniz kodu gönderirseniz, ancak çok fazla zaman ve para harcayabilir ve yanlış bir güvenlik duygusu kazanabilirsiniz. Bu bir gizleme listesinden daha yararlı olmadı mı?
Schwern

31

Hiçbir şey mükemmel olmayacak. Sadece programcı olmayanları durdurmak için bir şey istiyorsanız, burada kullanabileceğiniz küçük bir komut dosyası yazabilirsiniz:

<?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
Müthiş? Her sayfa, kaynağı almak için eksiksiz bir çözümle birlikte gelir: "gzuncompress (base64_decode ($ a))" çalıştırın. Evet, bu programcı olmayanları durduracaktır. Ama sonra orijinal kaynak kodu programcı olmayanları durduracaktır, bunun için kodlamaya kim ihtiyaç duyar? Bu tersine mühendislik niyetinde bakmak için gidiyor tek kişi o olduğu bir PHP programcısı.
Ira Baxter

2
Çoğu zaman non-programcılar değiştirmek istedikleri kaynak kodu bazı dizeleri arama denemek, ben de sadece olmayan programcılar kaynak kodu değişikliği örneğin alan adı, veritabanı adı, kullanıcılar vb. Durdurmak gibi bir çözüm arıyorum
Asad kamran

Bu benim için çok yararlı bir cevap. Ben sadece kullanıcının kolayca benim "database.php" not defteri açmak ve benim veritabanı kullanıcı adı ve şifresini görmek önlemek ile ilgileniyorum.
TimH - Codidact

20

Yorumlanan bir dilin gizliliğini anlamsız olarak etiketleyebileceğinizden emin değilim (Schwern'in gönderisine yorum ekleyemiyorum, işte yeni bir giriş var).

Birinin kodu şaşırtmak istediği tüm olası senaryoları bildiğinizi varsaymanın biraz gergin olduğunu düşünüyorum ve herkesin bu kodu gizledikten sonra görüntülemek için gerekli uzunluklara gitmeye istekli olacağını varsayıyorsunuz. Şu anki senaryomu düşünün:

Büyük ve oldukça karmaşık bir PHP tabanlı site geliştiren bir danışmanlık şirketi için çalışıyorum. Proje, diğer danışmanlıklar tarafından geliştirilen diğer siteleri barındıran bir müşterinin sunucusunda barındırılacaktır. Teknik olarak yazdığımız herhangi bir kod istemciye aittir, bu nedenle lisanslayamayız. Ancak, sunucuya erişimi olan diğer herhangi bir danışmanlık (rakip) önce istemciden izin almadan kodumuzu kopyalayabilir. Bu nedenle gerçek bir gizlilik nedenimiz var - bir yarışmacının kodumuzu anlaması için gereken çabayı sıfırdan işimizin bir kopyasını oluşturma çabasından daha fazla yapmak.


16

İsteğe bağlı olarak büyük sayfalarla iyi çalışan bir obfuscator için SD Thicket PHP Obfuscator'ımıza bakın . Öncelikle tanımlayıcı adlarını karıştırmak suretiyle çalışır. Mütevazı ila büyük uygulamalarda, bu kodun anlaşılmasını son derece zorlaştırabilir, bu da tüm amaçtır.

Bir sürü PHP "gizleme" nin yaptığı "eval (decode ( kodlanmışprogram kodu ))" şemaları üzerinde herhangi bir enerji harcamaz [herhangi bir kesek bu çağrıyı bulabildiğinden , "bunlar" kodlayıcı " dır ," kodlayıcı "dır. ve eval-kod çözme işlemini yürütün ve kod çözme kodunu alın.

PHP'yi işlemek için bir dil hassas ayrıştırıcı kullanır; programınızın sözdizimsel olarak geçersiz olup olmadığını söyleyecektir. Daha da önemlisi, tüm dili tam olarak bilir; kaybolmayacak veya karıştırılmayacak ve kodunuzu kırmayacaktır (diğer bir deyişle, "yanlış" olarak gizlerseniz ne olur, örneğin, kodun genel API'sını doğru bir şekilde tanımlayamazsanız).

Evet, tanımlayıcıları sayfalar arasında aynı şekilde gizler; eğer bunu yapmazsa sonuç işe yaramaz.


1
Flagger: Bunu neden işaretlediğinizi söyleme nezaketiniz olabilir. Özel sorunu da dahil olmak üzere OP'nin sorusunu doğrudan yanıtlar.
Ira Baxter

Ne söyleyebilirim bu sadece Windows altında çalışan bir EXE olduğunu? En azından eval bir .exe dosyası ...
Craig Jacobs

Eval dosyası .exe tabanlı bir yükleyicidir. Karmaşık gerçek, yüklü ürünün genellikle bir .cmd komut dosyasından çalıştırılmasıdır, çünkü altında paralel bir programlama dili vardır, ancak bunu asla göremezsiniz. Öncelikle bir Windows ürünü olarak tasarlanmıştır; Bununla birlikte, Wine ile Linux'a yüklerseniz, yerel bir Linux aracıymış gibi yüklenmiş olan .sh komut dosyalarıyla çalışır. GUI bölümünü kullanırsanız (isteğe bağlı, çoğu kişi bunu bir üretim oluşturma işleminde komut dosyası olarak çalıştırmak ister), Windows'ta yerel Java'yı ve Linux'ta yerel Java'yı kullanır.
Ira Baxter

Thicket'in barındırma alanına addon gerektirdiği doğru mu? Evetse, paylaşılan bir barındırmada nasıl yüklenir?
Stephen Adelakun

@StephenAdelakun: Thicket, sunucuda değişiklik yapılmasını gerektirmez. İndirin ve belgeleri kontrol edin.
Ira Baxter

14

Gördüğüm en iyi şey Zend Guard .


2
SD PHP Obfuscator kadar iyi ve yaklaşık 1/5 maliyeti.
Ira Baxter

1
@SalmanPK Peki bunun sebebi açık mı?
Pellmeister

@SalmanPK Web barındırma alanı için bir addon gerektirir. Zend Guard muhtemelen öyle. Hangisinin en yaygın olduğundan emin değilim. Her neyse, sorun potansiyel kitlenizi azaltması.
James P.

1
SD'nin PHP Obfuscator hepsini küçük harfe dönüştürür. Bir çerçeve kullanıyorsanız bu bir sorun olacaktır.
Amil Waduwawara

1
@JamesPoulson: Yorumunuzun SD PHP obfuscator'a yönlendirilip yönlendirilmediği belli değil. Açık olmak gerekirse, web barındırma alanı için herhangi bir addon gerektirmez.
Ira Baxter

10

Bunu deneyin: http://www.pipsomania.com/best_php_obfuscator.do

Son zamanlarda PHP projelerimi gizlemek için Java'da yazdım, çünkü net olarak yazılmış iyi ve uyumlu bir hazır bulamadım, çevrimiçi olarak saas olarak koymaya karar verdim, bu yüzden herkes ücretsiz kullanıyor. Maksimum uyumluluk için farklı komut dosyaları arasındaki değişken adlarını değiştirmez, ancak her komutta da rasgele mantıkla onları çok iyi karıştırır. Teller ... her şey. Ben onun PHP daha iyi yazılmış ve çok yavaş bu arabacı codeeclipse sonra çok daha iyi inanıyorum :)


İyi görünüyor ... ama güvenli mi? Yani, diğerleri kolayca şifresini çözebilir mi?
shasi kanth

Şimdiye kadar NOBODY'nin bu obfuscator tarafından gizlenen kodu gizleyebileceğinden emin olabilirim.
PatlaDJ

3
[alıntı gerekli] - homebrew şifrelemesi, hiçbir güvenlik olmayan, belirsizlikten kaynaklanan güvenliktir.
Chris Baker

8
"Şimdiye kadar NOBODY kodu deforme edebilirsiniz emin olabilirsiniz" Hatta PHP? PHP bunu yapabilirse başka biri yapabilir. Sitenizdeki örnek kod olarak bakıldığında, bir yerde kodu döken bir değerlendirme ifadesine sahip olacaksınız, bunu bir yankı olarak değiştirin ve kodunuz görüntülenecektir.

3
UYARI: Bu yöntem, orijinal değişken adlarına önemsiz bir şekilde deşifre edilebilir, bkz: lombokcyber.com/en/detools/decode-pipsomania
Zane Hooper

3

PHP için Thicket ™ Obfuscator

PHP Obfuscator aracı karıştırır PHP kaynak kodu çok zor anlaşılması veya tersine mühendislik (örnek) yapmak için. Bu, bir web sitesinde barındırılması veya bir müşteriye gönderilmesi gereken kaynak kodu fikri mülkiyeti için önemli bir koruma sağlar. SD'nin Source Code Obfuscators ailesinin bir üyesidir.


TrueBug.com'a ulaşılamıyor. 3 yıldan fazla bir süre sonra yorum gönderdiğimi biliyorum, ancak trueBug'in yeni url'sine yardımcı olabilir misiniz?
Stephen Adelakun

@StephenAdelakun Yalnızca TrueBug'a mı ihtiyacınız var? Şunu kullanın: TruBug PHP Obfuscator .
Praveen Kumar Purushothaman

Maalesef, bağlantı çalışmıyor. Yoksa bir şey mi kaçırıyorum?
Stephen Adelakun

@StephenAdelakun Şimdi kontrol ettim, işe yarıyor.
Praveen Kumar Purushothaman

1
@StephenAdelakun Neden sadece? :(Zaten ölü yazılım. Şimdi daha iyi ve harika olanlar var değil mi?
Praveen Kumar Purushothaman

2

SourceGuardian'ı kullanmak, serin ve kullanımı kolay bir GUI ile birlikte geldiği için iyidir.

Ancak unutmayın:

Diğer komik lisanslama koşullarına dikkat edin.

  • Makine başına sadece 1 çalıştırmanıza izin verilir - şu ana kadar kabul edilebilir
  • Komut satırı arayüzünü başka bir makinede çalıştırmak istiyorsanız, web sunucunuzu söyleyin, BAŞKA BİR LİSANS İHTİYACINIZ OLACAK (Evet, komik ve ben de gülüşünü duyabiliyorum).

2
Bu bana normal geliyor! 2 makine = 2 lisans! Genellikle insanların yaptığı şey hepsini bir makinede kodlamak, sonra diğer makinelere yüklemek.
David Newcomb

@davidnewcomb size puan almak gibi görünmüyor. Göndermeden önce genellikle dev makinenizdeki kodu şifrelersiniz. Çevrimiçi olarak yapmanız gerekiyorsa, komut satırı arayüzü de doğru olmayan doğru bir ek lisans gerektirir. Komut satırı arabirimini yerel kutunuza değil, web sunucusuna koyma eğilimindesiniz.
Herr

2
TL; DR iyi koruma, aptal lisans koşulları.
Herr

1
Makine başına değil, kullanıcı başına 1 lisans olmalıdır.
beppe9000

@ beppe9000 Tamamen katılıyorum!
Herr

-16

Gizleme, programınıza yalnızca başka bir potansiyel hata katmanı ve güvenlik açıkları ekliyor. Lütfen yapma.

Gizleme yazılımı yazan insanlar genellikle çok kabataslak ve beceriksiz görünüyorlar.

Kodunuz "harika" ise, krakerler, gizlenip gizlenmemesine bakılmaksızın, yaymak için büyük uzunluklardan geçer. Kimse kodunuzu bilmiyor / umursamıyorsa, muhtemelen onlar da bilmez.


7
Nonskilled? Hangi kanıtlara dayanarak? Onları yazıyorum. Süpürme genellemeleri yapmadan önce biyografimi kontrol et. semanticdesigns.com/Company/People/idbaxter
Ira Baxter

5
@Ira: İfadem hala geçerli. Çoğu gizlenmiş kod dakikalar içinde bozulabilir. Özellikle demek, çoğu bunu insanlar değil vasıfsız olan tüm . Akla gelen ilk şey Ioncube idi ve kesinlikle yeterli bir güvenlik açığı vardı: osvdb.org/show/osvdb/41708 . Sonra tekrar PHP'nin belirsiz güvenlik gereksinimlerini kısmen suçlayabilirsiniz.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

3
Gizleme, güvenilir bir araçla yapılırsa, bir programın güvenilirliği hakkında hiçbir şey değiştirmez. İkili derleme bir tür aşırı şaşkınlık ve yine de sanırım Zend'in PHP motorunun güvenilir olduğundan eminsiniz. (Kötü araçlarla yapılan gizleme veya derleme sayılmamalıdır).
Ira Baxter

1
yarım beynine sahip herkes gerçek dünya kurumsal yazılım pazarında php mücadele olduğunu (okuma "olmayan") bilir ve üzerinde gizlenmiş değildir ve asp.net olduğunu. Zayıf fikirli evangelistlerden başka bir şey söylemekten çok bıktım. (ve evet, bu kasıtlı cehalet budur) Açık Kaynak çok uzun süredir denendi ve bundan daha başka bir sonuç olması için çok sık istendiği bulundu: hobi? Açık kaynak. İş? Şifrele. Sadece bir baloncuğun içinde yaşayan / zengin bir pater'a sahip aptallar / aptallar / insanlar, şimdiye kadar hiç farklı düşünemezler.
Mart'ta

2
Bu yorum benim için neredeyse anlaşılmaz, ancak açık kaynak yazılım veya açık kaynak yazılım üzerine kurulu yazılım satmanın hiçbir anlamı olmadığı anlaşılıyor. Fark etmediyseniz, Java "kurumsal", açık kaynak kodludur ve .NET işi kadar başarılıdır. şirketim milyonlarca dolar kazanıyor ve asla şaşkınlık kullanmak zorunda kalmadık. Kendinize şu soruyu sorun: Yazılımı destekleyemiyorsanız / geliştiremiyorsanız (yani: başka birinin yazılımını kırıp yeniden sattıysanız) iyi olan ne demektir?
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.