glibc을 다운로드하여 코드를 수정 한 다음 사용할 수 있습니다. 그래서 그걸 가지고 놀기 위해서, 나는 glibc 의 stdio-common 함수를 변경하여 "나를 볼 수 있니?"라고 출력했습니다.glibc의 변경이 작동하지 않습니다.
int
__printf (const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
done = vfprintf (stdout, "Can you see me?", arg);
va_end (arg);
return done;
}
그 변화를 한 후 나는 의 glibc를 컴파일하고 PRINTF 를 사용하여 샘플 프로그램을 실행하려면이 의 glibc 디렉토리에 libc.so가 와 LD_PRELOAD를 사용했다. 그러나 나는 여전히 printf 정상적으로 인쇄되는 것을 보았습니다. 즉, 저의 변경 사항이 반영되지 않았습니다. 내가 여기서 실수하고있는거야?
단순히 "hello"또는 뭔가를 인쇄하기 위해 중복 된 행을 변경하십시오. va_list를 두 번 처리하고 있는데 작동하지 않습니다. 첫 번째 호출은 그것을 고갈시킵니다. –
이전에 문자 대신에 문자 + 1을 인쇄하는 다른 변경 작업도 수행했습니다. – MetallicPriest
'ldd./test-program '이 뭐라고 말합니까? 또한 프로그램을 실행하기 전에'export LD_DEBUG = files'를 실행하면 유용한 정보를 얻을 수 있습니다. –