시스템 호출 테이블을 수정하여 sys_execve()
함수를 리눅스 3.x 커널에 연결하려고합니다. 문제는 sys_execve()
이 실행이 실패한 경우에만 오류 코드를 반환한다고 가정합니다. 래퍼 함수 (아래 참조)를 사용하면 sys_execve()
이 유효한 실행 파일에서 호출 될 때 제대로 실행되고 모든 것이 잘 수행됩니다.리눅스 3.x에서 sys_execve() 후킹
segfault at 3b ip 000000000000003b...
는 후크 sys_execve()
쇼 -1 ENOSYS
대신의 반환 값을 검사 strace
사용 :이 오류 조건을 일으키는 존재하지 않는 파일 또는 다른 뭔가라고 할 때 함께하지만, 호출 프로그램이 충돌합니다 정확한 오류 코드. sys_execve()
에 대한 Linux 소스 코드뿐만 아니라 래퍼 함수의 어셈블리를 검사 한 이후로 나 혼란 스럽다. 내 래퍼가 오류 코드를 제대로 전달하지 못하는 이유에 대한 제안 사항이 있습니까?
asmlinkage long new_execve(const char* name, const char const** argv, const char const** envp, struct pt_regs* regs) {
return orig_func(name, argv, envp, regs);
}
그것은되지 관련이있을 수 있지만 리눅스> 3 시스템 호출을 대체에 관심이 :
현재 sys_execve 후킹 내 전체 솔루션을 볼 수 있습니다. 그것에 관한 정보를 제공해 주실 수 있습니까? – gaurav