All Projects → winterssy → Miui Purify

winterssy / Miui Purify

Licence: gpl-3.0
个人兴趣项目存档,使用 apktool 魔改 MIUI ROM,去除 MIUI 系统新增的广告。

Labels

Projects that are alternatives of or similar to Miui Purify

Ttdedroid
一键反编译工具(不需要手动安装Python) One key for quickly decompile apk/aar/dex/jar, support by jadx/dex2jar/enjarify.
Stars: ✭ 218 (+118%)
Mutual labels:  apktool
Kithack
Hacking tools pack & backdoors generator.
Stars: ✭ 377 (+277%)
Mutual labels:  apktool
Fakerandroid
A tool translate a apk file to stantard android project include so hook api and il2cpp c++ scaffolding when apk is a unity il2cpp game. Write code on a apk file elegantly.
Stars: ✭ 695 (+595%)
Mutual labels:  apktool
Apkmod
Apkmod can decompile, recompile, sign APK, and bind the payload with any legit APP
Stars: ✭ 235 (+135%)
Mutual labels:  apktool
apk-decompiler
Small Rust utility to decompile Android apks
Stars: ✭ 48 (-52%)
Mutual labels:  apktool
Obfuscapk
An automatic obfuscation tool for Android apps that works in a black-box fashion, supports advanced obfuscation features and has a modular architecture easily extensible with new techniques
Stars: ✭ 456 (+356%)
Mutual labels:  apktool
Slicer
A tool to automate the boring process of APK recon
Stars: ✭ 199 (+99%)
Mutual labels:  apktool
Deapk
DeAPK is an open-source, online APK decompiler which lets you upload an APK and then decompile it to Smali or Java sources. It is built using Laravel, Vue.js, Bootstrap, FontAwesome, Pusher, Redis, MySQL, apktool, jadx and hosted atop Oracle cloud platform.
Stars: ✭ 33 (-67%)
Mutual labels:  apktool
Apkshellext
Show app icons in windows explorer
Stars: ✭ 316 (+216%)
Mutual labels:  apktool
Diggy
Extract endpoints from apk files.
Stars: ✭ 654 (+554%)
Mutual labels:  apktool
docker-apktool
Docker image for Latest Apktool 🛠
Stars: ✭ 18 (-82%)
Mutual labels:  apktool
ApkDecompiler
【Linux系统】上apk反编译助手,已打包为ApkDecompiler.deb,支持debian系linux,如debian、ubuntu、mint、deepin等等
Stars: ✭ 34 (-66%)
Mutual labels:  apktool
Decompile Apk
🔥 Decompile APK(反编译APK)
Stars: ✭ 464 (+364%)
Mutual labels:  apktool
Android Crack Tool
🐞Android crack tool For Mac
Stars: ✭ 2,666 (+2566%)
Mutual labels:  apktool
Apktoolplus
ApkToolPlus 是一个 apk 逆向分析工具(a apk analysis tools)。
Stars: ✭ 718 (+618%)
Mutual labels:  apktool
Android Security
Android Security Resources.
Stars: ✭ 207 (+107%)
Mutual labels:  apktool
Appplus
A open source android application, and used to manage app,export apk, watch recent processes.
Stars: ✭ 428 (+328%)
Mutual labels:  apktool
Andtroj
A tool for integrating the Metasploit payload with Android's healthy programs and bypassing antivirus
Stars: ✭ 43 (-57%)
Mutual labels:  apktool
Apk Mitm
🤖 A CLI application that automatically prepares Android APK files for HTTPS inspection
Stars: ✭ 893 (+793%)
Mutual labels:  apktool
Apklab
Android Reverse-Engineering Workbench for VS Code
Stars: ✭ 470 (+370%)
Mutual labels:  apktool

miui-purify

个人兴趣项目存档,使用 apktool 魔改 MIUI ROM,去除 MIUI 系统新增的广告。

环境依赖

如果你想在手机上操作,可使用 MT管理器

准备工作

访问 MIUI官网 下载 MIUI ROM 卡刷包,使用 SuperR's Kitchen 解包以及全局 deodex 处理,然后将以下目录(若存在)拷贝出来。

.
└── system
    ├── app
    ├── framework
    ├── priv-app
    └── vendor
        ├── app
        └── framework

应用 miui-purify

根据你使用的 MIUI 版本切换至相应 miui-purify 分支,使用 apktool 反编译需要修改的 APK,执行相应方案的修改并回编(注意保留源签名),然后替换到原来的APK。

miui-purify 修改策略中的 return falsereturn true 针对布尔方法(函数名以字母 Z 结尾),return null 针对无返回值的方法(函数名以字母 V 结尾)。

return true 指将方法的函数体修改为以下代码:

.locals 1

const/4 v0, 0x1

return v0

return false 指将方法的函数体修改为以下代码:

.locals 1

const/4 v0, 0x0

return v0

return null 指将方法的函数体修改为以下代码:

.locals 0

return-void

删除 MIUI 冗余应用

请在 /system/app 目录下删除以下软件包(若存在)。

核心广告组件:

  • AnalyticsCore
  • mab
  • MSA
  • SystemAdSolution

miui-purify 建议删除的软件:

  • GameCenter
  • MiGameCenterSDKService
  • MiuiSuperMarket
  • MiuiVideo
  • Music
  • QuickSearchBox
  • Updater
  • VipAccount
  • XMPass

对于 miui-purify 没有给出修改方案却含有广告的APP,如小米视频、小米音乐、浏览器等,你可以将它们删除(不会影响系统的正常使用),选择更优秀的替代品。

制作 miui-purify 卡刷包

下载模板文件 sample.zip 解压,目录结构如下:

.
├── META-INF
│   └── com
│       └── google
│           └── android
│               ├── update-binary
│               └── updater-script  # 刷机脚本
└── system
    ├── app
    ├── framework
    ├── priv-app
    └── vendor
        ├── app
        └── framework

miui-purify 通过全局替换 deodex 后的 APK/JAR 到系统达到修改的目的。

将你修改好的 system 目录下的相应内容覆盖到 smaple/system 目录下。

生成刷机脚本 updater-script,参考示例:

ifelse(is_mounted("/cust"), unmount("/cust"));
ifelse(is_mounted("/system"), unmount("/system"));

mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/cust", "/cust", "max_batch_time=0,commit=1,data=ordered,barrier=1,errors=panic,nodelalloc");
delete_recursive("/cust/app");
delete_recursive("/cust/cust");
unmount("/cust");

ui_print("Extracting system...");
mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system", "max_batch_time=0,commit=1,data=ordered,barrier=1,errors=panic,nodelalloc");

# 清理旧内容
delete_recursive("/system/app");
delete_recursive("/system/data-app");
delete_recursive("/system/framework");
delete_recursive("/system/priv-app");
delete_recursive("/system/vendor/app");
delete_recursive("/system/vendor/framework");

# 如果你精简的APP包含动态so库,一并删除
# 可选,你不删也没事
delete("/system/lib64/libmtk_serialnum.so");
delete("/system/lib64/libxmpass_sdk_patcher.so");
delete("/system/lib64/xmpass_libweibosdkcore.so");

# 这是为了防止恢复官方recovery
delete("/system/bin/install-recovery.sh");
delete("/system/etc/recovery-resource.dat");
delete("/system/recovery-from-boot.p");

package_extract_dir("system", "/system");

# 链接动态so库,很重要
# 如果你替换的组件使用了动态so库,必须重新链接
# 可以参考 SuperR's Kitchen 生成的 symlinks
ui_print("Creating symlinks...");
symlink("/data/miui/miuisdk.apk", "/system/framework/miuisdk.jar");
symlink("/data/miui/miuisystem.apk", "/system/framework/miuisystem.jar");
symlink("/system/lib64/libbluetooth_jni.so", "/system/app/Bluetooth/lib/arm64/libbluetooth_jni.so");
symlink("/system/lib64/libcups.so", "/system/app/BuiltInPrintService/lib/arm64/libcups.so");
symlink("/system/lib64/libdefcontainer_jni.so", "/system/priv-app/DefaultContainerService/lib/arm64/libdefcontainer_jni.so");
symlink("/system/lib64/libdiag_jni.so", "/system/app/Cit/lib/arm64/libdiag_jni.so");
symlink("/system/lib64/libdict-parser.so", "/system/app/YouDaoEngine/lib/arm64/libdict-parser.so");
symlink("/system/lib64/libfaceunlock.so", "/system/priv-app/MiuiSystemUI/lib/arm64/libfaceunlock.so");
symlink("/system/lib64/libgamemaster.so", "/system/app/MiuiVpnSdkManager/lib/arm64/libgamemaster.so");
symlink("/system/lib64/libgnustl_shared.so", "/system/priv-app/MiuiSystemUI/lib/arm64/libgnustl_shared.so");
symlink("/system/lib64/libimscamera_jni.so", "/system/app/ims/lib/arm64/libimscamera_jni.so");
symlink("/system/lib64/libimsmedia_jni.so", "/system/app/ims/lib/arm64/libimsmedia_jni.so");
symlink("/system/lib64/libjni_pacprocessor.so", "/system/app/PacProcessor/lib/arm64/libjni_pacprocessor.so");
symlink("/system/lib64/libmiuiclassproxy.so", "/system/app/miui/lib/arm64/libmiuiclassproxy.so");
symlink("/system/lib64/libmiuidiffpatcher.so", "/system/app/miui/lib/arm64/libmiuidiffpatcher.so");
symlink("/system/lib64/libmiuiimageutilities.so", "/system/app/miui/lib/arm64/libmiuiimageutilities.so");
symlink("/system/lib64/libmiuinative.so", "/system/app/miui/lib/arm64/libmiuinative.so");
symlink("/system/lib64/libmivrnative.so", "/system/priv-app/MiVRFramework/lib/arm64/libmivrnative.so");
symlink("/system/lib64/libnfc_nci_jni.so", "/system/app/NfcNci/lib/arm64/libnfc_nci_jni.so");
symlink("/system/lib64/libopencv_java3.so", "/system/priv-app/MiuiSystemUI/lib/arm64/libopencv_java3.so");
symlink("/system/lib64/libpowerkeeper_jni.so", "/system/app/PowerKeeper/lib/arm64/libpowerkeeper_jni.so");
symlink("/system/lib64/libprintspooler_jni.so", "/system/app/PrintSpooler/lib/arm64/libprintspooler_jni.so");
symlink("/system/lib64/libqspower-1.0.0.so", "/system/priv-app/MiuiSystemUI/lib/arm64/libqspower-1.0.0.so");
symlink("/system/lib64/libSampleAuthJNI.so", "/system/app/SampleAuthenticatorService/lib/arm64/libSampleAuthJNI.so");
symlink("/system/lib64/libSampleExtAuthJNI.so", "/system/app/SampleExtAuthService/lib/arm64/libSampleExtAuthJNI.so");
symlink("/system/lib64/libSecureExtAuthJNI.so", "/system/app/SecureExtAuthService/lib/arm64/libSecureExtAuthJNI.so");
symlink("/system/lib64/libSecureSampleAuthJNI.so", "/system/app/SecureSampleAuthService/lib/arm64/libSecureSampleAuthJNI.so");
symlink("/system/lib64/libsim-activate-root-checker.so", "/system/app/XiaomiSimActivateService/lib/arm64/libsim-activate-root-checker.so");
symlink("/system/lib64/libSNPE.so", "/system/priv-app/MiuiSystemUI/lib/arm64/libSNPE.so");
symlink("/system/lib64/libtasft_jni.so", "/system/app/Cit/lib/arm64/libtasft_jni.so");
symlink("/system/lib64/libuptsmaddonmi.so", "/system/app/TSMClient/lib/arm64/libuptsmaddonmi.so");
symlink("/system/lib64/libwfds.so", "/system/app/BuiltInPrintService/lib/arm64/libwfds.so");
symlink("/system/lib64/libXMFD_FaceDetect.so", "/system/priv-app/MiuiSystemUI/lib/arm64/libXMFD_FaceDetect.so");
symlink("/system/lib/libfb.so", "/system/app/HybridPlatform/lib/arm/libfb.so");
symlink("/system/lib/libgifimage.so", "/system/app/HybridPlatform/lib/arm/libgifimage.so");
symlink("/system/lib/libimagepipeline.so", "/system/app/HybridPlatform/lib/arm/libimagepipeline.so");
symlink("/system/lib/libj2v8.so", "/system/app/HybridPlatform/lib/arm/libj2v8.so");
symlink("/system/lib/libsdk_patcher.so", "/system/app/HybridPlatform/lib/arm/libsdk_patcher.so");
symlink("/system/lib/libstatic-webp.so", "/system/app/HybridPlatform/lib/arm/libstatic-webp.so");
symlink("/system/lib/libttscompat.so", "/system/priv-app/PicoTts/lib/arm/libttscompat.so");
symlink("/system/lib/libttspico.so", "/system/priv-app/PicoTts/lib/arm/libttspico.so");
symlink("/system/lib/libyoga.so", "/system/app/HybridPlatform/lib/arm/libyoga.so");
symlink("/system/vendor/lib64/libmmi_jni.so", "/system/vendor/app/Qmmi/lib/arm64/libmmi_jni.so");

# 设置权限
ui_print("Setting Permissions...");
set_metadata_recursive("/system/app", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/framework", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/priv-app", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/vendor/app", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/vendor/framework", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");

unmount("/system");

ui_print("Done!");
set_progress(1.000000);

大功告成!现在你可以打包成 zip 卡刷包,并通过TWRP刷进你的手机~

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].