- quotation
- Android Reverse Engineering
file: def_example1.apk
sha1: 1350f7c84710e373f97e27d6880ca9a6ed065d4a
md5: a0aec2a7e85b86130c059c0c48d16050
Package Info
- app name, package name, icon
- activities, receivers, services
- permissions, intents
1) Pacake name: com.google.android.coremms --> google? 합법적으로 보임
2) permission:
- RECEIVE_BOOT_COMPLETED --> 부팅시 코드를 실행
- SEND_SMS --> text 메시지 전송 가능
- RECEIVE_SMS --> text 수신 시 코드 실행
3) App name: Chinese "短信息服务" --> English "Short Message Service"
4) icon: @drawable/ic_launcher
Android Manifest
- No activities! (hides from user)
1) "opti" meta-data --> 나중에 확인
2-3) 부팅 시 MessageReceiver 호출, SMS 수신 --> entry point
4) "acceiver"? typo? --> 세부정보는 "who" 로 이어짐
Strings
1 | grep -r '^ *const-st' smali | sed 's/.*const-string [vp][0-9]\{1,\},//' | sort | uniq | cs |
Quick Tip - Convert \u
Signatures
1 | keytool -printcert -jarfile def_example1.apk | cs |
1)
- Unless compromised, this is who made it
- Collect apps and see which others have this
- Search VirusTotal Intelligence for "hezhilong"
2) 이 사람은 모든 것을 상세하게 기입했다. 심지어 중국 국가 코드까지
Creation Dates
- APK 파일은 2014년 4월 11일에 만들어졌음 (아마도)
- 프로세스 제작이 하루 이상 소요됨 --> 빠름..? 복사/붙여넣기?
- build process / 작동방식에 대해 자세히 알아보기
- Can be used to correlate with other samples
Class names
먼저 Configs.class 를 살펴보기
데이터 값을 알 수 없음.
데이터 값을 확인하기 위해 BytesUtils.class 를 확인해보면 암호화되어 있음.
decryption
1 2 3 4 5 6 7 8 | a = [105, 117, 117, 113, 59, 48, 48, 116, 112, 105, 118, 46, 104, 101, 47, 100, 112, 110] result = [] for i in range(0, len(a)): data = a[i]-1 result.append(data) print "".join(map(chr, result)) | cs |
유용한 툴 소개
simplify.jar
https://github.com/CalebFenton/simplify
1 | java -jar simplify-1.2.0.jar -it "Configs;-><clinit>" def_example1.apk | cs |