
Flutter 모바일 애플리케이션 리버스 엔지니어링 도구
Flutter 모바일 애플리케이션 리버스 엔지니어링 도구 (Dart AOT 런타임 컴파일 방식)
현재 이 도구는 Android libapp.so (arm64 전용)만 지원합니다. 또한 최신 Dart 버전에서만 작동합니다.
높은 우선순위의 누락된 기능은 TODO를 참조하세요.
이 애플리케이션은 C++20 Formatting 라이브러리를 사용합니다. g++>=13, Clang>=16과 같은 매우 최신의 C++ 컴파일러가 필요합니다.
Linux OS 사용을 권장합니다 (Debian sid/trixie에서만 테스트됨). 설정이 쉽기 때문입니다.
참고: gcc>=13을 자체 메인 저장소에서 제공하는 Debian/Ubuntu 버전만 사용하세요. 오래된 Debian/Ubuntu 버전에 포팅된 gcc는 작동하지 않습니다.
apt install python3-pyelftools python3-requests git cmake ninja-build \
build-essential pkg-config libicu-dev libcapstone-dev
python scripts\init_env_win.py
brew install cmake ninja pkg-config icu4c capstone
pip3 install pyelftools requests
brew install llvm@16 cmake ninja pkg-config icu4c capstone
pip3 install pyelftools requests
apk 파일에서 "lib" 디렉토리 추출
python3 blutter.py path/to/app/lib/arm64-v8a out_dir
blutter.py는 flutter 엔진에서 Dart 버전을 자동으로 감지하고 blutter 실행 파일을 호출하여 libapp.so에서 정보를 가져옵니다.
필요한 Dart 버전에 대한 blutter 실행 파일이 없으면 스크립트가 자동으로 Dart 소스 코드를 체크아웃하고 컴파일합니다.
git pull을 사용하여 업데이트한 후, --rebuild 옵션과 함께 blutter.py를 실행하여 실행 파일을 강제로 재빌드할 수 있습니다.
python3 blutter.py path/to/app/lib/arm64-v8a out_dir --rebuild
Windows에서 Blutter를 개발할 때 Visual Studio를 사용합니다. --vs-sln 옵션을 사용하여 Visual Studio 솔루션을 생성할 수 있습니다.
python blutter.py path\to\lib\arm64-v8a build\vs --vs-sln