1
程序运行至getsockname
,返回值为-1,errno
为9(EBADF
,坏文件描述符)。但是,Android应用程序中的代码运行良好。getsockname返回-1,errno是EBADF?
void sysLibCSendHookHandler(CPUState* env, int isStart){
if(isStart){
int fd = env->regs[0];
int buf = env->regs[1];
int len = env->regs[2];
int flags = env->regs[3];
DECAF_printf("xxxxx send(%d, %p, %d, %d)\n", fd, buf, len, flags);
extern int errno;
struct sockaddr_un sock_addr;
socklen_t sock_addr_len;
sock_addr_len = sizeof(sock_addr);
int t = getsockname(fd, (struct sockaddr*)&sock_addr, &sock_addr_len);
DECAF_printf("fd:%d",fd);}
*“但是,在Android应用程序中安装的代码进行得很顺利......”* - 这是否意味着问题出在模拟器中? – jww
'EBADF'表示传递给'getsockname()'的文件描述符无效。这段代码*暗示*你以某种方式挂钩了send()函数,对吗?究竟如何?该代码假设参数正在传递到CPU寄存器中,但它们通常是在堆栈上传递的。是什么让你认为'send()'参数被存储在'env-> regs []'中? –