2014-07-16 1 views
0

in this post C++ DLL 라이브러리의 메서드를 열거하는 방법을 묻습니다. here 솔루션 P/Invoke dbghelp.dll 라이브러리를 찾았습니다.관리되지 않는 라이브러리의 메서드 이름에서 매개 변수 유형을 가져 옵니까?

내 질문은 :

내가 내 그 메소드를 호출하는 방법을 알고 난 메소드 이름을 가지고 일단 (있는 경우) 나는 그것의 과부하를 검색 할 수 중 Dbghelp.dll를 사용하고 매개 변수 유형 ?

this MSDN urldbghelp.dll lib의 함수 문서이지만 기능 중 하나가 나를 도울 수 있는지는 잘 모르겠습니다.

추 신 : PE에 대한 지식이 매우 낮습니다. 그 이유는 다른 방법을 호출하는 것이지만 가능하지 않은 경우입니다. dbghelp.dll 대체 방법과 단계를 알고 싶습니다. 과제를 완수하십시오.

답변

1

일반적으로 관리되지 않는 라이브러리 (예 : C++에서 컴파일 된 dll)는 사용할 수 없습니다. PE 형식에는이 정보를 리버스 엔지니어링 할 방법이 없습니다 (이것은 dll과 lib가 .h 파일과 함께 배포되는 이유 중 하나입니다). 일부 리버스 엔지니어링 도구는 함수의 프롤로그를 분석하고 매개 변수에 대한 추측과 추론을하지만 그저 추측입니다. C++에서 export 된 함수의 라이브러리에서 아마 mangled 이름 정보를 사용하여이 정보를 검색 할 수 있습니다. VC++ Name Mangling. 그러나 이것은 컴파일러 구현 의존 정보이며 언제든지 변경할 수 있습니다.

사용자 지정 형식의 컨테이너로 PE 형식 만 사용하는 일부 관리 언어 (예 : .NET)의 라이브러리 (PE는 사용자 지정 형식을로드하는 .NET 런타임을 실행하고 호출 함)에 저장된이 정보는 맞춤 형식의 메타 데이터 정보

관련 문제