Làm thế nào để chuyển đổi một kịch bản shell thành một tệp thực thi nhị phân?


36

Tôi muốn chuyển đổi các tập lệnh shell của mình thành tệp thực thi nhị phân để không ai khác có thể chỉnh sửa hoặc đọc nó. Có cách nào để chuyển đổi nó thành một tệp thực thi nhị phân không?




@ l0b0 Liên kết đó đề cập đến hai lý do. Lý do thứ ba: bạn muốn nó chạy trên các máy chưa cài đặt trình thông dịch (ví dụ: chạy tập lệnh bash trên máy chỉ có sh). Lý do thứ tư: nó cần root setuid vì một số lý do (ví dụ: tập lệnh cho phép người dùng gắn kết khối lượng mà không cần sudo).
Calmarius

Câu trả lời:


42

shc là những gì bạn đang tìm kiếm. lấy nó ở đây: shc
Extract, cd vào dir, makevà sau đó ./shc -f SCRIPT. Làm xong.

Mọi thứ bạn cần để làm điều này, bạn tìm thấy ở đây:
SHC Howto


8
+1 wow, đó là thú vị. Chỉ cần lưu ý rằng nếu quy trình chính xác như được mô tả, đây là một phương pháp che giấu mật khẩu yếu - nó vẫn có thể được trích xuất bởi một người biết cách thực thi được cấu trúc. Tuy nhiên, nó sẽ rất hiệu quả để che khuất một kịch bản từ những người quan sát thông thường. Tôi muốn tìm hiểu nếu các tập lệnh được biên dịch trước theo cách này nhanh hơn để thực thi.
goldilocks

21
Lưu ý rằng nó không hoạt động với bash(hoặc shdựa trên bash), như người ta có thể làm: env SHELLOPTS=verbose ./script.xđể xem nội dung của tập lệnh. Có lẽ có nhiều cách dễ dàng để vượt qua với các vỏ khác.
Stéphane Chazelas

4
Từ trang shc man, "Unfortunatelly, nó sẽ không cung cấp cho bạn bất kỳ cải thiện tốc độ nào như một chương trình C thực sự." datsi.fi.upm.es/~frosal/source/shc.html
Adam

shc đã được cập nhật lên 3.9.0: github.com/neurobin/shc
Jahid

Mặc dù SHC có thể không cung cấp cho bạn một cải tiến tốc độ mà bạn hy vọng, nhưng nó mang lại khả năng hack chính SHC để có được bản dịch tốt hơn cho tập lệnh của bạn. Viết một kịch bản shell sạch và sau đó cải thiện SHC có thể hiệu quả hơn so với viết chương trình C từ đầu hoặc tạo ra một kịch bản shell để làm cho nó nhanh hơn.
Kaz

1

Nếu mục tiêu ở đây là ẩn tập lệnh shell của bạn để nó không thể được đọc hoặc sửa đổi, hãy thử dán nó vào trang web sau:

Kết hợp mã hóa & Obfuscation

Khi bạn gửi tập lệnh của mình đến trang web này, một tệp zip sẽ được tạo cho bạn. Thực hiện các bước sau để tạo tệp thực thi độc lập từ tệp zip này.

  1. Sau khi gửi tập lệnh của bạn, nhấp chuột phải vào liên kết tải xuống
  2. Chuyển đến máy chủ Unix của bạn và wget hoặc (curl -O) liên kết tải xuống
  3. Giải nén tệp zip
  4. cd EnScoding.com
  5. ./(your-script.sh)

Bước 5 sẽ tự động cấu hình tập lệnh và sẽ tạo một bản sao độc lập cho bạn. Sau đó, bạn có thể scp bản sao độc lập này đến các máy chủ khác nhau hoặc phân phối nó theo cách bạn muốn. Lưu ý, một khi được mã hóa, bạn không thể thay đổi tên tập lệnh của mình. Điều này là vì lý do bảo mật.

Một tùy chọn khác có sẵn cho bạn, nếu bạn có thời gian, là đưa ra thuật toán obfuscation an toàn của riêng bạn. Nếu tập lệnh của bạn là có thể mang theo được, bạn phải sử dụng các công cụ có sẵn trên hầu hết các hệ thống Unix ... tức là. openssl hoặc base64. Điều này đòi hỏi rất nhiều thời gian. Nhưng nếu động lực là có, thực sự có thể làm cho việc tiết lộ các kịch bản của bạn là không thể hoặc ít nhất, cực kỳ tốn thời gian!


13
Tôi muốn giới thiệu chống lại một dịch vụ như vậy. Bạn không bao giờ có thể chắc chắn rằng họ không tiêm bất kỳ phần mềm độc hại nào vào đó trước khi đưa nó cho bạn. Ngay cả khi chính những người sáng tạo không cố gắng làm như vậy thì kẻ thù có thể thỏa hiệp máy chủ của họ để thực hiện các thao tác tiêm đó một cách bí mật.
ddnomad

"Sau khi gửi tập lệnh của bạn" hoàn toàn ngược lại với việc bảo vệ mã của bạn.
Giuseppe Urso

-1

bzexe có thể chuyển đổi và cũng nén tập tin


1
Tôi hoàn toàn không thấy cách này sẽ ngăn bất kỳ ai trích xuất tệp để có được tập lệnh shell gốc, đây là điều mà người dùng muốn ngăn chặn. Nén là không che giấu bất cứ điều gì.
Kusalananda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.