2012-01-25 2 views
0

절차를 추출해야하는 64 비트 COFF 개체 파일 (소스 코드 또는 디버그 정보 없음)이 있습니다. 오브젝트 파일에서 단일 프로 시저를 추출 하시겠습니까?

절차

는 상대적으로 짧고, 그 의존성은 다음과 같습니다

  1. 한 글로벌 변수입니다.
  2. 몇 가지 가져온 절차.

나는 이미 코드를 분해하고 다시 어셈블 해 보았습니다. 그러나 어떤 이상한 이유 때문에 코드가 디버거와 디스어셈블러에서 동일하게 보일지라도 같은 방식으로 동작하지는 않습니다. (나는 이미 실행 섹션이 올바른 플래그를 가지고 있는지 확인하려고 노력했지만, 내 지식으로는이 모든 것이 정확하고, 런타임시의 값도 일치해야한다.)

So 직접 새 오브젝트 파일로 기능을 통해 사본 (또는 기능 제외한 모든 삭제) 수있는 방법이 과정에서 코드를 분해 및 재 조립에 필요하지 않고 있는가?

답변

1

잘 모르겠습니다. 일반적으로 쉬운 방법이 있습니다.

예를 들어, 여러 절차는 하나의 공유 코드 (즉, 정적 함수)를 나타낼 수 있습니다. 그래서 당신은 파일 내의 모든 코드 블록에 대한 콜 그래프를 만들고 프로 시저가 참조하는 코드 블록을 가져와야합니다. 새로운 코드 레이아웃이 있기 때문에 모든 점프 및 호출에서 주소를 수정해야합니다.

+0

즉 특수 유틸리티를 작성하면 도움이됩니다. 하지만 당신이 가지고있는 오브젝트 파일을 사용하지 않으시겠습니까? 나는 링커가 사용되지 않는 함수를 링크하지 않을 것이라고 생각한다. 함수가 파일에 저장되는 방식에 따라 다르지만 압축되어있을 수도 있고 그렇지 않을 수도 있습니다. –

관련 문제