Bir kabuk betiğini ikili bir yürütülebilir dosyaya nasıl dönüştürebilirim?


36

Kabuk komut dosyalarımı, başka hiç kimsenin düzenleyemediği veya okuyamayacağı şekilde, ikili çalıştırılabilir dosyaya dönüştürmek istiyorum. İkili bir çalıştırılabilir dosyaya dönüştürmenin bir yolu var mı?




@ l0b0 Bu bağlantı iki nedenden bahsediyor. Üçüncü sebep: tercümanın kurulu olmadığı makinelerde çalışmasını istiyorsunuz (örn. Sadece sh olan bir makinede bir bash betiği çalıştırarak). Dördüncü neden: bir nedenden ötürü setuid root'a ihtiyaç duyuyor (örneğin, kullanıcının sudo olmadan birimleri monte etmesini sağlayan bir script).
Calmarius

Yanıtlar:


42

shc aradığın şey. buraya getirin: shc
Extract, cd dir içine, makesonra ./shc -f SCRIPT. Bitti.

Bunu yapmak için ihtiyacınız olan her şeyi burada bulabilirsiniz:
SHC Howto


8
+1 vay, bu ilginç. Sürecin tam olarak tarif edildiği gibi olması durumunda, bunun bir şifrenin gizlenmesinin zayıf bir metot olduğuna dikkat edin - yürütülebilenlerin nasıl yapılandırıldığını bilen biri tarafından hala çıkarılabilir. Bununla birlikte, bir senaryoyu gündelik gözlemcilerden gizlemek çok etkili olacaktır. Bu yolla önceden derlenmiş komut dosyalarının daha hızlı çalıştırılıp çalıştırılmadığını öğrenmek isterim.
goldilocks

21
Betiğin içeriğini görmek için yapabileceği gibi, bash(ya da buna shdayanarak bash) çalışmadığını unutmayın env SHELLOPTS=verbose ./script.x. Muhtemelen diğer mermilerle atlamanın kolay yolları da vardır.
Stéphane Chazelas 14:13

4
Shc man sayfasından, "Maalesef, gerçek bir C programının yapacağı gibi size herhangi bir hız artışı sağlamayacak." datsi.fi.upm.es/~frosal/sources/shc.html
Adam,

shc 3.9.0 olarak güncellendi: github.com/neurobin/shc
Jahid

Her ne kadar SHC size umut ettiğiniz hızda bir iyileşme sağlayamasa da, betiğinizin daha iyi bir çevirisi için SHC'nin kendisini hacklemesini sağlar. Temiz bir kabuk betiği yazmak ve ardından SHC'yi geliştirmek, bir C programını sıfırdan yazmaktan veya daha hızlı hale getirmek için bir kabuk betiğini özetlemekten daha verimli olabilir.
Kaz

1

Buradaki amaç kabuk betiğinizi okumak veya değiştirilemeyecek şekilde gizlemekse, aşağıdaki web sitesine yapıştırmayı deneyin:

Kombine Şifreleme ve Şaşırtma

Komut dosyanızı bu siteye gönderdiğinizde, sizin için bir zip dosyası oluşturulur. Bu zip dosyasından bağımsız bir çalıştırılabilir dosya oluşturmak için aşağıdaki adımları izleyin.

  1. Komut dosyanızı gönderdikten sonra, indirme bağlantısını sağ tıklayın
  2. Unix sunucunuza gidin ve indirme bağlantısını yazın veya (curl -O) tıklayın
  3. Zip dosyasını çıkartın
  4. cd EnScryption.com
  5. ./(your-script.sh)

Adım 5, betiği otomatik olarak yapılandırır ve sizin için bağımsız bir kopya oluşturur. Daha sonra bu bağımsız kopyayı farklı ana bilgisayarlara kopyalayabilir veya istediğiniz şekilde dağıtabilirsiniz. Not, şifreli olduktan sonra betiğinizin adını değiştiremezsiniz. Bu güvenlik nedeniyle.

Sizin için uygun olan bir başka seçenek, zamanınız varsa, kendi güvenli gizleme algoritmanızı bulmaktır. Komut dosyanız taşınabilir olacaksa, çoğu Unix sistemde hazır olan araçları kullanmanız gerekir ... örn. openssl veya base64. Bu çok zaman gerektirir. Fakat eğer motivasyon oradaysa, senaryolarınızı ortaya çıkarmak imkansız ya da en azından son derece zaman alıcıdır!


12
Böyle bir hizmete karşı öneriyorum. Size teslim etmeden önce hiçbir kötü amaçlı yazılım enjekte etmediklerinden asla emin olamazsınız. Yaratıcıları kendileri yapmaya çalışmasalar bile, düşman, gizlice bu tür enjeksiyonları yapmak için sunucularını tehlikeye atabilir.
ddnomad

-1

bzexe dönüştürebilir ve ayrıca dosyayı sıkıştırabilir


1
Bunun, kullanıcının engellemek istediği orijinal kabuk betiğini alması için birinin dosyayı çıkarmasını nasıl önleyeceğini tam olarak göremiyorum. Sıkıştırma hiçbir şey saklamıyor.
Kusalananda
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.