1、当应用使用摄像功能时,会调用Camera.open函数去打开前置或者后置摄像头,并最终进入Native层的libandroid_runtime.so调用android_hardware_camera.native_setup函数;

2、native_setup函数中会并构造一个JNICameraContext对象(相机上下文),通过操作这个对象使用摄像功能;

3、劫持摄像头的定制ROM改写了JNICameraContext对象的源代码,再其构造函数中主动加载了一个恶意模块;

4、这个恶意模块集成了ffmpeg库(一款优秀的视频编解码库)。通过调用ffmpeg库,打开想要替换的视频文件,并对文件进行解码,将其转换成摄像头录制的视频流格式,并进行替换,最终达到劫持效果。
代码之美
1
4
分享