对某APP砸壳后直接重签名,运行就报如下错误,目前毫无头绪,大佬们给点意见
需求: 重签名后可以正常运行
日志: 看不见任何堆栈
代码: 没写任何代码
操作步骤: 砸壳,拖入MonkeyDev,运行
任何其他描述: 运行后就直接出现如上图报错
环境: MonkeyDev
对某APP砸壳后直接重签名,运行就报如下错误,目前毫无头绪,大佬们给点意见
需求: 重签名后可以正常运行
日志: 看不见任何堆栈
代码: 没写任何代码
操作步骤: 砸壳,拖入MonkeyDev,运行
任何其他描述: 运行后就直接出现如上图报错
环境: MonkeyDev
longjmp
感谢,我去试试,完了在来回复
static void (*orig_exit)(int);
void fake_exit(int status) {
NSLog(@“fake exit”);
NSLog(@"%@",[NSThread callStackSymbols]); // 这句可以得到和 crash log 一样的调用栈展示
}
static void (*orig_longjmp)(int);
void fake_longjmp(int status) {
NSLog(@“fake orig_longjmp”);
NSLog(@"%@",[NSThread callStackSymbols]); // 这句可以得到和 crash log 一样的调用栈展示
}
static void (*orig_atexit)(int);
void fake_atexit(int status) {
NSLog(@“fake atexit”);
NSLog(@"%@",[NSThread callStackSymbols]); // 这句可以得到和 crash log 一样的调用栈展示
}
attribute((constructor)) static void entry(){
rebind_symbols((struct rebinding[1]){{"exit", fake_exit, (void*)&orig_exit}},1);
//
rebind_symbols((struct rebinding[1]){{“atexit”, fake_atexit, (void*)&orig_atexit}},1);
//
rebind_symbols((struct rebinding[1]){{“longjmp”, fake_longjmp, (void*)&orig_longjmp}},1);
}
问题已解决
你好,我也遇到同样的问题了,请问你是怎么解决的?
PS:昨天正好在看你的掘金文章
请教下如何解决的呢?
实不相瞒,时间过得有点就,忘记了。。。
不过大概就是哪些常用的防护,找到对应的crash点就可以了。