문제

AN의 매개 변수를 어떻게 찾을 수 있습니까? 문서화되지 않은 DLL 기능?

나는 인터넷을 통해 검색하고 한 가지 방법을 찾게되었습니다. 그것은 장식 된 기능과 관련이 있습니다. 그러나 나는 그것을 얻는 방법을 찾을 수 없습니다.

모든 도움이 감사하겠습니다.

도움이 되었습니까?

해결책

Paul이 지적했듯이 Ida Pro (또는 무료 버전)와 같은 것을 사용하여 응용 프로그램을 분해해야합니다.

좋은 입문 자원은 Wikibook입니다. x86 분해. 구체적으로, 섹션을 살펴보십시오 기능 및 스택 프레임. 기능 매개 변수 추론 표준 유형의 몇 가지 매개 변수를 취하는 간단한 기능에 대해 간단 할 수 있습니다.

아마도 이런 종류의 일을 시작하는 가장 좋은 방법은 작은 테스트 DLL을 만들고, 알려진 매개 변수로 몇 가지 기능을 만들고, DLL을 분해하여 패턴을 확인하는 것입니다. 자신의 기능 (소스 코드가 있고 전체 서명을 아는 것)에서 분해를 배우지 않고 타사 물건을 분해하는 것이 아닙니다.

다른 팁

나는 상당히 심층적 인 대답을했다 여기, Reactos는 다시 보이는 가장 좋은 방법입니다. 여러분 여기에 약간의 기지가 있습니다.

나는 할 것이다 강력하게 낙담합니다 시스템 DLL을 분해하려는 시도.

많이 더 모험적인 (그리고 나는 사물의 외모에서 멀리 떨어진 논의를 믿지 않는다), 기술은 PDB의 내용을 열거하는 것입니다.

PDB 파일은 아시다시피 디버그 기호이지만, 대기업 방지 법원 사건의 조치로 인해 많은 양의 문서화되지 않은 정보를 공개하기 위해 Microsoft가 필요합니다.

Windows API의 대량 금액에 대한 완전히 정확하고 사용 가능하며 업데이트 된 정보는 다음과 같습니다. PDB 파일을 통해 문서화되었습니다. 부름 규칙, 인수 수, 심지어 인수 유형과 이름은 그 문서화됩니다 (그러나 코스 사용에 관한 세부 사항은 아닙니다 :).

DIA SDK를 검토, DIA2DUMP는 Visual Studio와 함께 배포 된 좋은 예입니다. 더 조사하기 위해 더 조사하기 위해서는 부정확 한 기능을위한 솔루션을 제공하고 질문에 구체적으로 말할 수 있습니다.

또한 kernel32는 미분식 symbolname을 제공하므로 디버그 SDK 라이브러리에 링크하지 않으려면 사용할 수 있습니다.

이를 수행하는 유일한 방법은 기능을 분해하고 레지스터와 스택을 사용하는 방법을 확인하는 것입니다. Ida Pro는이 작업을 수행하는 가장 좋은 도구이지만 사소한 것은 아닙니다.

com dll입니까? com dll 인 경우 등록하고 OLE보기를 사용하여 인터라페이스와 매개 변수를 알 수 있습니다.

우선, 다운로드 의존성 워커 그리고 당신의 dll을 엽니 다. 내보내기 및 수입 기호가 표시됩니다. 기능 이름이 _myFunction- "C"스타일 (장식되지 않음)처럼 보이고 그와 관련이 너무 많지 않은 경우 (이전에 말했듯이 분해 될 수 있음).

더 비슷한 경우? 여기

당신이 가진 유일한 정보가 미개화 된 함수 이름이라면, 불행히도 그 기능 매개 변수를 그 단독으로 추론 할 수는 없습니다.

어셈블리에 능숙하다면 기능의 기계 코드를 분해하고 리버스 엔지니어링 할 수 있습니다. 그러나 그것은 가장 단순한 기능을 제외한 모든 것에 대해 합리적으로 어렵습니다.

나는 Windows가 사용하는 PE 형식에 정말 익숙하지 않지만이 작업을 수행하는 쉬운 방법은 없다고 확신합니다. 기호 테이블이 제거되지 않은 경우 일부 정보를 찾을 수 있지만 (Windows가 PE에서 정보를 디버깅하는 방법은 확실하지 않음) 파라미터 유형에 도움이되지 않습니다. 가장 좋은 방법은 DLL을 디버거에로드하고 실험하는 것입니다 ... 스택 프레임의 원시 메모리를 모니터링하고 다양한 가변 유형을 보내는 등입니다.

PE 파일에서 디버깅 정보에 대한 좋은 리소스를 찾더라도 개인 기능에 대한 정보는 거의 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top