安卓虚拟相机虚拟摄像头插件,IOS苹果iphone,微信QQ都支持,提供dex\hook ...

打印 上一主题 下一主题

主题 821|帖子 821|积分 2463

焦点HOOK思绪源码开源了,仅供学习,用的一个java类实现的,但是成品我不提供奥,就提供下实现虚拟视频hook类的java代码【我已经把dex文件里面实现hook的字节码代码转换成java代码了】,仅供各人研究,用工具是Smali将字节码代码转换为Java代码,工具下面地址可以自己网上搜。

下面是我测试一个结果视频【仅供学习】:
     虚拟摄像头插件,玩玩,支持微信QQ,更换摄像头,照旧开源的!!!
  
下面是实现HOOk的java代码,我已经用Smali导出来了:
===================================================================
//
// Decompiled by Jadx - 791ms
//
package com.exampsle.vcam;
import android.graphics.ImageFormat;
import android.graphics.Rect;
import android.media.Image;
import android.media.MediaCodec;
import android.media.MediaCodecInfo;
import android.media.MediaCrypto;
import android.media.MediaExtractor;
import android.media.MediaFormat;
import android.util.Log;
import android.view.Surface;
import de.robv.android.xposed.XposedBridge;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.ByteBuffer;
import java.util.concurrent.LinkedBlockingQueue;
public class VideoToFrames implements Runnable {
     private static final int COLOR_FormatI420 = 1;
     private static final int COLOR_FormatNV21 = 2;
     private static final long DEFAULT_TIMEOUT_US = 10000;
     private static final String TAG = "VideoToFrames";
     private static final boolean VERBOSE = false;
     private Callback callback;
     private Thread childThread;
     private LinkedBlockingQueue<byte[]> mQueue;
     private OutputImageFormat outputImageFormat;
     private Surface play_surf;
     private Throwable throwable;
     private String videoFilePath;
     private final int decodeColorFormat = 0x7f420888;
     private boolean stopDecode = false;
     public void setCallback(Callback callback) {
         this.callback = callback;
     }
     public void setEnqueue(LinkedBlockingQueue<byte[]> linkedBlockingQueue) {
         this.mQueue = linkedBlockingQueue;
     }
     public void setSaveFrames(String str, OutputImageFormat outputImageFormat) throws IOException {
         this.outputImageFormat = outputImageFormat;
     }
     public void set_surfcae(Surface surface) {
         if (surface != null) {
             this.play_surf = surface;
         }
     }
     public void stopDecode() {
         this.stopDecode = true;
     }
     public void decode(String str) throws Throwable {
         this.videoFilePath = str;
         if (this.childThread == null) {
             Thread thread = new Thread(this, "decode");
             this.childThread = thread;
             thread.start();
             Throwable th = this.throwable;
             if (th != null) {
                 throw th;
             }
         }
     }
     @Override
     public void run() {
         try {
             videoDecode(this.videoFilePath);
         } catch (Throwable th) {
             this.throwable = th;
         }
     }
     /* JADX WARN: Multi-variable type inference failed */
     /* JADX WARN: Removed duplicated region for block: B:32:0x00c1  */
     /* JADX WARN: Removed duplicated region for block: B:34:0x00c9  */
     /* JADX WARN: Type inference failed for: r0v1, types: [androi

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

北冰洋以北

金牌会员
这个人很懒什么都没写!

标签云

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