-
-
[求助]单步调试陷阱无效
-
发表于: 2018-11-6 09:50 2645
-
代码来自 https://bbs.pediy.com/thread-223460.htm @“爱吃蔬菜”
char dynamic_ccode[] = {0x1f,0xb4, //push {r0-r4} 0x01,0xde, //breakpoint 0x1f,0xbc, //pop {r0-r4} 0xf7,0x46};//mov pc,lr char *g_addr = 0; void my_sigtrap(int sig){ char change_bkp[] = {0x00,0x46}; //mov r0,r0 memcpy(g_addr+2,change_bkp,2); __clear_cache((void*)g_addr,(void*)(g_addr+8)); // need to clea r cache LOGI("chang bpk to nop\n"); } void anti4(){//SIGTRAP int ret,size; char *addr,*tmpaddr; signal(SIGTRAP,my_sigtrap); addr = (char*)malloc(PAGESIZE*2); memset(addr,0,PAGESIZE*2); g_addr = (char *)(((int) addr + PAGESIZE-1) & ~(PAGESIZE-1)); LOGI("addr: %p ,g_addr : %p\n",addr,g_addr); ret = mprotect(g_addr,PAGESIZE,PROT_READ|PROT_WRITE|PROT_EXEC); if(ret!=0) { LOGI("mprotect error\n"); return ; } size = 8; memcpy(g_addr,dynamic_ccode,size); __clear_cache((void*)g_addr,(void*)(g_addr+size)); // need to clear cache __asm__("push {r0-r4,lr}\n\t" "mov r0,pc\n\t" //此时pc指向后两条指令 "add r0,r0,#4\n\t"//+4 是的lr 地址为 pop{r0-r5} "mov lr,r0\n\t" "mov pc,%0\n\t" "pop {r0-r5}\n\t" "mov lr,r5\n\t" //恢复lr : :"r"(g_addr) :); LOGI("hi, i'm here\n"); free(addr); }
运行到汇编这部分代码会卡死掉,这个是PDF里复制来的,请教下是要怎么修改下才能生效吗
环境 :Android6.0 真机
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
- [求助]请教下angr获取所有的Blocks 2978
- [求助]请教下汇编指令转换 2881
- [求助]忘记密码和邮箱怎么找回? 11783
- [求助]单步调试陷阱无效 2646
- [建议][讨论]看雪为什么不搞一版APP呢 4429
看原图
赞赏
雪币:
留言: