Windows에서 DLL에 포함된 함수 목록 확인하는 방법
😢상황
- 외부에서 제공받은
.dll
파일에 어떤 함수가 포함되어 있는지 알고 싶음 - 특히 내보낸(exported) 함수 목록이나, .NET 기반 DLL의 내부 구조를 파악하려는 경우
- Visual Studio 또는 커맨드라인 도구, 리버싱 툴 등을 이용할 수 있음
🛠️해결법
방법 1: dumpbin
(Visual Studio 내장 도구)
-
Developer Command Prompt for VS 2022 실행
(시작 메뉴 → “x64 Native Tools Command Prompt for VS 2022” 등) -
아래 명령어 실행:
dumpbin /exports yourfile.dll
📘 출력 예시:
ordinal hint RVA name
1 0 00001000 MyFunctionA
2 1 00001030 MyFunctionB
🔸 단,
__declspec(dllexport)
로 명시적으로 내보낸 함수만 보임
방법 2: Dependency Walker
(GUI 기반 도구)
- 다운로드: http://www.dependencywalker.com/
- 설치 후 DLL 파일 열면, 내보낸 함수(Exports)가 트리 구조로 나타남
💡 다소 오래된 도구이므로 최신 DLL에서 오작동 가능성 존재
방법 3: Ghidra
또는 IDA Free
(역공학용 분석 툴)
- Export 심볼이 없는 경우, 바이너리를 역공학적으로 분석
- 함수 디컴파일, 코드 흐름 확인 가능
고급 분석이 필요하거나, 심볼이 제거된 경우에 유용
보너스: PowerShell + .NET 리플렉션 (관리형 DLL 전용)
[Reflection.Assembly]::LoadFile("C:\Path\To\your.dll").GetTypes() |
ForEach-Object { $_.GetMethods() | ForEach-Object { "$($_.DeclaringType.FullName)::$($_.Name)" } }
💡 .NET 기반 DLL만 가능 (.NET Reflection API 사용)
✅정리: 왜 이게 효과 있었는가?
- DLL 분석은 외부 모듈의 인터페이스를 이해하고, 활용 가능성을 검토하는 데 필수
dumpbin
은 빠르고 간단한 CLI 기반 도구Dependency Walker
는 직관적인 GUIGhidra
,IDA Free
는 고급 분석 가능- .NET DLL은 PowerShell 리플렉션으로 내부 메서드 확인 가능
👉 사용 목적에 따라 도구를 선택하여 DLL에 어떤 함수가 포함되어 있는지 빠르게 파악할 수 있습니다!