ㅇ의 휴식터 (17)
나는 스스로를 채찍질하며 언제나 발전하는 것을 추구한다. 그리고 내 사람도 그렇게 하길 원한다. mbti 유형 중 intj 성격과 딱 들어맞는데, 검사 결과가 너무 나와 같아서 세상에는 나와 유사한 사람도 있다는 것에 대해 놀랍게 생각했었다. 지병으로 남들 앞에 설 때 가면을 쓰는 것을 제외하면 지금까지 평생을 이렇게 살아왔던 것 같다. 이 성격이 나를 지금의 나로 만들어 줬기에 나는 이런 내가 싫으면서도 인간으로 만들어 준 것에 대해 고맙게 생각하기도 한다. 하지만 사람은 언제나 힘낼 수만은 없다. 때로는 좌절도 겪고 이별하기도 하며 깊은 바닷속으로 빠지기도 한다. 과거의 나는 이러한 사람들을 이해할 수 없었지만, 이제는 이러한 사람이 있음을 인정해야 함을 안다. 길을 잃어버린 이를 마냥 몰아세우기보다..
삶을 살아갈 때 어떤 생각을 하면서 나아가야 할까? 나는 본래 정적이고 배우길 좋아하고 신중한 사람이다. 하지만 내게 주어진 지병은 다른 사람들 앞에서 나를 바보로 만들고 있다. 고통 속에서 약간의 집중력으로 겨우 사람들 앞에 서고 있으니 지금까지 제정신을 유지하는 내가 대견하기도 하다. 그래서 나는 어느 날부터 생각을 깊게 하지 않기로 했었다. 너무 깊은 생각은 나를 깊은 바다로 끌어내렸으니까. 나는 빛을 잃은 상황에서도 나름대로 최선을 다했고, 나아가려 노력했고, 괴로움에 지지 않으려고 애썼다. 하지만 서서히 지쳐가고 나아갈 길이 이제는 보이지 않는듯하다. 그래서 다시 생각을 깊게 하기로 했다. 고통 속에서도 사람은 나아가야 한다. 이제 무엇을 중요한 가치로 여겨야 할까? 삶을 어떻게 헤쳐나가야 할..
요즘 세상을 가만히 생각해 보면 광기의 시대에 도래한 것 같다. 예전에는 사람들이 꿈이란 것 혹은 더 나은 내일을 향해 나아갔다면 최근 주변 사람들은 그러한 것들과는 거리가 멀고, 대부분 주식, 코인, 집, 혐오와 불편의 시대에 살아가고 있다. 무엇이 나와 세상을 변하게 만들었을까? 스마트폰의 등장으로 인해 즉각적인 쾌락의 매체를 찾았기 때문일까? 그게 아니라면 SNS나 연예인이 잘 살고 있는 방송을 통해 상대적인 박탈감을 느꼈기 때문일까? 무엇이 문제이든 낭만이 있던 과거가 그립다. 꿈을 찾아 발전하는 사람의 모습만큼 아름다운 것은 없을 테니까. 인간으로 태어나 바람과도 같은 작은 것들에 연연하는 것 보다는 좀 더 큰 파도를 향해 나아가고 싶다. 그리고 그런 별처럼 빛나는 사람을 만나고 싶다.
아트록스의 파라미터 파일은 SPM에서 LHA 압축을 풀면 나오는 맵데이터(MAPDATA) 파일에서 얻을 수 있다. 원래 아트록스에서 파라미터는 유닛의 능력치를 의미하지만, 아트록스의 맵에디터에서 보이듯 능력치, 업그레이드, 특수능력의 한 쌍으로 이루어졌다고도 볼 수 있다. 그래서 이 포스트에서도 업그레이드와 특수능력의 분석까지 다루게 되었다. 먼저, 맵데이터 파일에서 파라미터 구조는 다음과 같다. 플레이어1 유닛 능력치플레이어1 업그레이드플레이어1 특수능력...플레이어8 유닛 능력치플레이어8 업그레이드플레이어8 특수능력 파라미터로 가기 위해서는 플레이어1 유닛 능력치의 주소를 알아내야 하는데, 아직 그것까지는 분석하지 않았고(이것을 얻기 위해서는 모든 맵데이터의 정보를 알아내야 할 것 같은 느낌이라서 포..
이번 휴가가 군 생활에서 3번째 휴가인데 아무 계획도 없이 무작정 나와서 정말로 아무것도 하지 않았다. 저번 휴가 때도 아무 계획 없이 나오기는 했지만 그래도 아트록스 해상도 패치라는 나름 만족할만한 성과를 내고 갔었는데 이번 휴가 때는 에이스사가의 스타포스락을 뚫으려고 하다가 덤프 뜨고 IAT를 복구 못 해서 시간만 낭비하는 결과를 내고 말았고, 그 후에는 롤만 하다가 프로그래밍 책 몇 권을 산 게 이번 휴가의 끝이었다. 나는 참 교만했던 게 프로그래밍 언어를 대부분 거의 마스터하고 나서 '이제 더 배울 것도 없겠지, 부대 나가면 게임이나 제작해야지.' 하는 막연한 생각을 하고 있었는데 우연히 dot_product라는 벡터함수 하나를 본 뒤 나의 부족함을 깨달았다. 수학과 물리 함수 하나 짜지 못하고 ..
HQ 파일은 천년의신화, 임진록2, 임진록2+ 조선의반격에 존재하는 파일이며, Data/Data.hq, Hq/Hq.hq 이렇게 두 개의 쌍으로 존재합니다. 여기서 *.hq는 헤더파일, *은 패킹 된 파일로 분류되지요. 아울러 쌍으로 된 이 파일들은 기본적으로 "(var & 16) ? var-16 : var+16" 암호화가 되어있어 먼저 복호화를 해줘야 합니다. 복호화된 천년의신화의 Data.hq 모습. 총라인수 : [파일 개수]->파일 명\t[파일 크기]\t[파일 오프셋]->파일 명\t[파일 크기]\t[파일 오프셋]…. 헤더는 이처럼 먼저 파일명이 명시된 뒤 크기와 오프셋이 뒤따르는 구조입니다.
임진록2+ 조선의반격 밸런스 수정기를 만들려고 노가다 중. HQ팀은 왜 능력치를 EXE 안에 둬서 어떤 게 어떤 능력인지도 구별하기 힘들게 하는지 모르겠다. 능력치를 하나하나 바꿔가면서 능력에 주석을 다는 중이다. 이런데에 HEX-RAY를 써보니까 분석이 훨씬 쉬워졌다. 올리디버거로 대충 예상은 가능하긴 한데, IDA에서는 임시변수 이름을 숫자로 직접 변환해준다. HEX-RAY는 리버싱이 막혔을 때 사용하면 정말 좋은 도구인 것 같다. 항상 많은 도움을 받는다. 위 사진은 조반에서 특정 파일이 "(var & 16) ? var-16 : var+16" 암호화를 쓰길래 만들어본 프로그램(UnZip.exe)으로 뽑아낸 자료. 심심해서 만들어 본 건데 정말로 쓸모가 없었다. (막상 만들어놓고 보니 암호화된 파일이..
문득 어렸을 때 했던 고전게임이 하고 싶어지는 때가 있다. 갑자기 고전게임이 생각나며 "그때 그 게임… 그래픽은 구졌어도 재밌게 즐겼었지…" 라던가 "그땐 참 재밌었어…" 라는 그런 생각이 우러나올 때, 바로 그때이다. 그때에 우리는 추억을 회상하거나 그 게임을 직접 찾아보게 된다. 하지만 그렇게 찾은 것이 예전보다 재미없어 바로 삭제하게 되는 이 상황은 과거가 지나치게 미화됐던 것일까 아니면 현대의 게임에 너무 물든 것일까 그것조차 아니라면 함께하던 이의 부재 때문일까…. 어떤 이유에서든 그때의 감정을 다시금 느끼지 못한다는 것이 아쉽다. 그럼에도 먼 훗날 다시금 그때를 회상할 수 있는 것은 우리에겐 아직도 그것들로 인하여 즐거웠고, 그것과 함께 어린 시절을 보냈던 좋은 기억만은 남아 숨 쉬고 있기 때..
아마게돈(Armageddon)의 데이터 파일은 헤더 파일인 Armageddon.HED와 본체 파일인 Armageddon.MFP로 나뉘어 있습니다. HED 파일의 구조를 위 사진을 통해 설명하자면, 맨 앞의 C20F 0000은 압축된 파일의 개수를 나타내며 그 뒤부터는 0x48byte마다 파일의 헤더를 나타냅니다. 이러한 파일의 헤더에서는 맨 앞의 0x04byte는 파일의 오프셋을 나타내고 맨 뒤의 0x04byte는 파일의 사이즈를 나타냅니다. 원래 초기 버전의 아마게돈은 파일이 전부 노출되어 있었지만, 업데이트하면서 HED와 MFP 파일로 아카이브 방식으로 따로 저장해둔 것으로 보입니다.
아트록스의 PAK 파일구조를 그림으로 제시하자면 대충 위 그림과 같습니다. 'Joy Max File Manager!'는 아트록스 파일인지 아닌지를 판별하는 역할을 하며 크기는 0x203으로 추측됩니다. Directory header 부분은(0x204~0x7D1FF) 특정 오프셋을 통하여 그다음 파일헤더 가 어느 위치에 속하는지를 구할 수 있게 도와줍니다. File header에는 파일과 헤더가 공존합니다. 파일의 헤더가 선 제시된 후 파일이 나오고 다음에 또 파일의 헤더와 파일이 제시됩니다. 이처럼 PAK는 마치 디스크의 파일 시스템처럼 체계적인 구조를 지니고 있습니다. 판별자 부분 중간에 나타나는 00E8 0300은 무엇을 하는 역할인지 아직 확실히 연구되지 않았습니다. 파일의 크기도 아니고 PAK의 ..