2010-07-12 4 views
2

소스 코드를 얻지 않고 Linux에서 공유 라이브러리 (.so)를 수정할 수 있습니까 ???Linux에서 공유 라이브러리 수정

나는 LD_PRELOAD에 대해 알고 있지만, 공유 라이브러리 자체에 사용되는 함수에 유용할까요 ???

바이너리 ELF 파일을 디 컴파일/디스 어셈블 한 다음 다시 컴파일/재 컴파일하는 방법이 있습니까?

+0

쉽게 아니요. 어떤 도서관? 무엇을 바꾸려고하십니까? – Rup

+0

웹킷 공유 라이브러리;) 공유 라이브러리는 독점적 인 웹킷 빌드이지만 대부분의 동일한 opensource 기능을 사용합니다. 내가하려고하는 것은 내부 기능을 수정하는 것입니다. 이 함수는 화면에 텍스트를 렌더링하는 데 사용됩니다. 프레임 버퍼로 보내기 전에 텍스트 (BiDi 용)를 수정하고 싶습니다. opensource repo에서 동일한 라이브러리를 빌드하고 수정 사항을 추가 할 수는 있지만 소유권이 있으므로 (즉, Unopensourced 수정 사항이 있음을 의미합니다.) 필자가 볼 수있는 유일한 방법은 바이너리 패치 (또는 지원하는 경우 LD_PRELOAD)입니다. – UAE

+0

그건 그렇고, rendertext 함수는 라이브러리에서만 호출되며 외부 적으로 호출되지 않습니다. – UAE

답변

1

사용 가능한 모든 문서, 코드 및 지원으로도 응용 프로그램을 수정하기가 어렵습니다. 디버깅 기호가없는 응용 프로그램을 문서가없는 바이너리 형식 (아마도 코드가없는 것으로 판단)으로 수정하려는 시도는 훨씬 어렵고 위험한 작업입니다.

응용 프로그램 리버스 엔지니어링은 어렵지만 충분한 리소스, 결정, 도구 및 지식이 있으면 충분합니다. 이러한 모든 사항은 충분히 가치있는 목표를 가지고 있습니다.

관련 문제