<2단계> ezWings.exe 관련 DLL 파일 분석하기 - Dependency Walker 툴 이용1. Dependency Walker를 실행한다.File - Open을 클릭해서 해당 프로그램의 실행파일을 선택하여 연다. 해당 툴은 WECOM 사이트(http://wecom.dstcorp. com)의 XP Embedded 자료실에 있다.2. 파일을 열면 ezWings.exe에 관련된 모든 DLL 파일들과 함수들이 트리 형식으로 보인다.트리 구조로 나타난 목록은 ezWings3.exe를 실행할 때 필요한 주요 정보를 나타낸다. 트리의 서브 디렉토리를 모두 닫아서 첫 번째 레벨만 나타나게 한다.3. ezWings.exe 가 직접 호출하는 DLL 파일은 총 13개 있다.- KERNEL32.DLL, USER32.DLL, ADVAPI32.DLL, OLEAUT32.DLL, VERSION.DLL, GDI32.DLL, OLE32 .DLL, COMCTL32.DLL, IMM32.DLL, SEHLL32.DLL, COMDLG32.DLL, GNSEZDLL.DLL, WINMM.DLL4. Component Database Manager를 이용하여 DLL이 속해 있는 컴포넌트를 검색해야 한다.KERNEL32.DLL, USER32.DLL은 모든 이미지의 일부이기 때문에 이 두 가지는 검색을 생략해도 된다. 나머지 DLL 파일들이 포함된 컴포넌트를 검색한다.5. Component Database Manager 의 Component 탭을 클릭한 후 하단의 Filter를 누른다.6. Filter Manager의 New를 눌러 새로운 검색 조건을 입력한다.7. Filter Editor 창에서 Name 부분에 찾고자 하는 DLL 파일명을 입력한 후 Filter rules 항목은 Component contains the following file:[filelist]를 선택한다.8. 선택 한 다음 Add Rule을 눌러 Filter 항목에 추가한 다음 추가한 항목을 더블클릭을 한다.9. Filter Rule에 찾고자 하는 DLL 파일명을 다시 한 번 적고 OK를 누른다.10. 필터를 이용하여 앞서 검색된 모든 DLL 파일의 관련 컴포넌트를 검색한다.KERNEL32.DLL 파일 관련 컴포넌트를 찾은 결과다. 검색된 컴포넌트 목록 중에서 가장 최신 버전과 지원가능 컴포넌트를 선택한다.11. DLL 관련 Component 검색 결과이다.- KERNEL32.DLL : Windows API - Kernel- USER32.DLL : Windows API - User- ADVAPI32.DLL : Windows API - Advanced- OLEAUT32.DLL : Primitive: Oleaut32- VERSION.DLL : Primitive: Version- GDI32.DLL : Windows API - GDI- OLE32.DLL : Primitive: Ole32- COMCTL32.DLL : Common Control Libraries Version XP SP2- IMM32.DLL : Primitive: Imm32- SHELL32.DLL : Primitive: Shell32- COMDLG32.DLL : Common File Dialogs- GNSEZDLL.DLL : ezWings 프로그램 폴더에 있는 파일- WINMM.DLL : Primitive: Winmm<3단계> ezWings Component 만들기- Component Designer 툴 이용1. Component Designer를 실행해서 File - New를 선택한다.2. ezWings3 폴더 밑에 [darby]060825 ezWings3.sld 라는 이름으로 컴포넌트 파일을 저장한다.폴더명과 파일명은 사용자 임의대로 정하면 된다.3. Component와 Repository를 하나의 Object로 관리할 수 있게 해주는 Package를 생성한다.왼쪽 창의 Packages를 선택하고 마우스 오른쪽 클릭을 해서 Add Package를 선택한다.오른쪽 창의 Name에 [darby]060825 ezWings3_pac이라고 기입한다.4. 필요한 파일을 OS 이미지 빌드 시에 복사하기 위해 Repos- itory를 생성한다.왼쪽 창의 Repositories를 선택하고 오른쪽 클릭하고 Add Repository를 선택한다.오른쪽 창의 Name에 [darby]060825 ezWings3_rep이라고 기입한다.5. 오른쪽 창의 Source Path의 Brower를 눌러 이전에 변경된 파일들을 복사해둔 ezWings3files라는 폴더를 지정해주면 된다.files 라는 폴더가 지정된 화면이다.6. [darby]060825 ezWings3_rep의 Group Membership을 생성한다.7. 방금 전에 생성했던 [darby]060825 exWings3_pac를 선택한다.8. 이제 Component를 만들기 위해 왼쪽 창의 Component를 선택한 다음 오른쪽 클릭을 하고 Add Component를 선택한다.9. 생성이 되면 오른쪽 창의 Name 부분에 [darby]060825 ezWings3라고 기입한다.10. 오른쪽 창의 Repository의 Repositories를 클릭한 다음 방금 전에 생성했던 Repository인 [darby]060825 ezWings3_ rep를 선택한다.11. 오른쪽 창의 하단에 Component instances are editable을 체크한다.12. [darby]060825 ezWings3 컴포넌트의 Group Member- ships을 선택하고 마우스 오른쪽 클릭을 해서 Add Group Membership을 눌러 그룹 멤버십을 추가한다.이 설정은 Targer Designer의 컴포넌트 브라우저에서 컴포넌트 위치를 찾을 수 있게 해주는 역할이다.Category -> Software -> Applications -> Other를 선택한다.지금까지의 설정한 부분이 기본적인 것이다. 이제 앞으로 설정할 부분이 이번 실습의 가장 중요한 부분이므로 천천히 읽고 따라 하길 바란다.13. 만든 컴포넌트 파일인 [darby]060825 ezWings3.sld의 Files를 선택하고 오른쪽 클릭을 해서 Add - Files and Folder를 선택한다.쪾 File : 파일을 하나씩 선택하여 추가할 때 사용쪾 Multiple Files : 여러 개의 파일을 선택하여 추가할 때 사용쪾 Files in Folder : 파일과 폴더 구조 그대로 추가할 때 사용여기에서는 작업을 손쉽게 하기 위해서 ezWings3가 설치된 폴더구조 그대로 사용하기 위해서 Files in Folder를 사용하기로 하겠다.14. ezWings 프로그램이 설치된 폴더를 선택한다.C:Program FilesCITUSezWings3 폴더를 지정해 준다.폴더를 지정하면 추가할 리소스 개수 확인 창이 나오는데 예를 선택을 한다.리소스를 모두 추가하였으면 Close를 눌러 작업을 마친다.15. C:Program FilesCITUSezWings3 폴더 안의 모든 파일들이 추가가 된 화면이다.프로그램이 설치된 폴더 구조 그대로 추가가 된 것을 확인할 수 있을 것이다.16. 지금 작업은 C:Program FilesCITUSezWings3 폴더 안에 있는 파일들만 추가한 작업이다. 여기에 추가적으로 작업을 해야 할 부분은 프로그램이 설치된 폴더인 C:Program FilesCITUSezWings3 이외의 폴더에 파일들이 설치가 되었는지를 반드시 체크해야 한다. 이것을 체크하기 위해 <1단계>에서 Component Helper로 파일 분석 작업을 수행한 것이다. 이제야 왜 파일 및 Registry 분석 작업을 먼저 수행했는지에 대한 궁금증이 풀렸을 것이다.17. ezWings3와 관련된 파일들이 다른 폴더에도 설치가 됐는지 알아보기 위해서 파일분석 결과가 저장되어 있는 폴더로 이동하여 텍스트 파일을 연다.ComponentHelperezWing3temp 폴더에 가서 Difflist.txt 파일을 실행시킨다.파일 목록을 확인해 보면 C:Program FilesCITUS ezWings3 폴더 이외의 폴더인 C:WindowsSystem32 및 C: WindowsPrefetch, C:WindowsInstaller 등의 폴더에 추가 작업에 필요한 파일들이 존재하는 것을 확인할 수 있다. 파일 목록 중에 불필요한 항목들은 삭제해서 작업이 용이하도록 한다.18. 목록을 다 확인했으면 이제 Component 의 Files에 파일 추가 작업을 수행한다.c:Program FilesCITUSezWings3 폴더 이외의 파일들만 작업을 하면 된다.19. 만든 컴포넌트의 Files를 선택한 다음 오른쪽 클릭을 해서 Add - Multiple Files를 선택해서 이전에 작업했던 것과 동일하게 파일들을 추가한다.추가 작업 시 파일들을 직접 저장되어 있는 해당 폴더로 가서 추가해도 되고, 아니면 파일 분석 작업 시 복사해놓은 ezWings3 files 라는 폴더로 가서 추가해도 된다. 이번 실습에서는 ezWings3files 라는 폴더에서 파일을 추가했다.20. 일단 파일을 모두 추가하였으면 빠진 파일이 없나 다시 한 번 확인을 해야 한다.c:Program FilesCITUSezWings3temp 폴더 안의 DiffList.txt 파일, c:Program FilesCITUSezWings3 _exctemp 폴더 안의 DiffList.txt 파일을 확인해 보고 중복된 파일들이 있을 경우 하나만 설정해주면 된다.21. 관련된 파일들은 모두 추가하였으므로 각 파일에 대한 세부 설정을 해야 한다.추가한 파일들이 많으면 많을수록 그만큼 직접 작업해야 할 것이 많다. 이 부분에서 꽤 많은 시간이 소요되니 지겹더라도 파일 하나하나씩 틀리지 않게 설정을 해줘야 한다. Files의 오른쪽 창에 보면 폴더들이 추가가 되어있는데 불필요한 폴더들이므로 폴더들은 모두 다 삭제해도 된다.22. 차례차례 맨 처음파일부터 선택한 다음 오른쪽 버튼을 눌러 Properties 선택한다.23. 창이 하나 새로 뜨면 Source name에 원본 파일의 이름을 적어준다. 그리고 Destination 경로를 설정해줘야 한다.경로 설정은 DiffList.txt 파일을 보고 Build 후 해당파일의 위치를 지정해주면 된다. 특별한 경우가 아닌 이상, 경로는 변경하지 않는다. 파일이 많을 경우 변경하다 보면 틀리게 되거나 누락될 가망성이 크고 또 그만큼 작업시간이 오래 걸리기 때문이다.여기에서 한 가지 주의할 점은 전에 말한 것처럼 중복된 파일들은 자동적으로 이름이 바뀌어서 저장되었으므로 그것을 유념해서 파일 이름을 적어줘야 한다.- bg_1.bmp, bg_2.bmp, bg_3.bmp : SKIN01 폴더 파일- bg_1.bmp.0, bg_2.bmp.0, bg_3.bmp.0 : SKIN02 폴더 파일- bg_1.bmp.1, bg_2.bmp.1, bg_3.bmp.1 : SKIN03 폴더 파일- bg_1.bmp.2, bg_2.bmp.2, bg_3.bmp.2 : SKIN04 폴더 파일- bg_1.bmp.3, bg_2.bmp.3, bg_3.bmp.3 : SKIN05 폴더 파일24. C:Program FilesCITUSezWings3 폴더 이외의 파일들을 설정할 때는 Destination 설정을 유념해야 한다. 즉, 나중에 C:Program FilesCITUSezWings3 폴더 이외의 폴더에 있는 파일들을 추가한 것에 대한 설정을 유념해야 한다.DiffList.txt 파일에 나와 있는 경로를 설정해 주면 된다. 이 실습에서는 ezWings3files 안의 파일들을 추가했기 때문에 Destination 경로를 다시 설정해줘야 하는데 처음부터 직접 해당 폴더에 가서 파일을 추가했다면 이 부분은 넘어가도 된다. 사용자들이 각자 편리한 방법을 선택해서 설정하면 된다.예를 들어 NewShortcut3.exe 파일의 Properties를 변경해 보겠다. DiffList.txt를 열어 추가 파일의 경로를 확인한다.Source name 및 Destination 설정을 한다.각각의 모든 파일의 Properties 설정을 마친 화면이다.25. 파일 추가 작업을 마치고 이제는 Registry 값을 추가하는 작업을 진행하도록 하겠다.Component Helper 로 작업한 폴더에 가보면 분석한 Registry 파일이 있다. ezWing3_reg.reg 파일과 ezWing3_ exc_reg 파일 두 개를 참조하면 된다.26. Registry 파일을 추가하는 것이 파일을 추가하는 작업보다 비교적 간단하게 할 수 있다.먼저 두 개의 Registry 파일을 Component Designer를 이용하여 Import를 시킨다. Component Designer의 File - Import 를 눌러 두 개의 파일을 모두 Import 한다. 파일 형식은 Registry files로 변경하고 저장된 경로를 찾아가서 파일을 선택한다.start를 눌러 Import 작업을 진행시키고 Close를 눌러 Import 작업을 마친다.27. 두 개의 Registry를 Import 한 결과 화면이다.두 개 Registry 파일도 일반 컴포넌트와 동일한 구조로 되어있는 것을 볼 수 있다.28. 먼저 ezWing3_reg 컴포넌트의 Registry Data를 선택한다.분석한 텍스트 문서에 있던 키 값들이 모두 나와 있는 화면을 볼 수 있다.29. 오른쪽 창에서 모든 키 값을 선택한 다음 오른쪽 버튼을 눌러 모두 Copy를 한다.30. 모두 Copy 했으면 다시 [darby]060825 ezWings3 컴포넌트의 Registry Data를 선택한다.31. Registry Data의 오른쪽 창에서 마우스 오른쪽을 클릭해서 복사한 값들을 붙여넣기 한다.모든 키 값들이 그대로 컴포넌트의 Registry Data 항목에 복사가 된다.32. 위와 같은 방법으로 또 다른 하나의 Registry 파일인 ezWing3_exc_reg 컴포넌트의 Registry Data 파일도 복사해서 붙여넣기를 한다.다음 화면은 두 개 파일의 모든 Registry Data 값들을 복사하여 컴포넌트 파일에 붙여넣기를 한 화면이다. 불필요한 Registry 값인 경우 마우스 오른쪽을 클릭해서 Disable을 해주면 된다.33. 이제 마지막 작업인 DLL 관련 컴포넌트 추가 작업이다.[darby]060825 ezWings3 파일의 Component or Group Dependency를 선택한다. 그 다음 오른쪽 버튼을 클릭한 다음 Add - Component Dependency를 선택한다.34. Add Component Denpendency 창이 나오면 전에 Component Database Manager의 Filter로 검색해 뒀던 각 DLL 파일에 대한 컴포넌트 파일들을 찾아서 추가를 해준다.하나 검색하고 해당 컴포넌트를 더블클릭 하면 목록에 추가가 되므로 창을 닫지 않고 계속해서 검색한 다음 더블클릭으로 추가를 하면 된다.- KERNEL32.DLL : Windows API - Kernel- USER32.DLL : Windows API - User- ADVAPI32.DLL : Windows API - Advanced- OLEAUT32.DLL : Primitive: Oleaut32- VERSION.DLL : Primitive: Version- GDI32.DLL : Windows API - GDI- OLE32.DLL : Primitive: Ole32- COMCTL32.DLL : Common Control Libraries Version XP SP2- IMM32.DLL : Primitive: Imm32- SHELL32.DLL : Primitive: Shell32- COMDLG32.DLL : Common File Dialogs- GNSEZDLL.DLL : ezWings 프로그램 폴더에 있는 파일(추가 안 해도 된다.)- WINMM.DLL : Primitive: Winmm다음 그림은 DLL 관련 컴포넌트들을 모두 추가한 화면이다.35. 이제 Component Designer를 이용하여 ezWings3 컴포넌트 파일 만드는 작업을 마쳤다.[darby]060825 ezWings3.sld 파일을 저장한다.다음 달에는 <4단계> Component Database Manager를 이용해 Database에 import하는 방법부터 마지막 <7단계>인 In Car Device OS 구동과 프로그램 실행까지 구현해 볼 것이다.쪹 연재순서1. 실습개요 In Car 디바이스 개발배경 및 문서화 개발작업 이슈2. 작업 전 준비사항 장비 준비사항 작업 파일 준비사항 용어 정리3. 작업 진행과정4. <1단계> ezWings3 프로그램 분석하기 Component Helper 이용5. <2단계> ezWings3 관련 DLL 파일 분석하기 Dependency Walker 이용6. <3단계> ezWings3 Component 만들기 Component Designer 이용7. <4단계> Database에 Import 하기 Component Database Manager 이용8. <5단계> ezWings3 Configuration 파일 만들기 Target Designer 이용9. <6단계> EWF, HORM 기능 구현하기10. <7단계> In Car Device OS 구동 및 프로그램 실행하기
회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지