能力值:
( LV9,RANK:230 )
101 楼
你去proot搜这段代码,poke_reg(tracee, STACK_POINTER, peek_reg(tracee, ORIGINAL, STACK_POINTER)); 在syscall.c这里,注释是Restore tracee's stack pointer now, if it won't hit the sysexit stage ,可能我当时理解错了。
能力值:
( LV1,RANK:0 )
102 楼
珍惜Any
你去proot搜这段代码,poke_reg(tracee, STACK_POINTER, peek_reg(tracee, ORIGINAL, STACK_POINTER)); 在syscall.c这 ...
嗯,这个注释确实有点误导
能力值:
( LV1,RANK:0 )
103 楼
有一个没看懂,我看proot创建那么多tracee干嘛,如果要是调试一个进程的话创建一个tracee不就好了,为什么要创建一个链表存tracee
能力值:
( LV9,RANK:230 )
104 楼
sanqiu
有一个没看懂,我看proot创建那么多tracee干嘛,如果要是调试一个进程的话创建一个tracee不就好了,为什么要创建一个链表存tracee
不是的呀 ,好几个点你没考虑到:
1、有的apk可能多个进程,比如一个服务就是一个进程,都需要去attah 。这也是一个tracee 。
2、有的服务会阻塞,举个例子 ,比如服务暂停了,又启动了,这种情况肯定还需要去查找tracee的状态的 。
能力值:
( LV1,RANK:0 )
105 楼
最近在研究apk签名。加个好友。
能力值:
( LV1,RANK:0 )
106 楼
poke_reg(tracee, STACK_POINTER, peek_reg(tracee, ORIGINAL, STACK_POINTER)) 这行代码的作用到底是什么啊。
我确定不是通过恢复sp指针导致exit_stop,而是通过restart的时候使用了PRACE_SYSCALL。那么为什么要在处理完enter_stop恢复sp指针呢?
比如调用openat的时候看起来会在栈上开辟空间(就是sp -= size),来存放translate后的new_path,但是将存放第二个参数的寄存器地址指向了新new_path地址后,最后会调用到这行恢复sp指针的位置。就是说最后openat系统调用传递的第二个参数,指向了比栈顶sp指针还小的位置,这样真的可行吗?
最后于 2024-8-31 20:00
被胖子鱼编辑
,原因: 编辑文本格式
能力值:
( LV9,RANK:230 )
107 楼
胖子鱼
poke_reg(tracee, STACK_POINTER, peek_reg(tracee, ORIGINAL, STACK ...
你可以看看proot那个代码,或许对你有一定的帮助。
能力值:
( LV1,RANK:0 )
108 楼
珍惜Any
你可以看看proot那个代码,或许对你有一定的帮助。
谢谢大佬回复,我也搜索了很久,甚至都找到了您当年在google group里提的问题
能力值:
( LV9,RANK:230 )
109 楼