[C] 纯文本查看 复制代码
//
// main.c
// iOS_ARM
//
// Created by piao on 15/7/21.
// Copyright (c) 2015年 __MyCompanyName__. All rights reserved.
//
#if defined (__arm64__) /*|| defined (__aarch64__)*/
static __attribute__((naked)) long getLR(){
long lr = 0;
__asm__ volatile("mov x0, lr\n\r"
"mov %[_lr], x0\n\r"
"ret"
:[_lr]"=r"(lr));
return lr;
}
static __attribute__((naked)) long getSP(){
long sp = 0;
__asm__ volatile("mov x0, sp\n\r"
"mov %[_sp], x0\n\r"
"ret"
:[_sp]"=r"(sp));
return sp;
}
#else
static __attribute__((naked)) int getLR(){
int lr = 0;
__asm__ volatile("mov r0, lr\n\r"
"mov %[_lr], r0\n\r"
"bx lr" // 别偷懒,自己返回
:[_lr]"=r"(lr));
return lr;
}
static __attribute__((naked)) int getSP(){
int sp = 0;
__asm__ volatile("mov r0, sp\n\r"
"mov %[_sp], r0\n\r"
"bx lr"
:[_sp]"=r"(sp));
return sp;
}
#endif
static void piaoyun(char *s)
{
#if defined (__arm64__)
long lr = getLR();
printf("[++++][arm64]return = %lx\n", lr);
#else
int lr = getLR();
printf("[++++][arm]return = %x\n", lr);
#endif
char ss[10] = {0};
strncpy(ss, s, sizeof(ss));
printf("[++++]ss = %s\n\n", ss);
}
int main( int argc, char ** argv )
{
piaoyun("piaoyun");
}
至于能干什么 ,还是不说~~~ 和破解有关~{:soso_e104:}
|