IOS逆向分析——GL脚本的提取

总结:要逆一个程序必须清楚地知道程序的结构和常用的API函数,不清楚一个程序而去逆出结果是不可能滴

首先是glsl脚本运行的全过程,第一步是为shader的运行创建一个容器GLuint glCreateProgram(void),第二步是把编译好的shader附加到程序void glAttachShader(GLuint program, GLuint shader),编译好的shader可以是多个所以第二步可以重复多步把每一个编译好的一一附加到程序,顶点shader和像素shader一一成对,第三步是 void glLinkProgram(GLuint program)用来连接这些程序,第四步void glUseProgram(GLuint prog)使用它。

要提取脚本就要知道第二步中怎么把shader编译好怎么传递字符串,编译shader又分为三步,一是创建容器GLuint glCreateShader(GLenum shaderType),二是添加源代码void glShaderSource(GLuint shader, int numOfStrings, const char **strings, int *lenOfStrings),三是编译void glCompileShader(GLuint shader)

看懂了这些一眼就知道要提取shader就是在它添加原代码的时候下断点,编译和其他的函数都没有和字符串相关的,只有glShaderSource是添加源码,其他的函数都没用,找到了关键函数看参数,第三个参数是字符串指针,断下后在寄存器R2中打印出来,p *(char**)$r2,运行一次断下打印一次,全部复制出来所有的shader便全部提取出来了

逆向过程看起来很简单,主要要熟悉程序的流程找到关键函数,断错了就越走越远了

IOS逆向分析——GL脚本的提取,布布扣,bubuko.com

时间: 2024-10-22 12:37:04

IOS逆向分析——GL脚本的提取的相关文章

IOS逆向分析笔记——replay逆向分析

正常找出视频或者图片处理文件的GL脚本就是找出脚本加载的函数glshadersource断下就好了,上周在分析replay的时候很奇怪IDA没有找到glshadersource这个函数,于是我在反汇编窗口里搜索glshadersource,找到了很多用到它的相关函数,于是一一尝试没有一个能断下,想到图像处理一定要调用GL脚本,于是搜索GLSL找到相关函数还是没有一个能断下,于是又所有打开文件的函数依然没有断下 于是茫然了,试了很多方法,搜索了视频相关的函数,找到捕捉输出的缓冲区样本函数didou

记录金盾加密视频提取工具被逆向分析过程一

金盾2018SS加密视频机器码替换工具的分析过程三 上篇讲替换机器码工具的分析,本次继续分析同一个包里带的视频提取工具.看图: 工具使用过程:这里的WIN7.DLL是主要文件,我们结合前面分析的,替换机器码后,在把该DLL注入到播放器内,输入密码后,视频就开始播放了,并在D盘根目录下生成了一个AVI的视频文件,调整播放速度可以加快提取.提取后的AVI不能播放,需要使用它里面带的修复工具修复后就能播放了.因能力有限,花费了很长时间来分析.win7.dll注入后做了3个动作:1.HOOK播放器,把解

逆向分析智能窗帘频射协议

近来我热衷于对家庭自动化设备的破解,然后将它们添加到我的Homekit集成包之中.这事情要从几个月前说起,当时我爸订购了大批量的RAEX 433MHz射频电动窗帘,以替代老式的手动式窗帘. 注意:你可以在Spotlight网店搜索Motion Motorised Roller Blind找到该窗帘. 我对这个电动窗帘非常满意,有了它我就不用跑上跑下的去打开/关闭窗户,可是为了控制它们,你需要购买RAEX的遥控器.RAEX有许多不同类型的遥控器产品,其中我选择购买了以下两种遥控器: R 型遥控器

Android逆向分析(2) APK的打包与安装

http://blog.zhaiyifan.cn/2016/02/13/android-reverse-2/ 2/18日增加对aidl和java编译的描述. 前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之鱼不如授之以渔,只有知道一些基本原理,才能让我们以后能自行解决更多问题. 那么,你知道么?从我们在Android Studio中,点击run,

Android动态逆向分析工具ZjDroid--脱壳神器

项目地址:https://github.com/BaiduSecurityLabs/ZjDroid 前提条件: 1.Root手机一部 2.须要通过Xposed installer( http://dl.xposed.info/latest.apk)安装Xposed Framework; 一.ZjDroid工具介绍 ZjDroid是基于Xposed Framewrok的动态逆向分析模块,逆向分析者能够通过ZjDroid完毕下面工作:1.DEX文件的内存dump2.基于Dalvik关键指针的内存Ba

对Xposed的全面分析(一)--- xposedInstall apk文件,逆向分析

本次分析主要是 对源代码的分析, 分成两块1. xposedInstall 逆向分析java代码, 2. 分析框架 替换的app_process和框架hook的原理. 第一部分: 主要是希望分析的尽量透彻,这是第二次分析AnDa,之前对第二部分分析完(源码看过,文献多次阅读)之后理解不深刻,而且当时第一部分根本就没当回事,因为做项目比较赶.所以现在为了将漏网之鱼一网打尽,决定"内外"兼修,java和C++带上系统一起学习总结一下,达到融汇贯通就可以了. 之所以再次分析xposed是觉得

路由器逆向分析------MIPS系统网络的配置(QEMU)

本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69378333 MIPS系统网络的配置  使用QEMU 模拟正在运行的MIPS系统并配置MIPS系统网络,这样本地主机ubuntu系统就可以和QEMU虚拟机进行网络通讯和传输数据了.在进行MIPS程序的测试时是很有用处. 01.获取安装依赖文件,执行下面的命令: $ sudo apt-get install bridge-utils uml-utilities 02.修改 ubun

ARM汇编基础(iOS逆向)

1. ARM汇编基础 在逆向一个功能的时候,往往需要分析大量的汇编代码,在iOS逆向中,ARM汇编是必须掌握的语言,本文总结了ARM汇编的基础知识,如果你想了解更多,请参考狗神的小黄书<iOS逆向逆向工程>或ARM官方手册. 1.1 寄存器,内存和栈 在ARM汇编里,操作对象是寄存器,内存和栈 ARM的栈遵循先进后出,是满递减的,向下增长,也就是开口向下,新的变量被存到栈底的位置;越靠近栈底,内存地址越小 一个名为stackPointer的寄存器保存栈的栈底地址,成为栈地址. 可以把一个变量给

病毒木马查杀实战第016篇:U盘病毒之逆向分析

       本系列教程版权归"i春秋"所有,转载请标明出处.        本文配套视频教程,请访问"i春秋"(www.ichunqiu.com). 比对脱壳前后的程序 我们这次所要研究的是经过上次的脱壳操作之后,所获取的无壳病毒样本.其实我们这里可以先进行一下对比,看看有壳与无壳的反汇编代码的区别.首先用IDA Pro载入原始病毒样本: 图1 可以发现此时IDA Pro的Functionwindow是空的,说明很多函数没能解析出来,并且还无法切换到图形模式,而图