쉘 스크립트를 바이너리 실행 파일로 변환하는 방법은 무엇입니까?


36

다른 사람이 편집하거나 읽을 수 없도록 쉘 스크립트를 이진 실행 파일로 변환하고 싶습니다. 바이너리 실행 파일로 변환하는 방법이 있습니까?




@ l0b0이 링크에는 두 가지 이유가 있습니다. 세 번째 이유 : 인터프리터가 설치되지 않은 시스템 (예 : sh 만있는 시스템에서 bash 스크립트 실행)에서 실행하려고합니다. 네 번째 이유 : 어떤 이유로 setuid root가 필요합니다 (예 : sudo없이 볼륨을 마운트 할 수있는 스크립트).
Calmarius

답변:


42

shc는 당신이 찾고있는 것입니다. 여기에서 얻으십시오 : shc
Extract, dir로 cd, make그리고 ./shc -f SCRIPT. 끝난.

이 작업을 수행하는 데 필요한 모든 것, 여기에서 찾을 수 있습니다 :
SHC Howto


8
+1 와우, 흥미 롭습니다. 프로세스가 설명 된대로 정확하게 수행되는 경우 암호를 숨기는 약한 방법이므로 실행 파일의 구성 방식을 알고있는 사람이 추출 할 수 있습니다. 그러나 일반 관찰자의 스크립트를 가리는 데 매우 효과적입니다. 이 방법으로 미리 컴파일 된 스크립트가 더 빨리 실행되는지 배우고 싶습니다.
goldilocks

21
스크립트의 내용을 보려면 다음과 같이 작동하지 않습니다 bash(또는 sh기반으로 bash) env SHELLOPTS=verbose ./script.x. 다른 쉘을 우회하는 쉬운 방법이있을 것입니다.
Stéphane Chazelas

4
shc 매뉴얼 페이지에서 "불행히도 실제 C 프로그램처럼 속도 향상을 제공하지는 않습니다." datsi.fi.upm.es/~frosal/sources/shc.html
Adam


SHC가 원하는 속도 향상을 제공하지는 않지만 SHC 자체를 해킹하여 스크립트를 더 잘 번역 할 수 있습니다. 클린 쉘 스크립트를 작성하고 SHC를 개선하는 것은 C 프로그램을 처음부터 작성하거나 쉘 스크립트를 복잡하게 만드는 것보다 더 생산적 일 수 있습니다.
Kaz

1

쉘 스크립트를 숨겨서 읽거나 수정할 수 없도록하는 것이 목표라면 다음 웹 사이트에 붙여 넣습니다.

결합 된 암호화 및 난독 화

이 사이트에 스크립트를 제출하면 zip 파일이 생성됩니다. 이 zip 파일에서 독립형 실행 파일을 생성하려면 다음 단계를 수행하십시오.

  1. 스크립트를 제출 한 후 다운로드 링크를 마우스 오른쪽 버튼으로 클릭하십시오
  2. 유닉스 호스트로 가서 다운로드 링크를 얻거나 (curl -O)
  3. zip 파일을 압축 해제하십시오
  4. cd EnScryption.com
  5. ./(your-script.sh)

5 단계는 스크립트를 자동으로 구성하고 독립형 사본을 생성합니다. 그런 다음이 독립 실행 형 사본을 다른 호스트에 scp하거나 원하는대로 배포 할 수 있습니다. 일단 암호화되면 스크립트 이름을 변경할 수 없습니다. 이것은 보안상의 이유입니다.

시간이 있으면 사용할 수있는 또 다른 옵션은 자체 보안 난독 화 알고리즘을 만드는 것입니다. 스크립트를 이식 가능하게 만들려면 대부분의 유닉스 시스템에서 쉽게 사용할 수있는 도구를 사용해야합니다. openssl 또는 base64 시간이 많이 걸립니다. 그러나 동기 부여가 있다면 실제로 스크립트를 공개하는 것이 불가능하거나 최소한 시간이 많이 걸리는 것이 가능합니다!


12
나는 그러한 서비스에 반대하는 것이 좋습니다. 당신은 그들이 당신에게 그것을 전달하기 전에 어떤 악성 코드를 주입하지 않을 것이라고 확신 할 수 없습니다. 제작자 자신이 그렇게하지 않으려 고하더라도, 공격자는 서버를 손상시켜 그러한 주입을 비밀리에 수행 할 수 있습니다.
ddnomad

-1

bzexe는 파일을 변환하고 압축 할 수 있습니다


1
나는 이것이 어떻게 누군가가 파일을 추출하여 원본 쉘 스크립트를 얻지 못하게하는지 알지 못합니다. 이것은 사용자가 예방하고 싶었습니다. 압축은 아무것도 숨기지 않습니다.
Kusalananda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.