IOS逆向,传入的外来参数数据结构怎么确定?mov r1 0x11没用到

这个函数代码太多,我只截取关键部分,方便大神们分析:
这个函数的父调用是[CPDistributeMessagingCenter _dispatchMessageNamed:userInfo :reply:auditToken:]
开始,R3作为参数被传入,然后给R4—》R0—>被存入在0X70栈后就没有被改写过。
大神帮我看看第二幅图中,MOV R1 0X11 ,然后存入0X48栈后,就没有用过,我想问下,这个0X11是不是没有被用到。



R3是调用这个函数的参数。往上回溯应该是可以找到。
R0应该是个类指针,看看R1这个函数的参数有多少个,~。
再来判断[SP, #0X88+VAR_48]这个值有没有被使用

R3网上回溯,就不是这个DYLIB的代码了。难,
你指的R0是[SP,#0X88 +VAR_70]吗?这个就第一幅图的R3,是外面传进来的,在这个上面的R0是类指针。
方法:objectForKeyedSubscript:我在GITHUB上面搜到用法
@interface Subscriptable

  • (id)objectForKeyedSubscript:(id)sub attribute((unavailable)); // expected-note 2 {{‘objectForKeyedSubscript:’ has been explicitly marked unavailable here}}
  • (void)setObject:(id)object forKeyedSubscript:(id)key attribute((unavailable)); // expected-note {{‘setObject:forKeyedSubscript:’ has been explicitly marked unavailable here}}
    @end

id test(Subscriptable *obj) {
obj[obj] = obj; // expected-error {{‘setObject:forKeyedSubscript:’ is unavailable}}
return obj[obj]; // expected-error {{‘objectForKeyedSubscript:’ is unavailable}}
}

id control(Subscriptable *obj) {
return [obj objectForKeyedSubscript:obj]; // expected-error {{‘objectForKeyedSubscript:’ is unavailable}}
}
,貌似没有更多的参数

这样看来0x11应该是没有被用到

另外,你的标题想表达的意思很含糊,愿意给你解答问题的人可能因为不知道你的意图而放弃,建议你起个好标题

嗯,那看看汇编代码下面,这个函数,这个栈地址是否被使用。
这个objc_msgSend是每用到了~

问题1, 然后给R4—》R0—>被存入在0X70栈后就没有被改写过。已经解决:
po $r0后,虽然展示了这个结构,但是终究不知道这是什么class。如果想知道是什么class,我的做法是这样的:
bt后,找到调用栈,虽然上面的调用栈不是本程序的,但也可以打断点,然后在上一层di -f,找到上上层调用,一直找到这个结构指针的初始化地方,很可能是一个MSGSEND的一个返回,然后找到R1(一般来说是个selector),然后google,找到这个方法的返回值是什么类型的。

ARM的函数调用参数前4个是从寄存器传的 R0 R1 R2 R3

你图上那个R3明显是上一层调用传入的第三个参数