各位大佬好,小弟最近在学习lldb,在hook一个函数,使用lldb跟踪函数调用前参数的初始化过程,其他参数都已经找到了,唯独有一个参数的准备过程不是很理解,特来请教,详情如图一所示:
不理解的参数初始化是倒数第二个参数LeftCount,图中打印出了函数调用前改参数的值,通过头文件,- (id)GetMsgByCreateTime:(id)arg1 FromID:(unsigned int)arg2 FromCreateTime:(unsigned int)arg3 Limit:(unsigned int)arg4 LeftCount:(unsigned int *)arg5 FromSequence:(unsigned int)arg6;发现该参数的类型是unsigned int,通过调用栈向上追踪,找到了图二所示的位置:图二中最后标出的值为执行add x24,x21,x8以后的值,图一中正是使用了此处初始化的值,昨天晚上跟群里的小伙伴初步讨论了一下,有人说这个汇编指令的意思是把对象(RoomContentLogicController)的某个属性(相对于对象内存的偏移量为x8中的176)赋值给x24;我的问题是,如果现在我要手动的准备这个参数,我需要知道如何获取对象对应偏移量的这个属性值,换句话说,我如何确定取对象的哪个属性或者说如何获取对象的属性名?求指教,感谢各位的指导,在线等,谢谢。
