-
|
안녕하세요. 로우레벨 시스템과 역공학을 공부하고 있는 고등학교 2학년 학생입니다. 현재 교내 컴퓨터 동아리 프로젝트로 C++ 기반의 네이티브 HWP/HWPX 파서 및 렌더 엔진을 기획하고 있습니다. 법적인 문제를 피하기 위해 WINE 프로젝트의 '클린룸 리버스 엔지니어링' 방식을 도입하기로 했고, 현재 바이너리 분석팀과 실제 코드 구현팀을 완전히 분리하는 아키텍처와 분석 파이프라인 설계만 막 끝낸 시작 단계입니다. 본격적인 타겟 분석을 준비하던 중 개발자님의 rhwp 프로젝트를 보게 되었습니다. 클린룸 방식 없이 공식 문서와 수많은 테스트만으로 이미 완성에 가까운 파서를 만들어내신 것을 보고 정말 대단하다고 생각했고, 동아리원들과 함께 많이 배우고 있습니다. 특히 최근 Discussion에 남겨주신 hp:lineseg 관련 글을 보며 깊이 공감했습니다. 개발자님께서 짚어주신 것처럼, 공식 문서에는 한컴 원본 엔진이 실제로 사용하는 내부 로직이나 예외 처리(보정 로직)가 빠져 있는 경우가 많습니다. 그래서 저희는 공식 문서의 빈칸을 추측하기보다는, 분석팀이 한컴 바이너리(소스 파일이 없는 SDK 바이너리)를 직접 리버싱해서 그 숨겨진 실제 동작 방식과 보정 로직들을 찾아내어 순수한 텍스트 명세서로 정리하는 것이 더 빠르고 정확할 것이라고 판단했습니다. 저희는 이 구조를 바탕으로 C++ 구현을 막 시작하려는 참인데, 문득 저희 분석팀이 앞으로 찾아내게 될 '공식 문서에 없는 숨겨진 처리 방식'이나 '역공학 기반의 명세 자료'가 혹시 개발자님의 프로젝트를 개선하는 데도 필요하실지 먼저 여쭙고 싶습니다. 만약 이러한 실제 동작 데이터가 rhwp의 엣지 케이스를 처리하거나 구조적 한계를 푸는 데 도움이 될 것 같다면, 앞으로 저희가 분석한 결과를 어떤 방식(Issue, 공유 문서 등)으로 전달해 드리는 것이 가장 편하실지 편하게 말씀해 주시면 감사하겠습니다. 훌륭한 오픈소스 프로젝트를 공개해 주셔서 정말 감사합니다. 답변 기다리겠습니다! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
|
이 프로젝트의 기여자 분중에서 다음과 같은 조언을 주셨습니다. 먼저 확인 해보세요. 제101조의4(프로그램코드역분석) ① 정당한 권한에 의하여 프로그램을 이용하는 자 또는 그의 허락을 받은 자는 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우에는 해당 프로그램의 호환에 필요한 부분에 한하여 프로그램의 저작재산권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.
|
Beta Was this translation helpful? Give feedback.
rhwp 라는 프로젝트 자체가 소스코드는 단지 결과물일 뿐이고 진정한 가치는 문서를 통한 지식 증류입니다. 말씀 하신 것처럼 진행하시고 문서로 기여하시면 저도 기쁜 마음으로 사용하도록 하겠습니다.