- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
Date 19/07/02 00:15:13
Name   호타루
Subject   드디어 헥스코드가 말을 하기 시작하다
탐라에 쓰려고 했는데 이야기가 좀 길어져서 여기에 씁니다.

암호학에서 흔히 말하는 개념으로 크립(crib)이라는 게 있습니다. 일종의 힌트죠. 독일군의 에니그마를 풀 때 블레츨리 파크 팀이었나, 거기에서 날씨를 의미하는 독일어 wetter가 이것일 것이다 하고 추정해서 암호체계를 파악한다던가, 혹은 AF가 어디냐 할 때 미드웨이에 물이 부족하다는 신호를 슬쩍 흘려서 AF가 미드웨이임을 확정지은 미국 암호팀의 기술이라던가, 이런 게 다 크립입니다.

일전에 제가 4차로봇대전 에딧을 위해 어셈블리어까지 파고들기 시작했다고 한 적이 있는데요, 사실 구조가 워낙 복잡하고 트래킹하기가 까다로워서 일단 최대한 크립을 이용하는 쪽으로 선회했습니다. (어셈블리어를 공부하기 위한 시도가 헛수고는 아니었던 게, 덕분에 롬 파일의 메모리 구조는 모조리 다 외워버렸습니다.)

사실, 기존에 나온 에디터가 있긴 합니다. 중국인이 만든 것으로 보이는 SFC super robot wars 4 editor를 이용하면 인물 / 로봇 / 무기정보를 손쉽게 에디트할 수 있죠. 물론, 저는 이 정도로는 부족했고 맵의 순서나, 적의 배치나, 레벨링 조정 등등 갖가지 많은 것들을 필요로 했습니다만... 이것들, 특히 로봇 코드는 정말 큰 도움이 되는 크립이었습니다.

이 크립의 효과는 실로 어마어마했어요. 이걸 바탕으로 로봇 이름의 주소를 역추적해서, 바이트에 대응하는 글자(ex. 제4차 슈퍼로봇대전 한글판에서 헥스코드 78은 반각 글자로 쓰여진 '배'에 해당하고, F183은 전각 글자로 쓰여진 '안'에 해당합니다.)를 모조리 다 풀어버릴 수 있었죠. 그리고 그걸 바탕으로 어디서부터 어디까지가 대사 부분인지, 번역이 좀 이상하거나 미처 안 된 텍스트는 어떻게 조정하면 되는지를 깔끔하게 다 해독해 버렸습니다. 물론 원하는 것은 그게 아니었지만 부수적으로 얻은 것도 컸죠.

그리고 이 프로그램에서는 4바이트로 저장할 데이터가 있으면 순서를 바꾼다는 점(ex. 무기 데미지 : 데미지 2000이면 07D0 -> D007로 저장)을 이용해서, 4차로봇대전 13화의 마벨이 탑승하는 보츈을 어디를 손대야 다른 로봇으로 바꿀 수 있는지를 역추적했고(기체코드가 011F라 1F01을 추적하면 될 것이라 예측했고, 그 예상은 제대로 적중했습니다), 그 역추적한 데이터에서 뽑아낸 블록의 위치를 바탕으로 근처 코드를 분석해서 첫 전장에서의 아군 등장인물과 레벨과 탑승로봇의 정보를 추적하고, 같은 기법으로 적의 등장인물과 레벨과 탑승로봇의 정보를 추적하고...

이 모든 게 한 2주 걸린 것 같아요. 오래 걸렸죠. 그나마도 주중에는 운동 갔다와서 뻗어 있는 게 일상이라 주말에 새벽 2시 4시 찍어가며 피터지게 헥스코드와 싸워댔는데, 마침내 조금씩 저의 승리가 보입니다. 아직 플래그 세우는 부분과 플래그에 따른 분기를 흐르게 하는 것은 정말 어셈블리어의 영역이라 함부로 손대기가 까다롭지만, 지금 손대고 있는 것만 해도 충분히 대성공 수준이라고 자신합니다. 소위 말하는 밸런스 패치와 파일럿 및 로봇 교체를 원하는 대로 다 손대버릴 수 있으니까요. 한 마디로, 저는 4차로봇대전에서만큼은 반신의 영역에 도달한 셈이죠.

헥스코드의 주소를 알아내고 입맛대로 데이터를 마구 바꿔내기까지의 과정은 정말로 암호해독을 방불케 합니다. 과거 제1차 세계대전에서 조르주 팽뱅이 피를 토해 가며 풀었던 암호나, 에니그마에 대항하는 봄베 내지는 퍼플 같은... 물론 그 위대한 사람들의 공로에는 발끝에도 못 미치겠지만(적어도 제가 암호를 풀어내는 게 세상을 바꾸고 뭐 그러지는 않으니까요) 스스로 암호를 풀어내고 헥스코드가 속삭이는 것을 듣게 될 때의 그 희열은 정말 짜릿합니다. 오래 전에 1995년산 고전게임 삼국지 적벽대전(그 때는 크립으로 치트 엔진과 세이브 파일을 이용했죠)을 완벽하게 해독해냈을 때의 그 희열을 참으로 오랜만에 느껴봅니다. 덕분에 오늘 늦잠자서 10분 지각했지만 그깟 지각 따위...

덕분에 이제 좀 느긋하게 헥스코드를 바꿔 가며 당분간은 좀 널럴하게 잘 수 있겠습니다. 매일 자나깨나 코드를 분석하기 위한 아이디어를 떠올리느라 딴 생각하는 게 일이었거든요.



4
  • 집중력 ㄷㄷㄷ


목록
번호 제목 이름 날짜 조회 추천
공지 티타임 게시판 이용 규정 2 Toby 15/06/19 30679 6
14648 게임[LOL] 5월 4일 토요일 오늘의 일정 발그레 아이네꼬 24/05/03 13 0
14646 게임[LOL] 5월 3일 금요일 오늘의 일정 1 + 발그레 아이네꼬 24/05/02 132 0
14645 정치취소소송에서의 원고적격의 개념과 시사점 등 5 김비버 24/05/02 395 6
14644 정치경기북도로 인해 이슈가 되는 김포 13 Leeka 24/05/02 823 0
14643 오프모임5월7일에 가락몰에서 한우 같이 드실 파티원 모집합니다. 15 비오는압구정 24/05/02 555 5
14642 음악[팝송] 토리 켈리 새 앨범 "TORI." 김치찌개 24/05/02 94 0
14640 일상/생각합격보다 소통을 목표로 하는 면접을 위하여(2) - 불명확한 환경에서 자신을 알아내기 위해 안전지대를 벗어나고, 이를 꾸며서 표현하는 방법 kaestro 24/05/02 228 2
14639 게임[LOL] 5월 2일 목요일 오늘의 일정 발그레 아이네꼬 24/05/01 135 0
14638 기타드라마 눈물의 여왕 김치찌개 24/05/01 291 0
14637 일상/생각합격보다 소통을 목표로 하는 면접을 위하여(1) - 20번의 면접을 통해 느낀 면접 탐구자의 소회 4 kaestro 24/05/01 416 4
14636 사회"내가 기억하는 중국은 이렇지 않았다" - 중국의 성장과 이민 2 열한시육분 24/04/30 819 0
14635 게임[LOL] 5월 1일 수요일 오늘의 일정 발그레 아이네꼬 24/04/30 180 1
14634 의료/건강환자 곁을 지키는 의료진에게 아끼지 않는다는 합당한 보상 9 꼬앵 24/04/30 679 0
14633 일상/생각그래서 고속도로 1차로는 언제 쓰는게 맞는건데? 31 에디아빠 24/04/30 903 0
14632 일상/생각함께해서 더러웠고 다시는 만나지 말자. 비사금 24/04/29 796 0
14631 방송/연예범죄도시4로 보는, 4월 1일~28일까지의 극장 관객 수 3 Leeka 24/04/29 288 1
14630 방송/연예민희진 - 하이브 사건 관련의 시작이 된 계약서 이야기 6 Leeka 24/04/29 836 1
14629 일상/생각방문을 열자, 가족이 되었습니다 9 kaestro 24/04/29 587 9
14628 꿀팁/강좌지역별 평균 아파트관리비 조회 사이트 무미니 24/04/28 337 2
14626 음악[팝송] 걸 인 레드 새 앨범 "I'M DOING IT AGAIN BABY!" 김치찌개 24/04/27 254 0
14625 의료/건강SOOD 양치법 + 큐라덴 리뷰 7 오레오 24/04/26 665 0
14624 일상/생각5년 전, 그리고 5년 뒤의 나를 상상하며 6 kaestro 24/04/26 550 3
14623 방송/연예요즘 우리나라 조용한 날이 없네요 7 니코니꺼니 24/04/26 1189 0
14622 IT/컴퓨터5년후 2029년의 애플과 구글 1 아침커피 24/04/25 537 0
목록

+ : 최근 2시간내에 달린 댓글
+ : 최근 4시간내에 달린 댓글

댓글