123
返回列表 发新帖
楼主: yuluo - 

[求助问答] 关于今日水印相机hook

[复制链接]

29

主题

874

回帖

3285

积分

大学生

Rank: 5Rank: 5

金币
1088
好评
0
信誉
92

MT论坛最佳新人MT论坛帅哥考神

发表于 2026-5-5 17:19:56 来自手机  | 显示全部楼层  来自 山西
yuluo 发表于 2026-5-4 03:46
『来自123云盘用户的分享』
链接:https://1818061053.share.123865.com/123pan/wSgdjv-Jvc7A?pwd=zADq#
这 ...

这个改了VIP吗
回复

使用道具 举报

1

主题

29

回帖

120

积分

小学生

Rank: 2

金币
53
好评
0
信誉
100
发表于 2026-5-5 21:43:23 | 显示全部楼层  来自 北京
清风拂山岗 发表于 2026-5-5 16:20
在拍照后替换,替换以后让相机在处理水印这些

现在似乎就是这样的,但是不稳定,有的时候会卡住
回复

使用道具 举报

1

主题

29

回帖

120

积分

小学生

Rank: 2

金币
53
好评
0
信誉
100
发表于 2026-5-5 22:01:40 | 显示全部楼层  来自 北京

没有吧
回复

使用道具 举报

2

主题

128

回帖

791

积分

初中生

Rank: 3Rank: 3

金币
193
好评
0
信誉
96
发表于 2026-5-17 11:38:36 来自手机  | 显示全部楼层  来自 广东
这里菜鸡聚集地,问了也是白问,看看这个。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

62

主题

653

回帖

2250

积分

大学生

Rank: 5Rank: 5

金币
1111
好评
23
信誉
40

MT论坛最佳新人考神

QQ
发表于 2026-5-17 12:54:46 | 显示全部楼层  来自 浙江
【替换照片本身 思路三选一】

你时间和高德经纬度都搞定了 说明hook能力没问题 替换图片卡住八成是 hook错位置

今日水印相机的拍照流程通常是:

  1. CameraX/Camera2 取帧 → ImageAnalyzer/Surface → 业务层拿到Bitmap → 加水印 → 编码JPEG → 落盘
复制代码


路1 hook ImageProxy/ImageReader 的onImageAvailable
这是相机帧的入口 拦下来直接换Bitmap

  1. XposedHelpers.findAndHookMethod(
  2.     "androidx.camera.core.ImageAnalysis", lpparam.classLoader,
  3.     "analyze", ImageProxy.class,
  4.     new XC_MethodHook() {
  5.         @Override
  6.         protected void beforeHookedMethod(MethodHookParam p) {
  7.             ImageProxy proxy = (ImageProxy) p.args[0];
  8.             // 这里可以直接拿到 YUV/Bitmap 篡改
  9.         }
  10.     });
复制代码

但CameraX有时候被混淆 找不到类名 用方法2更稳

路2 hook BitmapFactory.decodeFile/decodeByteArray (推荐)
业务层加水印之前 一般会先把帧解码成Bitmap 这是最稳的截胡点

  1. XposedHelpers.findAndHookMethod(
  2.     "android.graphics.BitmapFactory", null,
  3.     "decodeByteArray", byte[].class, int.class, int.class,
  4.     new XC_MethodHook() {
  5.         @Override
  6.         protected void afterHookedMethod(MethodHookParam p) {
  7.             // 判断是不是相机来的(看长度/调用栈)
  8.             // 是的话 把 p.setResult() 替换成你自己的Bitmap
  9.             Bitmap fake = BitmapFactory.decodeFile("/sdcard/Pictures/fake.jpg");
  10.             p.setResult(fake);
  11.         }
  12.     });
复制代码


路3 hook 文件保存接口
如果上面两条都被VMP吃了 退而求其次
hook FileOutputStream.write 在落盘瞬间替换byte[]

  1. 但要注意JPEG编码已经把水印烧进去了 你换图等于丢了水印
  2. 所以这条 = 路2失败的兜底
复制代码


【调用栈追踪推荐】

  1. 先hook BitmapFactory.decodeByteArray 不改 只打 Thread.currentThread().getStackTrace()
  2. 看相机这条业务调用了哪几层 → 锁定真实入口
复制代码

这比闷头试快多了

【注意点】
今日水印相机用的是 TencentCamera + 自家滤镜 不是纯CameraX 类名会偏
可能要看 com.kuaishou / com.lebo / com.intsig 这种第三方拍照引擎包名
你截下今日的lib目录 看看用的什么相机SDK 我能帮你定位更准

说实话最稳的其实是 让相机直接取/sdcard下你预存的图 完全跳过真实拍摄
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表