Tiro는 Android 응용 프로그램을위한 하이브리드 반복 Deobfuscation 프레임 워크입니다. 그 이름은 Target , Instrument , Run 및 Observe 의 네 단계를 나타냅니다. Tiro의 접근 방식은 타겟팅 실행 (이전 도구 참조)이라는 아이디어를 사용하여 가능한 난독 화 위치를 정적으로 식별하고 이러한 코드 위치를 트리거하는 입력을 결정합니다. 이러한 위치를 계측하고 타겟팅 정보를 사용하여 실행함으로써, 런타임 DEOBFUCCATION 정보를 수집하여 정적 분석으로 전달하여 응용 프로그램을 비활성화하고보다 완전한 분석 결과를 달성 할 수 있습니다.
자세한 내용은 Usenix Security 2018에 게시 된 논문을 참조하십시오.
현재이 리포지토리의 코드에는 Target 단계의 기본 코드가 포함되어 있으며 주로 IntellIdroid의 정적 구성 요소 포트입니다. 우리는 앞으로 다른 Tiro 단계에 대한 코드를 공개 할 계획입니다.
Tiro의 정적 분석은 Target 및 Instrument 단계로 구성됩니다. Target 단계에서, 난독 화 위치가 확인되고 해당 위치에 대한 통화 경로가 추출된다. 각 경로에 대해 Tiro는 경로를 동적으로 트리거하기 위해 주입 해야하는 입력을 결정하는 제약 조건을 모으고 있습니다. 우리는 현재 Z3 구속 조건 솔버를 사용하고 제약 조건을 Z3-PY 및 Z3-Java 형식으로 변환합니다.
정적 분석 구성 요소에는 Java 8 (JDK 1.8)이 필요합니다.
이 저장소에는 애플리케이션에서 사용하는 Android 프레임 워크 라이브러리가 포함 된 android-platforms 저장소에 대한 종속성이 포함되어 있습니다. 이 의존성은 프로젝트 내에서 하위 모듈입니다. 하위 모듈로 Tiro를 복제하려면 달리기 :
git clone --recursive [email protected]:miwong/tiro.git
또는 하위 모듈없이 이미 Tiro를 복제 한 경우 실행하십시오.
git submodule update --init --recursive
안드로이드 프레임 워크 라이브러리가 크기 때문에 몇 분이 걸립니다.
이 프로젝트는 Gradle 빌드 시스템을 사용합니다. 출력 파일은 build/ 디렉토리에 있습니다. Gradlew 스크립트는 Gradle이 이미 설치되지 않은 기계 용 래퍼입니다. 개발 시스템에 이미 Gradle이 포함 된 경우 아래 명령에서 ./gradlew gradle 로 교체하여 자체 설치를 사용할 수 있습니다. Gradle이 종속성을 자동으로 다운로드 할 수 있도록 코드를 처음 컴파일 할 때 네트워크 연결이 필요합니다.
구축하려면 :
./gradlew build
구축 및 실행 :
./TIROStaticAnalysis <APK>
기본적으로 Tiro는 정적 분석 결과를 tiroOutput 디렉토리에 작성합니다. -o 옵션을 사용하면이를 변경할 수 있습니다. 다른 명령 줄 옵션을 보려면 실행하십시오.
./TIROStaticAnalysis --help
현재 Tiro의 정적 분석 출력 (예 : appInfo.json )은 IntellIdroid와 호환되지 않습니다. Tiro의 동적 구성 요소를 해제 할 때 Tiro의 제약 추출이 동적 분석에 통합 될 수 있도록 Intellidroid에 사용되는 동적 클라이언트를 업데이트 할 것입니다.
Tiro는 그을음 정적 분석 프레임 워크를 기반으로합니다. 안드로이드 특정 실행 흐름 (예 : 의도)을 나타내는 가장자리가있는 콜 그라프를 향상시키기 위해 그을음의 콜 그라프 생성을 몇 가지 수정했습니다. 수정은 여기에서 별도의 저장소에 게시됩니다.
안드로이드 애플리케이션은 이벤트 중심이므로 응용 프로그램에 대한 입력 포인트를 계산하여 완전한 분석을 달성해야합니다. Tiro는 Flowdroid에서 구현 된 진입 점 검색을 사용합니다. Tiro의 분석에 필요한 정보를 추출하기 위해이 입력 코드를 약간 수정했습니다. 이러한 변경 사항은 static/src/soot/ 및 static/src/tiro/target/entrypoint/ 에 저장됩니다.
다음은 Tiro에 코드를 기여했습니다.
Tiro는 토론토 대학의 Michelle Wong에 의해 박사 과정 프로젝트로 개발되었습니다. 문의 사항은 Michelle ([email protected])에 문의하십시오.
Tiro는 GNU Lesser General Public License, 버전 2.1에 따라 출시됩니다.