코어덤프파일관련해서 질문드립니다.
글쓴이: netstat123 / 작성시간: 목, 2010/02/18 - 2:09오후
코어덤프파일을 생성하려고 하는데요.
A, B프로젝트가 있는데 둘다 makefile을 이용하여 빌드하고
빌드된 A의 A.a파일은 B에서 빌드된 a,so파일에서 사용하고 있습니다.
A,B 두개의 프로젝트에서 덤프파일이 생성되었을때
해당 프로젝트들의 함수 이름이 발생하지 않게 하려면 어떻게 해야 하나요??
strip명령어를 이용하여 디버깅 정보를 없앴으나 정보가 사라지지 않습니다.
비슷한 질문을 올렸었는데 제가 원하는 답이 아직 없네요..
어떻게 해야 해당 프로젝트의 함수이름을 없앨수 있을까요.
Forums:
비슷한 질문에 답을 드렸었지만..
외부로 공개된 (= 외부에서 호출할 수 있는) 함수의 이름은 숨길 수 없습니다.
왜냐하면 링커가 해당 함수를 찾을 때 이름(+해시값)으로 찾아야 하기 때문입니다.
숨기고 싶은 함수가 있다면
static으로 만들거나 ELF visibility 속성을 이용할 수 있습니다.
추가적으로 궁금한 부분이 있는데요..
말씀해 주신 ELF visibility 속성을 이용하여 #0과 같이 일부 함수들의 이름을 없애는것까지는 되었습니다.
(gdb) bt
#0 0x00002b5dd7d1afc6 in ?? () from /home/test/libtest.so
#1 0x0000000000401e93 in ProcessPacket ()
#2 0x00000000004023cf in proc ()
#3 0x00002b5dd89a728d in clone () from /lib64/libc.so.6
#4 0x0000000000000000 in ?? ()
하지만 #0에서 함수 이름이외에 어떠한 so파일에서 사용했는지까지 알수 없도록 하는 방법은 없을까요??
#0에 해당하는 부분이 아예 덤프에 나오지 않도록 하는 옵션이 따로 있는지 알고 싶습니다.
제가 아는 한
제가 아는 한 그런 방법은 없습니다.
그나저나 왜 그렇게까지 숨기려고 하시는지가 더 궁금하네요..
덤프내용이 공개되면
덤프내용이 공개되면 곤란해서 숨기려고 했습니다...
함수이름이 숨겨져도 해당 함수가 사용하는 so파일의 경로가 나와서요..
답변 언제나 감사합니다~ :D
댓글 달기