# glCaptureAPICall **Repository Path**: WutaCamDevelop_iOS/glCaptureAPICall ## Basic Information - **Project Name**: glCaptureAPICall - **Description**: 用来打印gl方法的frida逆向js脚本 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-05-07 - **Last Updated**: 2026-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Readme 说明这个文件夹里的各种工具 ## captureAPICall.js 这是个用frida截获各种gl数据的js脚本 目前支持: * [TestFace15](https://gitee.com/WutaCamDevelop_iOS/TestFace15.git) * 美颜相机 ### 使用 ```bash frida -U -f com.meitu.myxj -l captureAPICall.js ``` ### 替换相机输出 ```javascript // 准备固定图片缓存数据 glCapturedData.cameraOutputPrepare() // 拦截并替换相机输出 glCapturedData.cameraOutputReplace() // 取消并恢复相机输出 glCapturedData.cameraOutputRecover() ``` ### 截取下一帧绘制 ```javascript // 截取下一次帧绘制过程中所有的gl绘制方法及相关的program、texture、buffer、vao数据 glCapturedData.captureNextFrameAPICall() ``` ### dump data ```javascript // dump截获的program数据 glCapturedData.dumpProgramCollector() // dump截获的texture数据 glCapturedData.dumpTextureCollector() // dump截获的buffer数据 glCapturedData.dumpBufferCollector() // dump截获的vao数据 glCapturedData.dumpVAOCollector() // dump截获的绘制数据 glCapturedData.dumpDrawCollector() ``` ### textImage2D ```javascript // 开始记录glCaptureTexImage2D方法调用 glCapturedData.startCapturingTexImage2D() // 结束记录glCaptureTexImage2D方法调用并保存到文件 glCapturedData.stopCapturingTexImage2D() // 输出当前dumpCapturingTexImage2D内记录到的方法调用 glCapturedData.dumpCapturingTexImage2D() ``` ## allGLFunctions.js 这是个用来打印gl方法调用的js脚本 ### 打印需要的gl方法调用 ```javascript hookAGLF_allGLFunctions() ``` ### 打印gl绘制方法调用及调用栈 ```javascript hookAGLF_glDrawCallStack() ``` ## mxyjTools.js 这是个美颜相机相关的调试或数据修改的js脚本 ### 修改颅顶增高参数 ```javascript stubFluffyHairFingerprint() ``` ## drawTriangles.py 这是个可视化打印vao三角形数据的python脚本 ``` Usage: python drawTriangles.py [headless] ``` * data_path 上面captureAPICall打印的vaos文件夹中的数据,只会解析三角形数据,其余的会忽略 * image_path 一张跟vao对应绘制输入纹理大小相同的图片 * width 纹理大小 * height 纹理大小 * headless 是否无窗口,默认为false即要显示窗口并显示图片,true为直接保存无窗口显示 ```bash find ~/Desktop/vaos -name "vao_index_*.txt" -print0 | xargs -0 -I {} python ~/Desktop/fridaJS/myxj/drawTriangles.py {} ~/Desktop/fixed_1080_1440.png 1080 1440 true ``` ## bindInputTexture2DImage.py 这是个关联textImage2D和fbo附带的texture打印数据的python脚本,帮助看出哪些是输入纹理,哪些是中间纹理处理的结果 ``` Usage: python bindInputTexture2DImage.py ``` ```bash python3 ~/Desktop/fridaJS/myxj/bindInputTexture2DImage.py GLCaptureOutput/glCaptureTexImage2D GLCaptureOutput/framebuffer ~/Desktop/output ``` ## 其他 其他还有一些针对特定方法的拦截器、打印指令和寄存器、打印相关类名的脚本都扔进【一些中间过程产物】,有需要再说