6월, 2025의 게시물 표시

버블슈터 jsf 스프라이트 뷰어 제작

이미지
내가 초등학교 저학년 쯤 즐겨했던 온라인 게임 버블슈터. 이 게임의 추억에 잠겨, 약 4~5일간 초집중해서 버블슈터의 jsf 스프라이트 이미지를 분석하여 출력하는 작은 프로젝트를 진행했다. #pragma pack ( push , 1 ) struct JSFFileHeader {   int8_t Version [ 32 ];   int8_t Description [ 18 ];   int8_t FileName [ 200 ];   uint32_t InfoCount ; }; #pragma pack ( pop ) #pragma pack ( push , 1 ) struct JSFInfoHeader {   uint32_t Unknown11 ;   uint32_t Unknown12 ;   uint32_t Unknown13 ;   uint32_t Unknown14 ;   uint16_t Unknown15 ;   uint32_t Unknown16 ;   uint32_t Unknown17 ;   uint32_t WordCount ;   uint16_t Width ;   uint16_t Height ; }; #pragma pack ( pop ) JSF 파일의 헤더를 완전 분석하진 못했지만, 필요한 정보들은 모두 충족했기 때문에 추출하는 데는 문제가 없었다. [과정 간략 설명] 1. DXWnd 프로그램으로 클라이언트를 창모드로 실행 2. 치트엔진 실행, 메모리 스캔 및 어셈블리 레벨 디버깅 3. HxD 프로그램 실행 시 클라이언트가 종료되므로, 대신 ImHex 프로그램을 이용하여 jsf 파일 바이너리를 분석 4. C++ 헤더 작성 및 jsf를 읽어서 단일의 스프라이트 파일로 변환 5. Gosu + ruby를 사용하여 변환된 파일을 읽어들인 후, RGB565 -> RGB888 색상 변환하고 한 픽셀씩 점을 찍음  ...