I think this is exactly what we are talking about here.
좋아, 그럼 하나의 해결책은 불필요한 기호를 "수동으로"제거하는 것입니다. "strip"유틸리티는 심볼을 개별적으로 스트립 (또는 보관) 할 수 있으므로, --strip-all과 --keep-symbol =의 작은 묶음을 사용해야합니다. - 카드도 약간 도움이 될 수 있습니다. 물론 가장 반대되는 부분에 따라 반대되는 작업을 수행 할 수 있습니다.
좋은 시작은 모듈에서 모듈 간 링크를 위해 명시 적으로 정의 된 모든 심볼을 제거하는 것일 수 있으며, 명백한 유용한 것들, 즉 init 및 exit 만 남기고 싶지는 않습니다. 또한 커널 개발 소프트웨어 인프라 스트럭처에 의해 생성되거나 커널 개발 소프트웨어 인프라 스트럭처에 속한 소프트웨어는 다루지 않습니다. 그런 다음 올바른 방법을 찾을 때까지 시행 착오 ... 사실, EXPORT_SYMBOL (물론 init/exit)이라고 명시 적으로 정의한 기호를 제외하고는 모든 기호가 제거 될 수 있다고 생각합니다.
행운을 빈다. :)
PS :
사실, 필요한 소스 정보가 수행하는 모든 .ko 프로젝트에 존재하는 것으로 보인다 필요한 자동 제거 : 내가 뭔가를 누락하지 않는 한, 그것은 보인다 EXPORT_SYMBOL 아니에요 아무것도 또는 빌드 소프트웨어에 의해 명시 적으로 삽입 된 파일은 이론적으로 .ko 빌드가 끝나는 "ld -r"시간이 끝날 때 기본적으로 제거 될 수 있습니다. 그것은 단지 도구 체인 (컴파일러/링커)이 개별적으로 relocatable 링크/병합에 대한 "제거 또는 유지"지정을 지정하는 규정/지시문/옵션을 가지고 있다고 생각하지 않습니다. 그렇지 않으면 EXPORT_SYMBOL 매크로 및 일부 다른 곳에서 약간의 수정을하면 결과를 얻을 수 있고 모든 Linux 시스템에서 대부분의 .ko 파일에서 일부 바이트를 줄일 수 있습니다. filofel의 게시물에 추가
화염 전쟁을 피하고 싶다면 사람들을 불량배로 일반화하지 말 것을 제안합니다. –
좋은 지적, 팀 :) 더 나은가요? : D – Kimvais
"일반 대중"이 코드를 전혀 보지 못할 경우 왜 리버스 엔지니어링에 대해 걱정합니까? –