最近在研究一个crackme,已经获取到了check的地址,本想IDA附加单步分析,不过它在壳代码里面调用了PTRACE_TRACEME,首先想到的是hook ptrace,过滤掉PTRACE_TRACEME,不过ptrace似乎从来没有调用过,所以判定有可能是svc的方式调用了PTRACE_TRACEME。尝试过IDA单步壳代码,不过花指令太多,始终跟不到目标位置。最后通过ptrace解决:(好吧,对付ptrace还得靠它自己) 首先必须在壳代码运行之前attach,我的方法是注入zygote,然后用PTRACE_O_TRACEFORK,在zygote fork的时候,会自动attach到子进程,然后用PTRACE_GETEVENTMSG获取子进程pid ,最后detach zygote。参考了adbi的hijack里面的代码。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!