권한이 없는 디렉터리에 대한 심볼릭 링크를 만듭니다.

권한이 없는 디렉터리에 대한 심볼릭 링크를 만듭니다.

먼저, 역사를 되돌아보자:제가 일하는 곳에서는 소수의 개발자/주주가 지적 재산을 모아 회사를 설립합니다. IP와 소스 코드는 여전히 그들만의 소유입니다.

또한 몇 년 전 우리는 제3자의 산업 스파이 활동과 관련해 몇 가지 문제를 겪었습니다. 이 모든 이유로 인해 일부 개발자/회사 소유자는 도난당하더라도 바이너리를 사용할 수 없도록 하는 비정통적인 조치를 취하게 되었습니다.

현재 문제:우리는 마감일을 맞추기 위해 어려운 숫자 계산을 수행하기 위해 슈퍼컴퓨터를 임대하고 있습니다. 문제는 실행 파일이 네트워크 디렉터리 구조 깊숙이 묻혀 있는 텍스트 파일에 대한 정적 종속성을 갖는다는 것입니다.

이 "종속성"을 사용하지 않고 그냥 다시 컴파일하면 어떨까요?문제의 개발자는 현재 여행 중이며 이 코드를 다시 컴파일하기 위한 마감일 이전에 돌아올 것으로 예상되지 않기 때문입니다.

구현하다:

./run.sh

오류 출력:

forrtl: No such file or directory
forrtl: severe (29): file not found, unit 1, file /foo/bar/.xyz
Image              PC                Routine            Line        Source             
number_crunch         000000000048B933  Unknown               Unknown  Unknown
number_crunch         0000000000499ADB  Unknown               Unknown  Unknown
number_crunch         0000000000445941  Unknown               Unknown  Unknown
number_crunch         0000000000403BFE  Unknown               Unknown  Unknown
libc.so.6             00002AAAAB6C10BD  Unknown               Unknown  Unknown
number_crunch         0000000000403B09  Unknown               Unknown  Unknown

run.sh의 내용:

#!/bin/bash
#SBATCH --nodes=10
#SBATCH --job-name=number_crunch
#SBATCH --cpus-per-task=8

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/share/intel/ics2013/composer_xe_2013_sp1.2.144/compiler/lib/intel64/
module load glibc

./number_crunch

나는 필요하다:바이너리를 속여 확인하는 방법/foo/bar/.xyz구조, 뿌리 힘 없음.

가능합니까?별칭에는 슬래시 가 허용 되지 alias않으며 .ln/

답변1

바이너리를 패치하는 것은 어떻습니까? strings yourbinary | grep -F /foo/bar/.xyz인쇄되어야 합니다 /foo/bar/.xyz. /foo/bar/.xyz문자열이 충분히 고유한 경우 다음을 수행할 수 있습니다.

sed -i "s_/foo/bar/\.xyz_/control/.xyz_g" yourbinary

그 안에는 /control/당신이 제어할 수 있는 디렉토리가 있습니다. 대체 문자열의 길이(바이트)는 원래 문자열의 길이와 같아야 합니다. 대체 문자열이 더 짧으면 널 바이트로 채울 수 있습니다( sed -i "_/foo/bar/.xyz_/contr/xyz\x00\x00\x00_g" yourbinary, o, l.은 널 바이트로 인해 제거됨). 그러나 이 작업의 성공 여부는 길이에 대해 하드 코딩된 종속성이 있는지 여부에 따라 달라질 수 있습니다 /foo/bar/.xyz. 또는 /일부 문자( )를 추가하여 경로를 늘릴 수 있습니다 /tmp/////.xyz.

대체 문자열이 길면 이 내부 패치 방법을 사용하지 못할 수도 있습니다. 그러나 원할 경우 이를 /control/xyz경로가 적절한 길이이지만 실제 파일이 있는 더 긴 경로를 가리키는 심볼릭 링크 솔루션과 결합할 수 있습니다 .

전문적인 지식이 있고 대체되는 문자열 인스턴스에 대해 더 많은 제어가 필요한 경우 대신 16진수 편집기를 사용할 수 있습니다 sed.

중요한 작업을 수행하기 전에 이 변경 사항을 테스트하겠습니다.

관련 정보