huawei framework source
version:Honor5C, Android 7.0,EMUI5.0
ๆฌ้กน็ฎไธบ็ ็ฉถhwframeworkๅฑ็ๆบ็ ใ
adb pull /system/framework .
adb shell dumpsys activity top // ๅพๅฐapk็packageName
adb shell pm path {packageName} //ๅพๅฐapk็ๅฎ่ฃ
็ฎๅฝ apkPath eg:/system/priv-app/xxx/xxxx.apk
adb pull ../{apkPath} . //ไปromไธญๆๅapkๆไปถ
dextra -dextract *.oat(ๆ*.odex) //ไปoatๆไปถๆodexๆไปถไธญๆๅdex
jadx d out --show-bad-code *.dex //่ฝฌๆขdexไธบjava
- artไธromๅ็ผ่ฏๆๅทง
ๅจandroid 5.0ไนๅ๏ผ็ณป็ป็/system/framework็ฎๅฝไธ็jarๅ ้้ขๅทฒ็ปไธๅ ๅซไปฃ็ ไบ๏ผๅชๆฏไธไบ็ฉบ็jarๆไปถใไปฃ็ ่ขซๅญๅจๅจoatๆไปถๆ่ odexๆไปถไธญ๏ผๅ ถไธญframework็ไปฃ็ ไธป่ฆ้ไธญๅจ๏ผ
1. /system/framework/oat/arm64
โโโ am.odex
โโโ android.test.runner.odex
โโโ applist.odex
โโโ appwidget.odex
โโโ bmgr.odex
โโโ bu.odex
โโโ com.android.contacts.separated.odex
โโโ com.android.future.usb.accessory.odex
โโโ com.android.location.provider.odex
โโโ com.android.media.remotedisplay.odex
โโโ com.android.mediadrm.signer.odex
โโโ com.android.nfc_extras.odex
โโโ com.google.android.maps.odex
โโโ com.google.android.media.effects.odex
โโโ com.gsma.services.nfc.odex
โโโ com.hisi.perfhub.odex
โโโ com.huawei.iconnect.wearable.odex
โโโ com.huawei.launcher.separated.odex
โโโ com.huawei.systemmanager.separated.odex
โโโ com.huawei.theme.stat.odex
โโโ content.odex
โโโ dpm.odex
โโโ ethernet-service.odex
โโโ hid.odex
โโโ hwServices.odex
โโโ hwWifi-service.odex
โโโ hwcustServices.odex
โโโ hwcustwifi-service.odex
โโโ hwpush.odex
โโโ hwtransition.odex
โโโ ime.odex
โโโ input.odex
โโโ javax.obex.odex
โโโ jcifs-1.3.17-dex.odex
โโโ media_cmd.odex
โโโ monkey.odex
โโโ pm.odex
โโโ requestsync.odex
โโโ services.odex
โโโ settings.odex
โโโ sm.odex
โโโ svc.odex
โโโ telecom.odex
โโโ uiautomator.odex
โโโ wifi-service.odex
โโโ wm.odex
2. /system/framework/arm64
.
โโโ boot-apache-xml.art
โโโ boot-apache-xml.oat
โโโ boot-bouncycastle.art
โโโ boot-bouncycastle.oat
โโโ boot-conscrypt.art
โโโ boot-conscrypt.oat
โโโ boot-core-junit.art
โโโ boot-core-junit.oat
โโโ boot-core-libart.art
โโโ boot-core-libart.oat
โโโ boot-ext.art
โโโ boot-ext.oat
โโโ boot-framework.art
โโโ boot-framework.oat
โโโ boot-hwEmui.art
โโโ boot-hwEmui.oat
โโโ boot-hwTelephony-common.art
โโโ boot-hwTelephony-common.oat
โโโ boot-hwaps.art
โโโ boot-hwaps.oat
โโโ boot-hwcustEmui.art
โโโ boot-hwcustEmui.oat
โโโ boot-hwcustTelephony-common.art
โโโ boot-hwcustTelephony-common.oat
โโโ boot-hwcustframework.art
โโโ boot-hwcustframework.oat
โโโ boot-hwframework.art
โโโ boot-hwframework.oat
โโโ boot-ims-common.art
โโโ boot-ims-common.oat
โโโ boot-okhttp.art
โโโ boot-okhttp.oat
โโโ boot-org.apache.http.legacy.boot.art
โโโ boot-org.apache.http.legacy.boot.oat
โโโ boot-org.ifaa.android.manager.art
โโโ boot-org.ifaa.android.manager.oat
โโโ boot-org.simalliance.openmobileapi.art
โโโ boot-org.simalliance.openmobileapi.oat
โโโ boot-telephony-common.art
โโโ boot-telephony-common.oat
โโโ boot-voip-common.art
โโโ boot-voip-common.oat
โโโ boot.art
โโโ boot.oat
ๆข็ถๆพๅฐไบไปฃ็ ็็ๆญฃๅญๅจไฝ็ฝฎ๏ผๅช้่ฆไป่ฟไบๆไปถไธญๆๅๅบไปฃ็ ๅณๅฏ๏ผ้ฆๅ ๆฅ็ไธoatๆไปถๅodexๆไปถ็ๆฌ่ดจ:
$ file boot.oat
boot.oat: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, stripped
$ file services.odex
services.odex: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, stripped
ๅฏไปฅ็ๅฐodexๆไปถๅoatๆไปถๆฌ่ดจไธ้ฝๆฏelfๆไปถ๏ผLinuxไธ็ไธ็งๅฏๆง่กๆไปถ๏ผใ้่ฟๆฅ็็ธๅ ณๆๆกฃๅฏไปฅๅ็ฐ๏ผoatๆodexๆไปถไธญๆฏๅญๅจๆๅฎๆด็dexๆไปถ็๏ผๆไปฌๅช้่ฆไปoatๆodexไธญๅฐdexๆๅๅบๆฅๅณๅฏใ
- ๅจMacๆLinuxๅนณๅฐไธๆไธชๅผบๅคง็ๅทฅๅ ทdextra๏ผๅช้่ฆๅฆไธ็ๅฝไปคๅฐฑ่ฝไปoatๆodexไธญๆๅๅบdexๆไปถ๏ผ
$ dextra -dextract services.odex
N OAT file (079)
OFF: 9b4
Dex header @0x10c7899e8 (2721 classes) at 0x9e8: /system/framework/services.jar
Written to system@[email protected]@classes.dex
Location Length: 30
ๆๅๅบๆฅ็dexๆไปถ๏ผ
system@[email protected]@classes.dex
- ๅจWindowsๅนณๅฐ
windowsๅนณๅฐๅทฅๅ ท๏ผ[SmaliEx] (https://github.com/testwhat/SmaliEx)
PS: ๅฏนๆญค่ฝฌๆข่ฟ็จๅฏไปฅๅไธช่ๆฌoat2dex.shๆพๅจframework็ฎๅฝไธ๏ผๆฅๅฎๆๆน้่ฝฌๆขๅทฅไฝ๏ผ
files=`find arm64 oat/arm64 -name "*.oat" -o -name "*.odex"`
if [ -d "tmp" ]; then
echo ๆไปถๅคนๅญๅจ
rm -rf tmp
fi
mkdir tmp
echo $PWD
prefix=$PWD
cd tmp
echo "==========ไปoatๆodexไธญๆๅdex================="
for file in $files
do
dextra -dextract "$prefix/$file"
done
echo "===========dex่ฝฌjava=============="
files=`find . -name "*.dex"`
for file in $files
do
jadx -d out --show-bad-code $file
done
dex ๅ็ผ่ฏๅฐฑๆๅพๅคๅทฅๅ
ทๆฅๅฎ็ฐไบ๏ผ่ฟ้ๆจ่ jadx
.
ps: 8.0ไนๅdexไฟๅญๅจvdexไธญ้่ฆ็จๆฐ็ๅทฅๅ ทไปvdexไธญๆๅdex๏ผๅทฅๅ ท้พๆฅvdexExtractor
- ๅกๅทๅ
ๆๅframeworkๆนๆณ
- system.new.dat.br
- system.new.dat
- system.img
-
.brๆไปถๆฏgoogle็ๅ็ผฉ็ฎๆณbrotliๅ็ผฉไนๅ็ไบง็ฉ๏ผ้่ฆๅ ่งฃๅ็ผฉๅพๅฐๅๅงๆไปถใ linuxไธๅฎ่ฃ brotli๏ผ
apt install brotli
-
่งฃๅ็ผฉ.brๆไปถ
brotli --decompress --input system.new.dat.br --output system.new.dat
-
ๆๅsystem.img, ็จๅฐๅผๆบ้กน็ฎsdat2img
python sdat2img.py system.transfer.list system.new.dat system.img
-
ๆ่ฝฝsystem.img
mountใsystem.img tmp
tmp็ฎๅฝไธๅณไธบ็ณป็ปๆไปถใ
Android 10
Android 10ไธ้ข,vdexไธๅ ๅซdexๆไปถไบ๏ผdexๆไปถๅญๆพๅจๅapkไธญๆ่ jarๅ ไธญใ
Android 11
Android 11 ๆฐๅขapex
ๆ ผๅผๆไปถ๏ผ้จๅไปฃ็ ๅญๅจๅจ/system/apex
็ฎๅฝไธ้ข๏ผ
system/apex/
โโโ com.android.apex.cts.shim.apex
โโโ com.android.art.release.apex
โโโ com.android.i18n.apex
โโโ com.android.permission.apex
โโโ com.android.runtime.apex
โโโ com.android.vndk.current.apex
โโโ com.android.wifi.apex
โโโ com.google.android.adbd.apex
โโโ com.google.android.cellbroadcast.apex
โโโ com.google.android.conscrypt.apex
โโโ com.google.android.extservices.apex
โโโ com.google.android.ipsec.apex
โโโ com.google.android.media.apex
โโโ com.google.android.mediaprovider.apex
โโโ com.google.android.media.swcodec.apex
โโโ com.google.android.neuralnetworks.apex
โโโ com.google.android.os.statsd.apex
โโโ com.google.android.permission.apex
โโโ com.google.android.resolv.apex
โโโ com.google.android.sdkext.apex
โโโ com.google.android.tethering.apex
โโโ com.google.android.tzdata2.apex
ไปฅcom.android.wifi.apex
ไธบไพ๏ผ
- ๆฅ็ๆไปถๆ ผๅผ๏ผ
file com.android.wifi.apex
output:
com.android.wifi.apex: Java archive data (JAR)
- ่งฃๅๆไปถ:
unzip com.android.wifi.apex -d com.android.wifi.apex_out
ๆฅ็่งฃๅๅ็ๆไปถ:
com.android.wifi.apex_out/
โโโ AndroidManifest.xml
โโโ apex_build_info.pb
โโโ apex_manifest.pb
โโโ apex_payload.img
โโโ apex_pubkey
โโโ assets
โโโ META-INF
โโโ resources.arsc
- ๆ่ฝฝ
apex_payload.img
ๆไปถ:
sudo mount -o loop,ro apex_payload.img tmp/
- ๆฅ็tmp็ฎๅฝไธๅ ๅฎน:
tmp
โโโ apex_manifest.pb
โโโ app
โย ย โโโ OsuLogin
โย ย โโโ OsuLogin.apk
โโโ etc
โย ย โโโ security
โย ย โโโ cacerts_wfa
โย ย โโโ 21125ccd.0
โย ย โโโ 674b5f5b.0
โย ย โโโ ea93cb5b.0
โโโ javalib
โย ย โโโ framework-wifi.jar
โย ย โโโ service-wifi.jar
โโโ lost+found [error opening dir]
โโโ priv-app
โโโ ServiceWifiResources
โโโ ServiceWifiResources.apk
javalib
็ฎๅฝไธ็jarๅณไธบwifiใservice
็ธๅ
ณ็ๆบ็ ใ
ps: Android 10ไธ็/system/apex
็ฎๅฝไธๅญๆพ็ๆฏๅฏนๅบ็ๆไปถๅคน๏ผๅจๆไปถๅคนไธๅญๆพ็็ธๅ
ณ็jarๅ
๏ผ็ๅปไบ่งฃๅๆ่ฝฝๆไปถ็ณป็ป็ๆญฅ้ชคใ
WifiServiceImpl.javaๆๅจ็jar,้่ฆๆฅ็bpๆไปถใ
https://android.googlesource.com/platform/frameworks/opt/net/wifi/+/refs/tags/android-11.0.0_r42/service/Android.bpใ