OC一些不常用的函数

算术函数

int rand()  // 随机数生成。

int abs(int a)  // 整数的绝对值,abs(-10); 结果为10

double fabs(double a)   // double类型的绝对值,fabs(-3.14); 结果为3.140000

double fabsf(float a)   // fabsf类型的绝对值,fabsf(-3.14); 结果为3.140000

double floor(double a)  // 返回浮点数整数部分(舍弃小数点)floor(3.14); 结果为3.000000

double ceil(double a);  // 返回浮点数整数部分(舍弃小数点部分,往个位数进1)ceil(3.14); 结果为4.000000

double pow(double a, double b)  // a的b次方,pow(2, 3); 结果为8

double sqrt(double a)   // a的平方根 sqrt(2); 结果为1.414214


isinf() // 测试某个浮点数是否是无限大
isinf(float x);
isinf(double x);
isinf(long double x);


isnan() // 测试某个浮点数是否是一个非数字
isnan(float x);
isnan(double x);
isnan(long double x);

三角函数

double cos(double a)    // 余弦函数 (a:弧度)
double sin(double a)    // 正弦函数 (a:弧度)
double tan(double a)    // 正切函数 (a:弧度)
double asin(double a)   // 反正弦值 (a:弧度)
double acos(double a)   // 反余弦函数(a:弧度)
double atan(double a)   // 反正切函数
double atan2(double a, double b)    // 返回给定的 a 及 b 坐标值的反正切值

指数函数

double log(double a)    // 以e为底的对数值
double log10(double a)  // 对数函数log

常数

M_PI    // 圆周率(=π)
M_PI_2  // 圆周率的1/2(=π/2)
M_PI_4  // 圆周率的1/4(=π/4)
M_1_PI  // =1/π
M_2_PI  // =2/π
M_E =e
M_LOG2E     // log_2(e)
M_LOG10E    // log_10(e)
### 回答1: Frida是一款针对移动应用的动态分析工具,它可以对APP进行hook和脱壳等操作。Frida在调用OC函数时,需要使用Objective-C Runtime的方法进行调用。 首先,Frida需要与应用进行通信,以便能够在运行时hook应用中的方法和函数。Frida提供了多种方式与应用进行通信,其中较为常用的是通过Frida提供的JavaScript API来实现。在JavaScript中,可以使用frida的API来遍历当前运行的进程,找到目标进程,并获取到其Objective-C运行时。 接下来,就可以使用Objective-C Runtime提供的方法,比如`class_addMethod`或`method_exchangeImplementations`来hook目标或方法,从而达到调用OC函数的目的。需要注意的是,在hook之前,必须先对目标或方法进行定义或方法定义,以便后续在hook中调用。此外,还需要考虑hook时所使用的参数和返回值型,必须与被hook的函数或方法保持一致,否则可能会导致异常。 在Frida中,调用OC函数的过程需要注意一些细节和注意事项,但总体来说,通过Objective-C Runtime的方式,可以实现在运行时hook和调用OC函数的目的。 ### 回答2: Frida是一款逆向工程工具,可以用来调用Objective-C函数。Objective-C是一种面向对象的编程语言,是苹果公司开发和推广的语言。Frida支持通过绕开iOS的应用程序级加密,直接访问内存,可以在iOS设备上实现针对Objective-C的Hook。 在使用Frida调用Objective-C函数时,需要先安装Frida到设备上并连接上Frida服务。接着,需要在Frida中编写脚本代码,来调用Objective-C函数。 在Frida中,可以使用以下函数来执行Objective-C方法: 1. ObjC.classes:获取所有Objective-C。 2. ObjC.choose():获取匹配模式的某个实例。 3. ObjC.classes['名称'].方法名.implementation(参数):调用Objective-C的方法。 例如,在Frida中调用方法名为“test”且参数为“hello”的Objective-C函数,代码如下: ```javascript var className = ObjC.classes['Test']; var methodName = "test"; var parameter = "hello"; var hook = eval('var temp = '+ className +'; '+ '(function() {return temp["'+ methodName +'"]})()'); Interceptor.attach(hook.implementation, { onEnter: function (args) { console.log("[*] Starting Test"); console.log("[+] Parameters: " + Memory.readUtf8String(args[2])); }, onLeave: function (retval) { console.log("[*] Completed Test"); } }); ``` 其中,ObjC.classes获取Objective-C,eval函数获取某个的方法,Interceptor.attach则是在某个函数被调用前后注入进程。 总之,使用Frida调用Objective-C函数需要先了解Objective-C和方法的概念,并在Frida中编写相应的脚本进行调用。 ### 回答3: Frida是一款用于Windows、macOS、Linux、iOS和Android平台的动态分析工具,可在运行时修改应用程序的行为和拦截网络通信。在iOS平台上,Frida可以利用Objective-C的运行时库注入自己的代码,从而调用Objective-C代码。 要在Frida中调用OC函数,需要先获取要调用的函数的地址。可以使用以下命令在Frida控制台中获取函数地址: ``` var className = "ViewController"; // 要调用的函数所在的名 var funcName = "-(void)showAlert:(NSString *)message"; // 要调用的函数名 var ptr = ObjC.classes[className][funcName].implementation; console.log("Function Address: " + ptr); ``` 在获取到函数地址后,可以使用以下命令在Frida控制台中调用OC函数: ``` var funcPtr = new NativePointer("0x12345678"); // 0x12345678为要调用的函数地址 var showAlertFunc = new NativeFunction(funcPtr, 'void', ['pointer']); showAlertFunc(Memory.allocUtf8String("Hello, Frida!")); ``` 其中,'void'是函数返回型,['pointer']是参数型的数组。在这个例子中,函数只有一个NSString型的参数,因此参数型为['pointer'],并需要使用Memory.allocUtf8String()函数将字符串转换为指针型。 使用Frida调用OC函数需要一定的Objective-C和JavaScript基础,对iOS平台下的应用开发有一定的了解,同时也要注意避免对应用程序造成不良影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值