ICCBot
v1.0
ICCBOT : Android 애플리케이션을위한 파편 인식 및 컨텍스트 감각 ICC 해상도 도구.

종이 PDF는 https://hanada31.github.io/pdf/icse22_iccbot.pdf에서 찾을 수 있습니다
@inproceedings{icse22_iccbot,
author = {Jiwei Yan and
Shixin Zhang and
Yepang Liu and
Jun Yan and
Jian Zhang},
title = {ICCBot: Fragment-Aware and Context-Sensitive ICC Resolution for {Android} Applications},
booktitle = {The 44th International Conference on Software Engineering, {ICSE} 2022 (Demo Track)},
year = {2022},
}파이썬 3+
Java 1.8+
GraphViz 설치 (http://www.graphviz.org/download/)
# Initialize soot-dev submodule
git submodule update --init soot-dev
# Use -DskipTests to skip tests of soot (make build faster)
mvn -f pom.xml clean package -DskipTests
# Copy jar to root directory
cp target/ICCBot-jar-with-dependencies.jar ICCBot.jar또는 우리가 제공하는 빌드 스크립트를 사용하십시오.
python scripts/mvn.pyjava -jar ICCBot.jar -path apk/ -name ICCBotBench.apk -androidJar lib/platforms -time 30 -maxPathNumber 100 -client CTGClient -outputDir results/output또는 Python 스크립트로 주어진 폴더 아래의 APK를 분석하십시오.
python scripts/runICCBot.py [apkPath] [resultPath] java -jar ICCBot.jar -h
usage: java -jar ICCBot.jar [options] [-path] [-name] [-androidJar] [-outputDir][-client]
-h -h: Show the help information.
-name <arg> -name: Set the name of the apk under analysis.
-path <arg> -path: Set the path to the apk under analysis.
-outputDir <arg> -outputDir: Set the output folder of the apk.
-client <arg> -client
"CallGraphClient: Output call graph files."
"ManifestClient: Output manifest.xml file."
"IROutputClient: Output soot IR files."
"FragmentClient: Output the fragment loading results."
"CTGClient/MainClient: Resolve ICC and generate CTG."
"ICCSpecClient: Report ICC specification for each component."
-androidJar <arg> -androidJar: Set the path of android.jar.
-version <arg> -version [default:23]: Version of Android SDK.
-maxPathNumber <arg> -maxPathNumber [default:10000]: Set the max number of paths.
-time <arg> -time [default:90]: Set the max running time (min).
-noAdapter -noAdapter: exclude super simple adapter model
-noAsyncMethod -noAsyncMethod: exclude async method call edge
-noCallBackEntry -noCallBackEntry: exclude the call back methods
-noDynamicBC -noDynamicBC: exclude dynamic broadcast receiver matching
-noFragment -noFragment: exclude fragment operation model
-noFunctionExpand -noFunctionExpand: do not inline function with useful contexts
-noImplicit -noImplicit: exclude implict matching
-noLibCode -noLibCode: exclude the activities not declared in app's package
-noPolym -noPolym: exclude polymorphism methods
-noStaticField -noStaticField: exclude string operation model
-noStringOp -noStringOp: exclude string operation model
-noWrapperAPI -noWrapperAPI: exclude RAICC model
-onlyDummyMain -onlyDummyMain: limit the entry scope
-debug -debug: use debug mode.
입력 : APK 파일
출력 : ICC 해상도 결과, CTG 그래프 등
생성 된 ICC 사양 JSON 파일
Q : ICCBOT가 오류를 제공합니다 Failed to load analyze config json: File not exist
A : config/config.json 파일을 제외하고 excludePackages 및 AndroidCallbacks 지정하는 현재 디렉토리 아래에 폴더 config 있는지 확인하십시오.