使用SVC指令获取系统时间的问题

需求: 使用SVC指令获取系统时间

日志:无

代码:

sub sp, sp, #32
str xzr, [sp]
str xzr, [sp, #8]
str xzr, [sp, #16]
str xzr, [sp, #24]
add x0, sp, #8
str x0, [sp]
mov x0, sp
mov x1, #0
mov x16, 116 ; SYS_gettimeofday
svc #0x80
ldr x0, [sp]
add sp, sp, #32
ret

操作步骤: 编译,设备上执行,打印结果,值不对

03 5f 61 f4 a5 06 00 00 a5 b4 08 00 00 00 00 00

任何其他描述: gettimeofday(struct timeval *, struct timezone *); 正确的值应该是类似这样

29 c1 23 5e 00 00 00 00 9b 13 00 00 00 00 00 00

0x5e23c129=1579401513,可是我用SVC方式获取的值明显不对,问题出在哪?

环境: Xcode11, iOS11

加快游戏刷帧?

???
这个就是系统库函数,获取当前时间,和你说的应该没什么关联

[手动狗头] 之前看过cocos2d游戏可以hook这个函数加快游戏刷帧

我只是想通过汇编的方式获取系统时间,结果调用之后返回的结果不对,不知道怎么回事 /doge

解决了,跟进系统函数syscall的具体实现,照葫芦画瓢,调用成功返回正确。:upside_down_face:

1 Like