문제

dllentrypoint, funcx 외에 하나의 함수를 내보내는 기본 C DLL이 있습니다. Funcx가 호출자와 통신하는 방법을 찾으려고 노력하고 있습니다. 무효 리턴 유형이 있고 매개 변수가 없기 때문입니다. C# 하네스에서 호출 할 때 AccessViolationException을 얻습니다. 보호 된 메모리를 읽거나 쓰려고 시도했습니다.

클라이언트 애플리케이션이 DLL에서 값을 보내거나 수신하기 위해 버퍼를 할당 할 수있는 직감이 있습니다. 이것이 유효한 직감입니까?

어떤 이유로 든 실행되지 않기 때문에 클라이언트 응용 프로그램을 디버깅 할 수 없으므로 시작하고 프로세스에 첨부 할 수 없습니다. 그러나 Ida Pro에서는 분해 할 수 있지만 가능한 경우 어떻게 시도하고 디버깅 해야하는지 모릅니다.

도움이 되었습니까?

해결책

DLL 자체를 IDA Pro에로드하려고합니다. C#은 기본 통화 스택을 보존하고 DLL이 충돌하는 위치 주변의 코드를 볼 수 있기를 바랍니다.

참고 : 디 컴파일러 플러그인 꽤 굉장합니다.

다른 팁

해당 DLL에 정적 또는 글로벌 기호가있는 경우 모든 커뮤니케이션이 해당 기호를 통해 수행 될 수 있습니다. 이 작업을 수행하는 것처럼 보이는 API 코드가 있습니까?

클라이언트와 서버 모두 해당 버퍼의 기본 주소를 알아야하므로 DLL이 클라이언트 제공 버퍼를 사용하고있을 가능성은 낮습니다. Calloc 또는 Malloc에게 호출 시간에 "선호되는"주소를 요청할 수는 없습니다.

당신은 또한 달리기를 시도 할 수도 있습니다 link /dump /symbols DLL을 가리 키십시오. 그것은 당신에게 당신의 DLL에서 내보낸 기호 목록을 보여줍니다. 행운을 빕니다!

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