Skip to content

Commit

Permalink
Hook点位调整,尽量更稳定高效。
Browse files Browse the repository at this point in the history
调整日志输出。

Signed-off-by: HChenX <[email protected]>
  • Loading branch information
HChenX committed Nov 6, 2023
1 parent 23d7241 commit 2d7e7b2
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 79 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ android {
minSdk 30
targetSdk 34
//noinspection HighAppVersionCode
versionCode 2023092900
versionName "3.8"
versionCode 2023110600
versionName "3.9"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
signingConfig signingConfigs.release
Expand Down
169 changes: 110 additions & 59 deletions app/src/main/java/Com/HChen/Hook/Execute/MiuiService/MiuiService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

import static Com.HChen.Hook.Name.MiuiName.CameraBooster;
import static Com.HChen.Hook.Name.MiuiName.GameMemoryCleaner;
import static Com.HChen.Hook.Name.MiuiName.MiuiMemReclaimer;
import static Com.HChen.Hook.Name.MiuiName.MiuiMemoryService;
import static Com.HChen.Hook.Name.MiuiName.PeriodicCleanerService;
import static Com.HChen.Hook.Name.MiuiName.PressureStateSettings;
import static Com.HChen.Hook.Name.MiuiName.ProcessKillerIdler;
Expand All @@ -19,21 +17,18 @@
import static Com.HChen.Hook.Value.MiuiValue.handleAutoLockOff;
import static Com.HChen.Hook.Value.MiuiValue.handleKillAll;
import static Com.HChen.Hook.Value.MiuiValue.handleLimitCpuException;
import static Com.HChen.Hook.Value.MiuiValue.handleMessage;
import static Com.HChen.Hook.Value.MiuiValue.handleScreenOff;
import static Com.HChen.Hook.Value.MiuiValue.handleThermalKillProc;
import static Com.HChen.Hook.Value.MiuiValue.isEnableResumeFeature;
import static Com.HChen.Hook.Value.MiuiValue.killPackage;
import static Com.HChen.Hook.Value.MiuiValue.killProcess;
import static Com.HChen.Hook.Value.MiuiValue.killProcessByMinAdj;
import static Com.HChen.Hook.Value.MiuiValue.nStartPressureMonitor;
import static Com.HChen.Hook.Value.MiuiValue.onStartJob;
import static Com.HChen.Hook.Value.MiuiValue.reclaimMemoryForGameIfNeed;
import static Com.HChen.Hook.Value.MiuiValue.runClean;
import static Com.HChen.Hook.Value.MiuiValue.updateScreenState;

import android.app.job.JobParameters;
import android.content.Context;
import android.os.Message;

import java.io.PrintWriter;

import Com.HChen.Hook.Mode.HookMode;

Expand All @@ -48,10 +43,11 @@ public void init() {
protected void after(MethodHookParam param) {
super.after(param);
getDeclaredField(param, "ENABLE_SCOUT_MEMORY_MONITOR", false);
getDeclaredField(param, "SCOUT_MEMORY_DISABLE_KGSL", false);
/*报告内存泄露?*/
// getDeclaredField(param, "SCOUT_MEMORY_DISABLE_KGSL", false);
}
}
);//
);

/*测试用*/
/*findAndHookMethod(ScoutDisplayMemoryManager,
Expand All @@ -74,34 +70,38 @@ protected void before(MethodHookParam param) {
}
);*/

/*关闭Scout的一个功能*/
findAndHookMethod(ScoutDisplayMemoryManager,
/*关闭Scout的一个功能,
内存泄露恢复功能,
注意启用改功能可能使导致内存泄露的程序被杀,
但这是合理的*/
/*findAndHookMethod(ScoutDisplayMemoryManager,
isEnableResumeFeature, new HookAction() {
@Override
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(false);
}
}
);//
);*/

/*关闭一堆Scout的功能*/
findAndHookConstructor(ScoutHelper, new HookAction() {
@Override
protected void after(MethodHookParam param) {
super.after(param);
setBoolean(param.thisObject, "ENABLED_SCOUT", false);
setBoolean(param.thisObject, "ENABLED_SCOUT_DEBUG", false);
setBoolean(param.thisObject, "BINDER_FULL_KILL_PROC", false);
setBoolean(param.thisObject, "SCOUT_BINDER_GKI", false);
/*是崩溃相关*/
@Override
protected void after(MethodHookParam param) {
super.after(param);
/*系统监察功能 关闭可以节省功耗?*/
setBoolean(param.thisObject, "ENABLED_SCOUT", false);
setBoolean(param.thisObject, "ENABLED_SCOUT_DEBUG", false);
setBoolean(param.thisObject, "BINDER_FULL_KILL_PROC", false);
// setBoolean(param.thisObject, "SCOUT_BINDER_GKI", false);
/*是崩溃相关*/
/*setBoolean(param.thisObject, "PANIC_D_THREAD", false);
setBoolean(param.thisObject, "SYSRQ_ANR_D_THREAD", false);
setBoolean(param.thisObject, "PANIC_ANR_D_THREAD", false);
setBoolean(param.thisObject, "DISABLE_AOSP_ANR_TRACE_POLICY", true);*/
}
}
}
);//
);

/*禁止在开游戏时回收内存*/
findAndHookMethod(GameMemoryCleaner,
Expand All @@ -111,10 +111,11 @@ protected void after(MethodHookParam param) {
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(null);
logSI(reclaimMemoryForGameIfNeed, "game: " + param.args[0]);
}

}
);//
);

/*关闭内存回收功能,寄生于游戏清理*/
findAndHookConstructor(GameMemoryCleaner,
Expand All @@ -131,29 +132,47 @@ protected void after(MethodHookParam param) {
findAndHookMethod(PeriodicCleanerService,
doClean, int.class, int.class, int.class, String.class,
new HookAction() {
@Override
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(null);
logSI(doClean, "thresHold: " + param.args[0] +
" killLevel: " + param.args[1] +
" pressure: " + param.args[2] +
" reason: " + param.args[3]);
}
}
);

/*禁止息屏清理后台*/
findAndHookMethod(PeriodicCleanerService,
handleScreenOff, new HookAction() {
@Override
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(null);
}
}
);//
);

/*禁用PeriodicCleaner的响应*/
findAndHookMethod(PeriodicCleanerService + "$MyHandler",
/*禁用PeriodicCleaner的响应
* 与上面重复*/
/*findAndHookMethod(PeriodicCleanerService + "$MyHandler",
handleMessage,
Message.class,
new HookAction() {
@Override
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(null);
logSI(handleMessage, "msg: " + param.args[0]);
}
}
);
);*/

/*禁用PeriodicCleaner清理*/
findAndHookMethod(PeriodicCleanerService + "$PeriodicShellCmd",
/*禁用PeriodicCleaner清理
* 与上面重复*/
/*findAndHookMethod(PeriodicCleanerService + "$PeriodicShellCmd",
runClean, PrintWriter.class,
new HookAction() {
@Override
Expand All @@ -162,7 +181,7 @@ protected void before(MethodHookParam param) {
param.setResult(null);
}
}
);
);*/

/*禁用PeriodicCleaner*/
findAndHookConstructor(PeriodicCleanerService,
Expand All @@ -174,7 +193,7 @@ protected void after(MethodHookParam param) {
getDeclaredField(param, "mEnable", false);
}
}
);//
);

/*禁止清理内存*/
findAndHookMethod(SystemPressureController,
Expand All @@ -184,9 +203,10 @@ protected void after(MethodHookParam param) {
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(null);
logSI(cleanUpMemory, "targetReleaseMem: " + param.args[0]);
}
}
);//
);

/*禁止启动内存压力检查工具*/
hookAllMethods(SystemPressureController,
Expand All @@ -198,7 +218,7 @@ protected void before(MethodHookParam param) {
param.setResult(null);
}
}
);//
);

/*禁止跟随屏幕关闭/启动内存压力检测工具*/
findAndHookMethod(SystemPressureController,
Expand All @@ -223,7 +243,7 @@ protected void before(MethodHookParam param) {
param.setResult(false);
}
}
);//
);

/*禁止息屏清理内存*/
hookAllMethods(ProcessPowerCleaner,
Expand All @@ -235,7 +255,7 @@ protected void before(MethodHookParam param) {
param.setResult(null);
}
}
);//
);

/*禁止温度过高清理*/
hookAllMethods(ProcessPowerCleaner,
Expand All @@ -245,9 +265,10 @@ protected void before(MethodHookParam param) {
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(null);
logSI(handleThermalKillProc, "config: " + param.args[0]);
}
}
);//
);

/*禁止kill进程*/
hookAllMethods(ProcessPowerCleaner,
Expand All @@ -257,6 +278,7 @@ protected void before(MethodHookParam param) {
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(null);
logSI(handleKillAll, "config: " + param.args[0] + " isKillSystemProc: " + param.args[1]);
}
}
);
Expand All @@ -283,8 +305,31 @@ protected void before(MethodHookParam param) {
}
);*/

/*禁止ProcessMemoryCleaner的killPackage*/
hookAllMethods(ProcessMemoryCleaner,
killPackage, new HookAction() {
@Override
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(0L);
}
}
);

/*禁止kill,这个是最终的kill方法,专用于释放内存*/
hookAllMethods(ProcessMemoryCleaner,
killProcess,
new HookAction() {
@Override
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(0L);
}
}
);

/*禁止ProcessMemoryCleaner$H响应*/
findAndHookMethod(ProcessMemoryCleaner + "$H",
/*findAndHookMethod(ProcessMemoryCleaner + "$H",
handleMessage, Message.class,
new HookAction() {
@Override
Expand All @@ -293,7 +338,21 @@ protected void before(MethodHookParam param) {
param.setResult(null);
}
}
);//
);//*/

/*禁止ProcessMemoryCleaner的killProcessByMinAdj*/
hookAllMethods(ProcessMemoryCleaner,
killProcessByMinAdj, new HookAction() {
@Override
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(null);
logSI(killProcessByMinAdj, "minAdj: " + param.args[0] +
" reason: " + param.args[1] +
" whiteList: " + param.args[2]);
}
}
);

/* hookAllMethods("com.android.server.am.ProcessMemoryCleaner",
"checkBackgroundProcCompact",
Expand All @@ -315,18 +374,6 @@ protected void before(MethodHookParam param) {
param.setResult(true);
}
}
);//

/*禁止kill,这个是最终的kill方法,专用于释放内存*/
hookAllMethods(ProcessMemoryCleaner,
killProcess,
new HookAction() {
@Override
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(0L);
}
}
);

/*禁止相机kill*/
Expand All @@ -337,9 +384,10 @@ protected void before(MethodHookParam param) {
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(null);
logSI(boostCameraIfNeeded, "memThreshold: " + param.args[0] + " isMiuiCamera: " + param.args[1]);
}
}
);//
);

/*禁止Cpu使用检查*/
findAndHookMethod(SmartCpuPolicyManager,
Expand All @@ -348,6 +396,7 @@ handleLimitCpuException, int.class, new HookAction() {
protected void before(MethodHookParam param) {
super.before(param);
param.setResult(null);
logSI(handleLimitCpuException, "type: " + param.args[0]);
}
}
);
Expand Down Expand Up @@ -377,8 +426,9 @@ protected void before(MethodHookParam param) {
}
);*/

/*禁用MiuiMemoryService*/
findAndHookConstructor(MiuiMemoryService,
/*禁用MiuiMemoryService
* 似乎控制内存压缩,不需要关闭*/
/*findAndHookConstructor(MiuiMemoryService,
Context.class,
new HookAction() {
@Override
Expand All @@ -389,19 +439,20 @@ protected void after(MethodHookParam param) {
getDeclaredField(param, "sWriteEnable", false);
}
}
);
);//*/

/*禁用MiuiMemReclaimer*/
findAndHookConstructor(MiuiMemReclaimer,
/*禁用mi_reclaim
* 什么陈年逻辑,看不懂,似乎和压缩有关*/
/*findAndHookConstructor(MiuiMemReclaimer,
new HookAction() {
@Override
protected void after(MethodHookParam param) {
super.after(param);
getDeclaredField(param, "RECLAIM_IF_NEEDED", false);
/*getDeclaredField(param, "USE_LEGACY_COMPACTION", false);*/
*//*getDeclaredField(param, "USE_LEGACY_COMPACTION", false);*//*
}
}
);
);//*/

/*压缩进程的*/
/*禁用MiuiMemReclaimer*//*
Expand Down
Loading

0 comments on commit 2d7e7b2

Please sign in to comment.