iOS裸函数应用实战 -- by 飘云
//
//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 %, x0\n\r"
"ret"
:"=r"(lr));
return lr;
}
static __attribute__((naked)) long getSP(){
long sp = 0;
__asm__ volatile("mov x0, sp\n\r"
"mov %, x0\n\r"
"ret"
:"=r"(sp));
return sp;
}
#else
static __attribute__((naked)) int getLR(){
int lr = 0;
__asm__ volatile("mov r0, lr\n\r"
"mov %, r0\n\r"
"bx lr"// 别偷懒,自己返回
:"=r"(lr));
return lr;
}
static __attribute__((naked)) int getSP(){
int sp = 0;
__asm__ volatile("mov r0, sp\n\r"
"mov %, r0\n\r"
"bx lr"
:"=r"(sp));
return sp;
}
#endif
static void piaoyun(char *s)
{
#if defined (__arm64__)
long lr = getLR();
printf("[++++]return = %lx\n", lr);
#else
int lr = getLR();
printf("[++++]return = %x\n", lr);
#endif
char ss = {0};
strncpy(ss, s, sizeof(ss));
printf("[++++]ss = %s\n\n", ss);
}
int main( int argc, char ** argv )
{
piaoyun("piaoyun");
}
至于能干什么 ,还是不说~~~ 和破解有关~{:soso_e104:}
至于能干什么,还是{:soso_e133:} 飘哥的东西都很有用,只是现在还不知道怎么用 偷偷说下,看的通了六窍。剩下的一窍。估计快通了,看到那么多的获取和返回。瞬间感觉自己太白了,加强学习啊!!! 谢谢分享{:soso_e100:} 谢谢楼主分享
页:
[1]