相机

以下内容基于6.1版本相机

当前版本署名

packageInfo().versionName字符串后
move-result-object v3后添加
Base64编码

1
2

Ver:XXXXXXXX丨Mod:AetherPX

Ver前回车,Ver后跟随日期年月日

1
2
3
4
5
6
7
8
9
10
11
12
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v5, "编码内容"
const/4 v6, 0x0
invoke-static {v5, v6}, Landroid/util/Base64;->decode(Ljava/lang/String;I)[B
move-result-object v5
new-instance v6, Ljava/lang/String;
invoke-direct {v6, v5}, Ljava/lang/String;-><init>([B)V
invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3

固定机型配置

搜索字符串ro.debuggable
上方有sget-object v0, Landroid/os/Build;->DEVICE:Ljava/lang/String;的类中
在sget下行添加

1
const-string v0, "mondrian"

引号内为要固定的机型代号

跳过混淆
搜索()Latpcommon
atpcommon为底配置文件
跳转并增加一个寄存器,在第一个cond后添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sget-object v1, Landroid/os/Build;->DEVICE:Ljava/lang/String;
:try_start_8
invoke-static {v1}, Lse/c;->a(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/Class;->newInstance()Ljava/lang/Object;
move-result-object v2
check-cast v2, Latpcommon;
sput-object v2, Lot/c;->d:Latpcommon;
sget-object v2, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
sput-object v2, Lot/c;->c:Ljava/lang/Boolean;
sget-object v2, Lot/c;->d:Latpcommon;
return-object v2
:try_end_1b
.catch Ljava/lang/ClassNotFoundException; {:try_start_8 .. :try_end_1b} :catch_1c
.catch Ljava/lang/IllegalAccessException; {:try_start_8 .. :try_end_1b} :catch_1c
.catch Ljava/lang/InstantiationException; {:try_start_8 .. :try_end_1b} :catch_1c
:catch_1c

固定机型水印信息

配置文件c()方法内
删除从const-string v2到
第一个含move-result-object v2的行
即仅删除前两个混淆了的内容
改成

1
2
3
4
const-string/jumbo v2, "REDMI"
const/4 v3, 0x0
aput-object v2, v1, v3
const-string v2, "NOTE 12 TURBO"

AI智能推荐

AI文档建议

文档建议仅禁用实时提取文本生效
搜索字符串
pref_camera_ai_detect_doc
doc观察cond跳转和条件判断

识别二维码

pref_scan_qrcode_key

超清模式相册智能构图

pref_camera_crop_preferred_key
上方底配置文件调用

注:
cond跳转
if-eqz如果等于0则
if-nez如果不等于0则
if-lez如果小于等于0则

解锁拍照超高质量

arsc搜索超高并复制资源值,在dex搜索资源值
或搜索字符串getContext().resources.g…_jpegquality_entryvalues)
资源值上方&字符串下方
invoke-virtual调用跳转返回0x1

启用实验室选项

搜索camera.lab.options
改为0x1

解锁4k60

搜索
.method public static s(
类似.method public static s(IILz9/d;)Z
寄存器后第一个0x0
改0x1 const/4 p0, 0x1

修复慢动作960/1920fps闪退

搜索清空
.method public static isHFR(Ljava/lang/String;)Z

去除浏览器跳转

搜privacy.mi.com/all
把:try_start行到:catch行删除

视频提词器功能

搜索字符串pref_video_prompter_key
下方isSwitchOn方法
内invoke-virtual调用

视频超级防抖

字符串super_eis
前方有const-string/jumbo v2
上方invoke-static调用
再跳转第一个invoke-virtual调用
第一个底配置文件调用判断是否支持超级防抖
第二个底配置文件调用判断是否支持超级防抖PRO

关闭主摄默认焦距入口

搜索字符串isSupportedSwitchZoomButton
ZoomRatioToggleView类
下方invoke-virtual的调用跳转返回0x0

开启人像半身全身按钮

搜索字符串pref_ultra_wide_bokeh_enabled
位于ZoomRatioToggleView类
上方invoke-virtual的调用跳转返回0x1

开启设置测光权重

搜索字符串pref_metering_weight
CameraCapturePreferenceFragment类中
上方invoke-static {v2}调用返回0x1

添加悬浮快门键拍照

搜索字符串pref_suspend_shutter_button
CaptureMethodFragment类中
上方invoke-virtual的调用跳转返回0x1

开启运动抓拍按钮

搜索字符串pref_camera_ai_shutter_key
CameraCapturePreferenceFragment类中
上方invoke-virtual的调用跳转返回0x1

专业模式RAW开关

dex反编译搜索ProModuleEntry类
getModeUI方法invoke-direct跳转
跳转后搜索getRawItemBuilder
上方invoke-static处跳转
support方法invoke-virtual调用

部分功能类名

多机互联

CinemasterModuleEntry类

电影模式

CinematicModuleEntry类

超清模式

PixelModuleEntry类

帮拍

FriendModuleEntry

相机隐私政策

靠上行
https://privacy.mi.com/all/%s_%s
靠下行
https://privacy.mi.com/all/

徕卡相关

徕卡界面

WatermarkTypePreference类
watermark_film和watermark_leica字符串的方法内
invoke-virtual调用
0x0徕卡
0x3胶片

解锁更多快门声音

需徕卡界面为前置条件
搜索字符串pref_custom_sound_tips_key
下方invoke-virtual的调用跳转返回0x1