abicheck - 클라우드에서 온라인

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 명령 abicheck입니다.

프로그램:

이름


abicheck - 개인 또는 진화하는 기호에 대한 호출에 대한 응용 프로그램 바이너리 확인
라이브러리 및 일부 시스템 라이브러리의 정적 링크용.

개요


아비체크 [-h] [-k] [-a] [-I] [-v] [-f 목록 파일] [-또는 아웃파일] [-NS 무늬] [-이자형 무늬] [-제이
n잡] [-엘 도서관] [-엘 경로] [(-s|-S) DB 파일] [(-d|-D) DB 파일] [-영형 DB 파일] [-NS
목록 파일] 파일

기술


아비체크 응용 프로그램 바이너리에서 실행되고 다음 중 하나가 있을 때마다 경고를 발행합니다.
세 가지 조건이 감지됩니다.

· 프라이빗 투어 상징 용법. 개인 기호는 라이브러리의 함수 또는 데이터 변수입니다.
해당 패키지 내부에 있는 패키지. 패키지의 라이브러리에서 사용됩니다.
내부 통신용이며 애플리케이션 개발자가 사용하는 API/ABI의 일부가 아닙니다.
사용해야합니다.

· 진화하는 상징 용법. 진화하는 기호는 라이브러리의 함수 또는 데이터 변수입니다.
개발자가 사용하도록 의도되었지만 "진화 중"으로 표시된 패키지 또는
이후 릴리스에서 호환되지 않거나 사라질 수 있다는 의미에서 "불안정한"
라이브러리 패키지의

· 정적인 연결. 시스템 라이브러리(예: libc.a)의 정적 링크
응용 프로그램은 일반적으로 시스템 라이브러리 코드가 "고정"되기 때문에 좋은 생각이 아닙니다.
응용 프로그램 바이너리가 시스템의 이후 릴리스와 호환되지 않을 수 있습니다. 아비체크
몇 가지 시스템 라이브러리의 정적 연결을 감지하려고 시도합니다.

기본 동작은 검사된 각 이진 개체에 대해 해당 개체의 직접 호출을 검사하는 것입니다.
바이너리 객체만. NS -l 옵션은 바이너리 객체가 가져오는 라이브러리를 허용합니다.
그들의 전화도 확인되었습니다.

옵션


다음 옵션이 지원됩니다.

-k 심각한 오류가 있더라도 바이너리를 계속 확인하십시오(동적 링커 보고
해결되지 않은 기호, ldd(1) 오류, 감지된 기호 없음).

-h 긴 형태의 도움말을 인쇄하십시오.

-v 말 수가 많은. 추가 정보를 인쇄하십시오.

-f 목록 파일
XNUMXD덴탈의 목록 파일 한 줄에 하나씩 검사할 이진 개체 목록이 포함된 파일입니다.
이 목록은 명령줄에서 인수로 제공된 모든 파일에 추가됩니다. 만약에
목록 파일 "-"이면 stdin이 사용됩니다.

-o 아웃파일
에 출력 쓰기 아웃파일 stdout 대신.

-p 무늬
버전 이름 패턴 일치 레이블을 지정하는 비공개 버전 집합을 수정합니다. 기본값은
/사적인/ 대소문자를 구분하지 않는 일치를 사용합니다.

정규식의 구성 요소인 경우 무늬 연속으로 두 개의 콜론을 포함합니다. 패트1::패트2,
다음 여부를 확인하여 기호 수준 일치가 활성화됩니다. 버전::기호 or
라이브러리::기호 성냥 무늬 (여기서 기호 이름, 버전(있는 경우) 및
라이브러리 기본 이름이 대체됩니다. 상징, 버전도서관). 예를 들어,

-p 'FOO_VERS.*::_foopriv'
or
-p 'libfoo.so.*::_foopriv'

-e 무늬
과 동일 -p 그러나 "진화하는"인터페이스를 위해.

-L ldpath
설정 LD_LIBRARY_PATH 환경 변수 ldpath 동적을 호출하기 전에
링커. 사용하다 -L "" 설정 해제 LD_LIBRARY_PATH.

구성 요소 중 하나인 경우 ldpath 문자열 "찾기"이고 모든 공유 라이브러리
in 파일 발견되고 해당 경로가 "찾기" 위치에 삽입됩니다. 참고
순서는 무작위입니다.

-l 도서관
공유 라이브러리의 기본 이름 또는 전체 경로 이름 추가 도서관 목록에
개인 전화를 걸기 위해 검사할 개체입니다. 이 옵션은 다음보다 더 많이 발생할 수 있습니다.
명령줄에 한 번 추가되며 추가됩니다. 기본적으로 직접 전화만
시스템 라이브러리에 대한 바이너리가 확인됩니다. NS -l 스위치는 다음을 확인할 수 있습니다.
간접 호출 예: app -> supportlib -> systemlib.

-a 모든 공유 파일의 목록을 확인하고 수집하기 전에 모든 바이너리를 반복합니다.
사물. 발견된 각 공유 객체의 기본 이름을 취하고 마치
로 지정된 -l 옵션 옵션을 선택한 다음 abicheck 검사를 실행하십시오. 이 방법,
모든 "응용 프로그램 내부"객체의 호출이 확인됩니다.
직접 전화. (공유 객체에 종속성이 없을 때 유용합니다.
녹음.)

-I 검사 시 공유 라이브러리는 무시하고 실행 파일만 검사합니다. 호환 가능 -ㅏ
라이브러리가 먼저 검색되지만 확인되지는 않습니다.

-d DB 파일, -D DB 파일
동적(공개 및 비공개)에 대한 대체 플랫 파일 기호 데이터베이스 지정
시험. 이러한 분류는 라이브러리에 버전이 지정되지 않은 경우(즉,
라이브러리 자체에 분류가 존재하지 않음). 사용하다 -D 만을 나타내기 위해
정보 DB 파일 사용되어야한다. 라인 DB 파일 이 중 하나가 될 수 있습니다
형태 :

라이브러리|기호
라이브러리|클래스|기호
라이브러리|파일=경로

도서관 지정할 라이브러리의 전체 경로여야 합니다.
기본 이름).

첫 번째 형식 표시 상징 비공개로.

두 번째 형식 표시 상징수업 어디에 수업 공개, 비공개 또는
진화하는.

세 번째 형식은 파일을 나타냅니다. 통로 필요할 때 필요에 따라 열어야 합니다. 도서관 is
처음 접함. 파일 통로 다음을 제외한 처음 두 형식의 행을 포함합니다.
도서관 들. 세 번째 형식은 많은 분류 처리를 피하기 위한 속도 향상입니다.
실행에서 결코 만나지 못한 라이브러리에 대한 라인.

-O DB 파일
동적 기호 분류를 수정하려면 재정의 파일을 지정하십시오.
(공개 대 비공개) 테스트. 재정의 파일 형식은 다음과 같습니다.

라이브러리|심볼|클래스

라이브러리는 전체 경로 또는 기본 이름일 수 있습니다. 라이브러리가 "__SKIP__"인 경우 기호
발견된 모든 라이브러리에 대해 무시됩니다. 클래스는 "공개"일 수 있습니다.
"비공개", "진화 중" 또는 "삭제됨". "삭제된" 클래스는 특수한 경우이며, 다음을 의미합니다.
일부 릴리스에서 기호가 라이브러리에서 삭제되었습니다. "__ALL__" 기호
"삭제된" 클래스는 전체 라이브러리가 삭제되었거나 그렇지 않으면 불안정함을 의미합니다.
사용.

예 :

libfoo.so.1|__bar|비공개
/lib/libxyz.so.1|baz|공개
__SKIP__|__fputwc_xpg5

이러한 설정은 라이브러리 내부의 모든 분류를 재정의합니다(라이브러리에서
버전 관리, 다음에서 얻을 수 있음 베트남 후 증후군(1) 등).

-A 목록 파일
관심 있는 ABI 라이브러리를 다음에 나열된 라이브러리로 설정합니다. 목록 파일 (완전한
경로 이름, 한 줄에 하나씩). 이러한 라이브러리에 대한 호출만 확인됩니다. 모두
다른 라이브러리 호출은 무시됩니다.

-s DB 파일, -S DB 파일
정적 연결 테스트를 위해 보다 광범위한 기호 데이터베이스를 지정합니다. DB 파일
쉼표로 구분된 파일 목록입니다. 파일이 정적 아카이브(lib*.a)인 경우
기호를 추출하기 위해 처리됩니다. 그렇지 않으면 다음으로 구성된 데이터베이스 파일입니다.
예를 들어 symbol|library:module 형식의 행:

shmat|/usr/lib/libc.a:shmsys.o
shmctl|/usr/lib/libc.a:shmsys.o
shmdt|/usr/lib/libc.a:shmsys.o
shmget|/usr/lib/libc.a:shmsys.o
...

module.o의 모든 기호가 애플리케이션에서 정의되면 정적 링크
해당 모듈(및 해당 라이브러리 아카이브)이 가정됩니다. 사용하다 -S 표시하기
정적 링크 테스트만 수행해야 합니다.

-S INT 정적 링크 검사만 수행하고 내부 데이터베이스를 사용합니다.

-s 없음 or -S 없음 정적 연결 검사를 완전히 건너뛰려면

-j n잡
달리기 n잡 별도의 프로세스로 병렬로. 암시 -k. 주로
여러 CPU 머신 n잡 프로세서 수에 가까워야 합니다.
출력은 tmp 파일로 수집되고 실행이 끝날 때 다음과 같이 한 번에 모두 인쇄됩니다.
각 작업이 완료됩니다.

If n잡 "-", "감지" 또는 "n"인 경우 n잡 에 따라 숫자로 설정됩니다.
현재 시스템의 프로세서 수(확인 가능한 경우).

피연산자


다음 피연산자가 지원됩니다.

파일 확인할 애플리케이션 바이너리 개체의 목록입니다.

출력


문제당 한 줄이 있습니다(바이너리 검사당 여러 문제가 있을 수 있음).
다음과 같이 보입니다.

문제가 발견되지 않은 경우:
파일 이름: 확인

개인 기호를 사용하는 경우:
파일 이름: 사적인 (도서관:비공개_버전) private_sym

기호 사용이 진화하는 경우:
파일 이름: 진화하는 (도서관:진화하는_버스) 진화하는_sym

파일이 시스템 아카이브 라이브러리에 정적으로 링크된 경우:
파일 이름: STATIC_LINK(아카이브)

파일 검사를 건너뛴 경우:
파일 이름: 건너 뛰기 (이유)

삭제된 클래스 사용 중 -O 파일 옵션 무시, 이러한 문제는
녹이다:

일부 릴리스의 라이브러리에서 기호가 삭제된 경우:
파일 이름: 삭제_SYM: 상징/도서관

(도서관 기호가 바인딩되지 않은 경우 "언바운드"됩니다)

일부 릴리스에서 전체 라이브러리가 삭제되었거나 불안정한 경우
용도:
파일 이름: 불안정한_LIB: 도서관 이름 = 라이브러리 경로

(라이브러리 경로 라이브러리를 찾을 수 없는 경우 "파일을 찾을 수 없음"일 수 있음)

다음 문제는 치명적인 오류를 유발합니다. -k 옵션이 사용됩니다:

동적 링커가 확인할 수 없는 경우 N 기호 ldd -r 실행되었습니다:
파일 이름: UNBOUND_SYMBOLS: N

동적 링커가 동적 바인딩을 찾지 못한 경우:
파일 이름: NO_BINDINGS

If ldd -rLD_DEBUG=파일, 바인딩 실패한:
파일 이름: LDD_ERROR

이 후자의 세 가지 경우 실행 ldd -r 무엇에 대한 자세한 내용은 바이너리 파일에서
잘못되었습니다(참고 아비체크 실행 ldd -rLD_DEBUG=파일, 바인딩 세트). 일부에
시스템 동적 링커는 다음을 사용하여 SUID 프로그램을 처리하지 않습니다. LD_DEBUG 설정(이것은 일반적으로
~의 결과 NO_BINDINGS FBI 증오 범죄 보고서 아비체크 산출).

공유 라이브러리(예: libfoo.so)에서 abicheck를 실행하는 경우
지원 로 지어졌다 -l lib 플래그를 사용하여 라이브러리 종속성을 기록하고 "언바운드
기호" 문제가 발생할 가능성이 매우 높습니다.
라이브러리를 사용하거나 라이브러리를 사용하는 응용 프로그램 바이너리를 확인하고 -l 의 옵션
아비체크.

EXIT 지위


다음 종료 값이 반환됩니다.

0 오류 및 문제가 발견되지 않았습니다.

1 치명적인 오류가 발생했습니다.

2 치명적인 오류는 발생하지 않았지만 일부 바이너리에서 문제가 감지되었습니다.

노트


ELF 개체만 검사됩니다.

. -s -S -d-O dbfiles '#' 문자는 일반적인 방식으로 주석 행을 시작합니다.

"::" 사용자 지정 일치를 사용하지 않는 한 -p or -e 깃발, abicheck 수
기호 버전 관리가 적용된 시스템 라이브러리에 대해서만 확인합니다(예:
라이브러리 자체의 각 기호에 대해 기록된 개인 및/또는 진화하는 정보).
기호 버전 관리에 대한 자세한 내용은 "Solaris 링커 및 라이브러리 설명서"를 참조하십시오.
URL의 답안지 http://docs.sun.com/ab2/coll.45.13 및 명령/버전 스크립트
GNU 링커 "ld" 정보 페이지의 섹션.

기본 기호 버전 이름 일치 패턴은 대소문자를 구분하지 않는 일치 항목입니다.
개인 및 진화하는 경우 각각 "private" 및 "evolving" 문자열.

작은따옴표 문자나 줄 바꿈이 포함된 홀수 파일 이름은 건너뜁니다. 그런
문자는 쉘을 통한 명령 호출을 방해합니다.

재귀 디렉토리를 사용하려면 발견(1) 다음과 함께 사용할 파일로 출력을 수집합니다.
전에, -f 옵션 또는 다음을 통해 파이프에서:

찾기 ... | 아비체크 -f - ...

onworks.net 서비스를 사용하여 온라인으로 abicheck 사용



최신 Linux 및 Windows 온라인 프로그램