Android 응용 프로그램을 살펴본 적이 있다면 가장 진보 된 수준에서 목표를 분석 할 수있는 능력을 이해하고 있습니다. 동적 프로그램 분석을 통해 응용 프로그램 활동 및 일반적인 행동에 대한 훌륭한 개요를 제공합니다. 그러나 때로는 응용 프로그램을 실행 하지 않고 분석하고 싶을 때가 있습니다. 구성 요소를보고 상호 작용하는 방법과 데이터가 한 지점에서 다른 지점으로 오염되는 방법을 분석하고 싶을 것입니다.
이것은 Smalisca 의 발전을 이끄는 주요 요인이었습니다. 역동적 인 코드 분석 전에 정적 코드 분석 에 대한 몇 가지 이유가 있습니다. 응용 프로그램과 상호 작용하기 전에 API가 있고 모든 종류의 통화 흐름 그래프를 생성하는 경우 응용 프로그램이 어떻게 작성되었는지 알고 싶습니다. 실제로 그래프는 사물을 시각화하기 때문에 나에게 매우 중요했습니다. 파일에서 파일로 점프하는 대신 수업에서 수업으로, 그래프를 봅니다.
그래프 빌딩은 그러한 도구를 코딩 해야하는 중요한 이유 였지만 Smalisca 에는 읽어야 할 다른 깔끔한 기능이 있습니다.
현재 다음과 같은 몇 가지 주요 기능이 있습니다.
구문 분석
Smali 파일의 전체 디렉토리를 구문 분석하고 추출 할 수 있습니다.
그런 다음 결과를 JSON 또는 SQLITE 로 내보낼 수 있습니다.
자세한 내용은 구문 분석 페이지에 전리품이 있습니다.
분석
결과를 내보내면 대화식 프롬프트가 표시됩니다. 클래스, 속성, 메소드 및 메소드 호출을 검색 할 수 있습니다. 그런 다음 다음과 같은 검색 기준에 여러 필터 를 적용 할 수 있습니다.
smalisca> sc -c class_name -p test -r 10 -x path -s class_type
이 명령은 클래스 이름 (-c)의 패턴 테스트 (-p)를 포함하는 10 개 (-R 10) 클래스를 검색합니다. 그 후 명령은 열 경로 (-x 경로)를 결과에서 제외하고 클래스 유형 (-s)별로 정렬합니다.
다른 예를 살펴 보겠습니다.
smalisca> scl -fc com/android -fm init -r 10
이렇게하면 호출 클래스 이름에 패턴 com/android (-fc)가 포함 된 모든 메소드 호출을 검색합니다. 또한 이름에 패턴 init (-fm)가 포함 된 메소드에서 유래 한 통화를 찾을 수 있습니다.
물론 파일에서 명령을 읽고 결과를 배치 로 분석 할 수 있습니다.
$ cat cmd.txt sc -c class_name -p com/gmail/xlibs -r 10 -x 경로 그만두다 $ ./smalisca.py 분석기 -i results.sqlite -f sqlite -c cmd.txt ...
자세한 내용은 분석 페이지에 전리품을 사용하십시오.
웹 API
Smalisca는 웹 클라이언트를 사용하여 결과와 쉽게 상호 작용하기 위해 REST 웹 서비스를 제공합니다. 이렇게하면 자신의 (멋진) 웹 응용 프로그램에서 데이터에 액세스 할 수 있으며 백엔드와 프론트 엔드를 깨끗하게 분리 할 수 있습니다.
웹 API 페이지에서 사용 가능한 REST API에 대해 자세히 알아보십시오.
시각화
나는 이것이 Smalisca 의 가장 귀중한 특징이라고 생각합니다. 구조화 된 방식으로 결과를 시각화하는 능력은 삶을 더 편안하게 만듭니다. 관심있는 내용에 따라이 도구에는 홍보하려는 몇 가지 그래프 드로잉 기능이 있습니다.
처음에는 수업, 속성 및 방법을 포함한 패키지를 그릴 수 있습니다.
smalisca> dc -c class_name -p test -f dot -o /tmp/classes.dot :: 정보는 /tmp/classes.dot에 결과를 썼습니다 smalisca>
클래스 이름에 테스트가 포함 된 클래스를 먼저 검색 한 다음 GraphViz DOT 언어에서 결과를 내보내는 클래스를 검색합니다. 그런 다음 Dot , Neato , Circo 등을 사용하여 그래프를 수동으로 생성하거나 대화식 프롬프트를 사용하여 수행 할 수 있습니다.
smalisca> dc -c class_name -p test -f pdf -o /tmp/classes.pdf -prog neato :: 정보는 /tmp/classes.pdf에 결과를 썼습니다 smalisca>
자세한 내용은 드로잉 페이지에 전리품이 있습니다.
테이블로 출력 결과.
클래스와 모듈 간의 기본 관계.
스크린 샷 페이지를 살펴보십시오.
설치 페이지를 참조하십시오. 요구 사항 :
도구를 설치 한 후 먼저 APK (Android 애플리케이션)를 선택하여 플레이 할 수 있습니다. APKTool 또는 내 도구 ADU를 사용하여 APKS 컨텐츠를 덤프하십시오. 단순성을 위해 이전 블로그 게시물에서 분석 한 가짜 뱅커를 사용하겠습니다.
그러나 먼저 도구 메인 옵션을 살펴 보겠습니다.
$ smalisca -help
/ _ __
____ ___ ___ __ // / _ ____ ___ __
/', __ /'__` __` __` /'__` / /', __ /'___ /'__`
/ __,`/ /// / _ _ _ / __,`/ __ // l . _
/ ____/ _ _ _ __/.
/___//_/_/_/_//_//__//_/_/____/____//_//___//____//__/__/_/_/_/_/_/_/_/
-----------------------------------------------------------------------------------------
:: 저자 : Victor <Cyneox> Dorneanu
:: desc : smali 파일의 정적 코드 분석 도구
:: url : http://nullsecurity.net, http : // {blog, www} .dornea.nu
:: 버전 : 0.2
-----------------------------------------------------------------------------------------
사용법 : Smalisca (하위 명령 ...) [옵션 ...] {인수 ...}
[-] Baskmali (Smali) 파일 용 정적 코드 분석 (SCA) 도구.
명령 :
분석기
[-] 대화식 프롬프트 또는 명령 줄을 사용하여 결과를 분석합니다.
파서
[-] Smali 구문을 기반으로 파일을 구문 분석하고 추출합니다.
편물
[-] Web API를 사용하여 결과를 분석합니다.
선택적 인수 :
-h, -help이 도움말 메시지와 종료를 보여줍니다
-Debug 토글 디버그 출력
-Quiet 모든 출력을 억제합니다
-로그 레벨 {디버그, 정보, 경고, 오류, 중요}}
로깅 레벨 변경 (기본값 : 정보)
-v, -version show 프로그램의 버전 번호 및 종료
먼저 분석 작업을 수행하기 전에 Smali 파일에 대한 디렉토리를 구문 분석 하겠습니다.
$ smalisca parser -l ~/tmp/fakebanker2/tumped/smali -s java -f sqlite -o gaklebanker.sqlite ... :: 정보 구문 분석. :: 정보 완성 된 구문 분석! :: 정보를 SQLITE로 내보내는 정보 :: 정보 추출 수업 ... :: 정보 추출 수업 속성 ... :: 정보 추출 수업 방법 ... :: 정보 추출물 통화 ... :: 정보 커밋 변경 SQLITE DB :: 정보는 gakebanker.sqlite에 결과를 썼습니다 :: 정보 스캔 완료
자세한 내용은 구문 분석 페이지를 살펴보십시오.
이제 생성 된 수출로 원하는대로 자유롭게 할 수 있습니다. sqlite db를 직접 검사하거나 Smaliscas 분석 기능을 사용할 수 있습니다.
$ smalisca analyzer -f sqlite -i 가짜 banker.sqlite ... smalisca> sc -x path -r 10 +----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | id | class_name | class_type | class_package | 깊이 | +----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 1 | Landroid/support/v4/net/connectivityManagerCompat | 공개 | Landroid.support.v4.net | 5 | | 2 | Landroid/support/v4/view/accessibilityDelegateCompat $ accessibilityDelegateJellyBeanImpl | | Landroid.support.v4.view | 5 | | 3 | Landroid/support/v4/view/viewComPat $ viewComPatimpl | 인터페이스 요약 | Landroid.support.v4.view | 5 | | 4 | Landroid/support/v4/apt/activitycompathoneycomb | | Landroid.support.v4.app | 5 | | 5 | Landroid/support/v4/app/nosavestateframelayout | | Landroid.support.v4.app | 5 | | 6 | Landroid/support/V4/Net/ConnectivityManagerCompathoneycombmr2 | | Landroid.support.v4.net | 5 | | 7 | lcom/gmail/xpack/buildconfig | 공개 결승 | lcom.gmail.xpack | 4 | | 8 | Landroid/support/v4/app/backstackrecord $ op | 최종 | Landroid.support.v4.app | 5 | | 9 | Landroid/support/v4/app/fragmentmanagerimpl | 최종 | Landroid.support.v4.app | 5 | | 10 | Landroid/support/v4/app/sharecompat $ sharecompatimpl | 인터페이스 요약 | Landroid.support.v4.app | 5 | +----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
또한 사용 가능한 명령 및 옵션은 분석 페이지를 참조하십시오.
전체 예제는 그리기 페이지를 참조하십시오.
Smalisca는 MIT 라이센스에 따라 출시되었습니다. License.rst 파일을 살펴보십시오.
이 도구는 LICĂ 에 전념합니다. 많은 감사합니다.
Stephen McAllister
- APK 디버깅과 훌륭한 아이디어로 가득한 모든 시간에 감사드립니다.
내 gf
- 인내와 이해에 대단히 감사합니다!
nullsecurity.net
- 행성 해킹!