
Flutter/Dart 리버스 엔지니어링 도구
Flutter: 빠르고 불규칙하게 움직이다, 빠르게 뛰다, 동요하다.
Doldrums: 침체기.
Doldrums는 Android를 대상으로 하는 Flutter 앱을 위한 리버스 엔지니어링 도구입니다. 구체적으로, 모든 Dart 버전 2.10 릴리스에 대해 관례적으로 libapp.so라는 이름의 Flutter/Dart Android 바이너리의 파서 및 정보 추출기입니다. 실행하면 격리 스냅샷에 있는 모든 클래스의 전체 덤프를 출력합니다.
이 도구는 현재 베타 상태이며, 일부 역직렬화 루틴과 클래스 정보가 누락되어 있습니다. 바로 작동하지 않으면 알려주시기 바랍니다.
Doldrums는 ELF 형식을 구문 분석하기 위해 pyelftools가 필요합니다. 다음 명령어로 설치할 수 있습니다.
pip3 install pyelftools
사용하려면 다음 명령어를 실행하세요. libapp.so를 적절한 바이너리로, output을 원하는 출력 파일로 대체하십시오. 참고로 자세한 옵션은 Dart 스냅샷 v2.12에서만 작동합니다.
python3 src/main.py [-v] libapp.so output
예상 출력은 모든 클래스의 덤프이며, 형식은 다음과 같습니다:
class MyApp extends StatelessWidget {
Widget build(DynamicType, DynamicType) {
Code at absolute offset: 0xec85c
}
String myPrint(DynamicType, DynamicType) {
Code at absolute offset: 0xeca80
}
}
절대 코드 오프셋은 네이티브 함수가 위치할 수 있는 libapp.so 파일 내의 오프셋을 나타냅니다.
형식에 대한 자세한 내용은 제 블로그 게시물을 확인하세요.
darter는 Dart 버전 2.5 릴리스를 위한 완전히 구현되고 테스트된 파서입니다.
프로젝트를 도우시려면 풀 리퀘스트를 보내거나 다음 주소로 기부해 주세요.
로고 제공: Luis Fonseca.