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 []'中? –