Microsoft MVP성태의 닷넷 이야기
글쓴 사람
홈페이지
첨부 파일
 

windbg - 덤프 파일로부터 추출한 DLL을 참조하는 방법

예전에 windbg에서 덤프 파일로부터 .NET DLL을 추출하는 방법을 설명했습니다.

windbg - 풀 덤프 파일로부터 .NET DLL을 추출/저장하는 방법
; https://www.sysnet.pe.kr/2/0/10943

만약 추출한 DLL이 참조가 잘 된다면 그냥 사용하시면 됩니다. 하지만, 다음의 글에 쓴 내용에 따라,

windbg - 덤프 파일로부터 추출한 DLL 참조 시 "Resolved file has a bad image, no metadata, or is otherwise inaccessible." 빌드 오류
; https://www.sysnet.pe.kr/2/0/11638

오류가 발생한다면, 이제 약간의 후처리를 거쳐야 합니다. 그러니까, "Resolved file has a bad image, no metadata, or is otherwise inaccessible." 상태이므로 참조를 할 수 없다는 것이니 다시 적당한 포맷으로 복원시켜 주면 되는 것입니다. 그리고 이런 작업을 자동으로 해주는 도구가 바로 dnspy.exe와 같은 역어셈블/어셈블 도구입니다. 지난번에도 한번 잘 써먹은 적이 있었죠? ^^

windbg - 풀 덤프 파일로부터 강력한 이름의 어셈블리 추출 후 사용하는 방법
; https://www.sysnet.pe.kr/2/0/11261

방법은 간단합니다. dnspy.exe에서 windbg의 savemodule로 추출한 DLL을 열고, 단순히 "File" / "Save Module..." 메뉴로 다시 저장하면 됩니다. 그럼, dnspy는 유효한 닷넷 파일 포맷으로 저장해 주고 이제부터는 정상적으로 다른 프로젝트에서 참조해 사용할 수 있습니다.




경우에 따라 dnspy.exe의 "Save Module..." 메뉴로 저장 시 다음과 같은 오류가 발생할 수 있습니다.

Writing C:\temp\bin\test.dll...
VTable method is null
All files written to disk.

문제가 있어 보여도 비주얼 스튜디오의 DLL 참조까지는 잘 됩니다. 하지만 실행 시 "Access violation" 예외가 발생하며 비정상 종료해 버립니다. 경험상, "unmanaged code"가 포함된 닷넷 DLL을 windbg의 savemodule로 저장할 때 온전히 복원이 안 되는 것 같습니다. 아쉽지만, 이런 경우는 포기하는 수밖에 없습니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]





[최초 등록일: ]
[최종 수정일: 8/2/2018 ]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer@outlook.com

비밀번호

댓글 쓴 사람
 




... 16  17  18  19  20  [21]  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
11625정성태7/24/20181681Math: 49. GeoGebra 기하 (25) - 타원의 중심점 찾기파일 다운로드1
11624정성태7/24/20181914개발 환경 구성: 389. C# - 재현 가능한 빌드(reproducible builds) == Deterministic builds [4]
11623정성태7/24/20182323Math: 48. C# - 가우시안 함수의 이산형(discrete) 커널 값 생성파일 다운로드1
11622정성태7/23/20182728개발 환경 구성: 388. Windows 환경에서 Octave 패키지 설치하는 방법
11621정성태7/23/20182091VC++: 127. 멤버 함수에 대한 포인터를 외부에서 호출하는 방법파일 다운로드1
11620정성태8/3/20183183Graphics: 11. Unity로 실습하는 Shader (7) - Blur (평균값, 가우스, 중간값) 필터파일 다운로드1
11619정성태7/21/20182310Graphics: 10. Unity로 실습하는 Shader (6) - Mosaic Shading
11618정성태7/20/20182243개발 환경 구성: 387. 삼성 오디세이(Odyssey) 노트북의 운영체제를 새로 설치하는 방법
11617정성태7/20/20181986Team Foundation Server: 50. TFS 소스 코드 관리 기능 (5) - "Rollback", "Rollback Entire Changeset"
11616정성태7/17/20182025Graphics: 9. Unity Shader - 전역 변수의 초기화
11615정성태7/17/20182563.NET Framework: 788. RawInput을 이용한 키보드/마우스 입력 모니터링파일 다운로드1
11614정성태7/20/20183648Graphics: 8. Unity Shader - Texture의 UV 좌표에 대응하는 Pixel 좌표
11613정성태7/17/20182357Graphics: 7. Unity로 실습하는 Shader (5) - Flat Shading
11612정성태7/16/20181874Windows: 148. Windows - Raw Input의 Top level collection 의미
11611정성태8/3/20182680Graphics: 6. Unity로 실습하는 Shader (4) - 퐁 셰이딩(phong shading)
11610정성태8/3/20181884Graphics: 5. Unity로 실습하는 Shader (3) - 고로 셰이딩(gouraud shading) + 퐁 모델(Phong model) + Texture
11609정성태8/3/20182555Graphics: 4. Unity로 실습하는 Shader (2) - 고로 셰이딩(gouraud shading) + 퐁 모델(Phong model)
11608정성태7/17/20184208Graphics: 3. Unity로 실습하는 Shader (1) - 컬러 반전 및 상하/좌우 뒤집기
11607정성태8/30/20184180Graphics: 2. Unity로 실습하는 Shader
11606정성태8/14/20184050사물인터넷: 19. PC에 연결해 동작하는 자신만의 USB 장치 만들어 보기파일 다운로드1
11605정성태8/9/20182374사물인터넷: 18. New NodeMcu v3 아두이노 호환 보드의 내장 LED 및 입력 핀 사용법파일 다운로드1
11604정성태7/12/20181956Math: 47. GeoGebra 기하 (24) - 정다각형파일 다운로드1
11603정성태7/12/20181794Math: 46. GeoGebra 기하 (23) - sqrt(n) 제곱근파일 다운로드1
11602정성태7/11/20181852Math: 45. GeoGebra 기하 (22) - 반전기하학의 원에 관한 반사변환파일 다운로드1
11601정성태7/11/20182039Math: 44. GeoGebra 기하 (21) - 반전기하학의 직선 및 원에 관한 반사변환파일 다운로드1
11600정성태7/10/20182237Math: 43. GeoGebra 기하 (20) - 세 점을 지나는 원파일 다운로드1
... 16  17  18  19  20  [21]  22  23  24  25  26  27  28  29  30  ...