이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 hexec 명령입니다.
프로그램:
이름
hexec - 프로세스 실행 후킹 도구
개요
XNUMX진수 [표현식] [명령어] [인수...]
기술
hexec은 프로세스 실행 호출(exec syscall 계열)에 연결하는 도구입니다. 당신은 할 수 있습니다
후크된 exec 호출에 대해 실행되는 표현식을 정의합니다. 이 표현은 아마도
대체 exec 호출도 포함되어 있습니다.
옵션 개요
다음은 hexec 옵션에 대한 요약입니다.
--도움말 | -h 옵션/expr 요약 페이지를 인쇄합니다.
--버전 | -v XNUMX진수 버전 인쇄
--로그아웃 | -lo 오류에 대한 출력 파일 설정 및 -인쇄 출력
옵션
-h 옵션/expr 요약 페이지 인쇄
--도움 옵션/expr 요약 페이지 인쇄
그것 오류 및 인쇄 출력에 대한 출력 파일을 설정합니다. 글을 쓰는 경우 필요할 수 있습니다.
일부 프로세스는 stderr에서 읽기 때문에 오작동을 일으킬 수 있습니다.
잘 정의된 출력을 기대합니다.
표현
표현식은 모든 프로세스 실행 호출에 대해 실행됩니다. 표현식이 반환되는 경우
true이면 원래 호출을 건너뜁니다.
-과
-a
두 표현식이 모두 true를 반환하면 true를 반환합니다. 왼쪽이 false를 반환하면 오른쪽이 false를 반환합니다.
표현식은 실행되지 않습니다.
또는
-o
두 표현식 중 하나가 true를 반환하면 true를 반환합니다. 왼쪽이 true를 반환하면
올바른 표현식은 실행되지 않습니다.
-통로
실행 파일의 경로가 일치하면 true를 반환합니다. . 배쉬다
호환되는 와일드카드 패턴.
-ipath
-path와 동일하지만 대소문자를 구분하지 않습니다.
-이름
실행 파일의 기본 이름이 일치하면 true를 반환합니다. . 는
Bash 호환 와일드카드 패턴.
-이름
-name과 동일하지만 대소문자를 구분하지 않습니다.
-포함
실행 파일의 경로에 문자열이 포함되어 있으면 true를 반환합니다. .
-아이콘을 포함
-contain과 동일하지만 대소문자를 구분하지 않습니다.
-인쇄 호출된 프로세스에 대한 모든 인수를 인쇄합니다. 항상 true를 반환합니다.
간부 [인수...] ;
실행 [args...]를 인수로 사용합니다. 이 표현식은 다음으로 끝나야 합니다.
세미콜론. 인수 자리 표시자를 사용할 수 있습니다. 및 [args...](아래 참조).
이 표현식은 항상 true를 반환합니다.
주의사항: 종료문을 이스케이프하거나 인용해야 할 수도 있다는 점에 유의하시기 바랍니다.
쉘을 혼동하지 않으려면 세미콜론을 사용하십시오.
-쉬
해석하다 as a shell script by invoking / 빈 / SH 인수와 함께 -c
' '. 내부에서 인수 자리 표시자를 사용할 수 있습니다. . Please note that -sh
인수의 변수 목록이 아닌 단일 인수만 예상합니다(-exec와 같이).
하다). -sh를 사용하는 것은 다음을 사용하는 것과 같습니다. 간부 sh -c .
자리 표시자 위한 간부 표현
모든 -exec 표현식은 인수 목록의 자리 표시자를 사용하여 정보를 얻을 수 있습니다.
원래 exec 호출에서. 각 자리 표시자는 {로 시작하고 }로 끝납니다. 다음과 같은 경우 \{를 사용하세요.
인수 목록에 {를 사용하고 싶습니다. -exec를 사용하면 자리 표시자가 대체됩니다.
표현이 평가됩니다.
자리표시자 유형:
{NS} 원래 호출의 인수 수로 대체됩니다.
{ }
인덱스의 원래 인수로 대체됩니다. . 예: {1}은 다음을 제공합니다.
첫 번째 주장. 미리 추가할 수 있습니다. 자리 표시자 플래그가 있습니다.
{} 원래 호출의 모든 인수로 대체됩니다. 각 인수는
공백으로 구분됩니다. 자리 표시자 플래그를 사용할 수 있습니다.
주의사항: 실행 파일 이름도 인수로 간주됩니다. 이는 다음과 같은 호출을 의미합니다.
"echo test"는 "echo"와 "test"라는 두 개의 인수를 생성합니다.
자리 표시 자 깃발
s 모든 인수는 모두 연결하는 대신 단일 인수로 삽입됩니다.
인수.
인수 'a', 'b' 및 'c'를 고려하십시오. 없이 s, 간부 {} \; 결과적으로
간부 'a b c' \;, 이는 대부분의 경우 원하는 것이 아닙니다. 간부 {에스} \; 하우어
결과적으로 간부 'A' 'NS' '씨' \;.
q 모든 주장을 인용하십시오.
e 영숫자가 아닌 문자를 모두 이스케이프하세요. 이 플래그는 "sh"를 사용할 때 매우 유용합니다.
-exec 표현식의 -c <...>"입니다.
예
간부 에코 {} \; 전화와 함께 'A' 'NS' '씨'
결과는 다음과 같습니다: 'echo' 'abc'
간부 에코 {큐} \; 전화와 함께 'A' 'NS' '씨'
결과는 다음과 같습니다: 'echo' 'a' 'b' 'c'
간부 sh -c '에코 {}; {}' \; 전화와 함께 '쉿' '-씨' 'gcc 직류 >> 로그.txt'
결과는 다음과 같습니다: 'sh' '-c' 'echo sh -c gcc dc >> log.txt; sh -c gcc dc >> log.txt'
>>가 잘못 처리되었기 때문에 예상한 대로 작동하지 않습니다.
이 경우
간부 sh -c '에코 {이자형}; {}' \; 전화와 함께 '쉿' '-씨' 'gcc 직류 >> 로그.txt'
결과는 다음과 같습니다: 'sh' '-c' 'echo sh \-c gcc\ d\.c\ \>\>\ log\.txt; sh -c gcc dc >>
로그.txt'
변경 ~까지 과정들
hexec은 후크된 프로세스에 일부 환경 변수를 추가합니다. 이것들은 (그렇지 않을 수도 있습니다)
완벽한):
LD_PRELOAD
hexec은 미리 로드된 라이브러리 목록에 libhexec-hook.so를 추가합니다.
HEXEC_EXPR_SHM
내부 공유 메모리 개체의 이름을 포함합니다.
HEXEC_LOG_FD
오류 및 -print 출력에 대한 파일 설명자를 포함합니다.
이러한 환경 변수를 절대로 수정하지 마십시오. 또한 이것들을 사용할 때 주의하세요
변수의 이름과 내용은 나중에 변경될 수 있기 때문입니다.
사용 예
헥사 -이름 'gcc' 간부 캐시 {에스} \; 확인
make를 호출하면 gcc가 여러 번 호출됩니다. 각 실행 파일 이름
후크된 프로세스 실행은 파일 패턴 "gcc" 및 "ccache {s}"에 대해 테스트됩니다.
일치하는 항목이 발견될 때마다 호출됩니다. '{s}'은(는) 원본으로 대체됩니다(
푹) 전화. 이 예에서는 "gcc -o test.o test.c"에 대한 호출이 대체됩니다.
"ccache gcc -o test.o test.c"로
주문 제작 IT WORKS
ALL
onworks.net 서비스를 사용하여 온라인으로 hexec을 사용하세요.