|
단락 이름 | 바꿀 곳 | 바꿀 내용 | 설명 |
TYPE | 단락 전체 | 등록되지 않은 내용으로 바꾸거나 단락 전체를 삭제하면 된다. | 오리지널 버전일 경우 브루드워 버전으로 변경하면 맵이 깨진다. TYPE, IVER, IVE2 중 어떤 한 단락만 없어도 프로텍트 가능하다. 용량 감소를 위해 우버레이션에서는 모두 삭제하였다. |
VER | 없음 | . | 등록되지 않은 값으로 수정하면, 에디터 상에서 미확인 버전이라며 블리자드에 문의해보라는 창이 뜬다. 당연하게도 게임에서 튕기게 된다. |
IVER | 단락 전체 | 등록되지 않은 내용으로 바꾸거나 단락 전체를 삭제하면 된다. | 오리지널 버전일 경우 브루드워 버전으로 변경하면 맵이 깨진다. TYPE, IVER, IVE2 중 어떤 한 단락만 없어도 프로텍트 가능하다. 용량 감소를 위해 우버레이션에서는 모두 삭제하였다. |
IVE2 | 단락 전체 | 등록되지 않은 내용으로 바꾸거나 단락 전체를 삭제하면 된다. | 오리지널 버전일 경우 브루드워 버전으로 변경하면 맵이 깨진다. TYPE, IVER, IVE2 중 어떤 한 단락만 없어도 프로텍트 가능하다. 용량 감소를 위해 우버레이션에서는 모두 삭제하였다. |
VCOD | 없음 | . | 변경해도 겜에서 튕기지 않는 부분은 StarEdit.exe기반에디터에서 열린다. 삭제하면 맵이 깨진다. |
IOWN | 모든 곳 | 아무렇게나 바꿔도 되고, 단락 전체를 삭제해도 된다. | 바꾸기 어렵지 않기에 많은 프로텍터에서 쓰였다. |
OWNR | 없음 | . | 삭제하거나 잘못된 값을 넣으면 맵이 깨진다. |
ERA | 단락의 내용 | 지형정보의 값과 그 뒤를 변경하면 된다. 지형정보의 값은 일정한 규칙에 따라 수정해야 하나, (1편 ERA참고) 그 뒤의 값은 아무렇게나 수정해도 된다. 예) 0600 -> 0601 또는 AEC8 등 (-_-;;) | 지형정보의 값만 변경하는 프로텍션이 skl과 msp에만 쓰인 이유가 있다. 걸기는 어려우면서 풀기는 쉽기 때문이다. 그러나, 그들도 놓친 게 있다. 지형정보의 값은 특정한 값을 취하지만, 그 뒤는 그렇지 않다. 뒤의 00도 필요한데, 00외의 값으로도 게임은 잘 된다. |
DIM | 맵의 크기 | 기본값이 아닌 값을 넣는다. | StarForge나 SCMDraft에서는 열린다. 기본값이 아닌 맵을 이상없이 열려면 기본값인 맵을 먼저 열어야 되므로 잘 쓰이지 않는다. 또한, 미니맵을 계산하는 기준이니만큼 미니맵도 깨진다. |
SIDE | 없음 | . | 삭제하면 맵이 깨진다. |
MTXM | 단락 나누기 | 여기서는 3개로 나누는 것을 설명한다. 원본의 내용이 ABCDEF라면 첫번째 MTXM = RTYUEF 두번째 MTXM = GHCD 세번째 MTXM = AB | 뒤에 나올 MTXM의 내용의 앞부분부터 읽어들이게 하면 된다. 원본의 앞부분이 나눌때는 뒤로 가게 한다. RTYU, GH는 아무렇게나 넣되, 원본인 ABCD, EF와 길이가 같아야 한다. (단, RTYU, GH등은 제한값을 초과하면 안 된다.) DIM 으로부터 전체 길이를 읽는 곳이면 모두 나누는 것이 가능하다. |
PUNI | . | . | 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
UPGR | 단락전체 | hybrid 버전에서 삭제가능하다. | 다른 버전에서 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
PTEC | 단락전체 | hybrid 버전에서 삭제가능하다. | 다른 버전에서 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
UNIT | 고유번호 스타트로케이션 | StarEdit.exe기반 에디터에서 튕기게 할 수 있다. 스타트로케이션을 쓰는 에디터에서 튕기게 할 수 있다. | SCMDraft나 StarForge에서 열린다. 버전이 바뀜에따라 기본값 이상의 고유번호가 바뀔 수 있고, 튕기지 않던 맵이 튕길 수 있다. 단락 전체를 삭제하면 맵이 깨진다. 스타트로케이션을 담고있는 한 줄(36bytes)을 모두 삭제하면 캠페인에디터에서 튕긴다. 기능확장 맵에디터까지 막으려면 스타트로케이션이 있는 내용부를 FF 등의 값으로 모두 채워버리면 된다. 이론상으로는 스타트로케이션이 없으면 게임 시작이 안 될 것 같으나, 없어도 처음 보게 되는 화면이 왼쪽 위라는 것만 다르고 나머지는 똑같다. 원리는 메모리상에서는 스타트로케이션이 기록되지 않고, 오로지 에디터에서만 쓰기 때문이고, 스타트로케이션이 갖는 의미는 시작하자마자 스타트로케이션이 있던 위치에 CENTER VIEW 트리거를 작동시키는 것과 같기 때문이다. |
ISOM | 모든 곳 | 아무렇게나 바꿔도 되고, 단락 전체를 삭제해도 된다. | 바꾸기 어렵지 않기에 많은 프로텍터에서 쓰였다. |
TILE | 모든 곳 | 아무렇게나 바꿔도 되고, 단락 전체를 삭제해도 된다. | 바꾸기 어렵지 않기에 많은 프로텍터에서 쓰였다. DIM 으로부터 전체 길이를 읽는 곳이면 모두 나누는 것이 가능하다. |
DD2 | 모든 곳 | 원본에서 사용되지 않았을 경우, 단락 전체를 삭제해도 된다. | 바꾸기 어렵지 않기에 많은 프로텍터에서 쓰였다.
'The map could not be loaded because it had too many obstructions. Try widening corridors and reducing the number of small nooks and crannies to correct the problem.' 에러가 뜨면서 맵이 게임에서 안 열리는 문제가 생길 수 있다. |
THG2 | 고유번호 | StarEdit.exe기반 에디터에서 튕기게 할 수 있다. | SCMDraft나 StarForge에서 열린다. 버전이 바뀜에따라 기본값 이상의 고유번호가 바뀔 수 있고, 튕기지 않던 맵이 튕길 수 있다. 삭제하면 튕긴다. |
MASK | 단락 나누기 | . | 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. DIM 으로부터 전체 길이를 읽는 곳이면 모두 나누는 것이 가능하다. |
STR | 로케이션 삭제 단락 나누기 문자열의 위치값 변경 단락 압축 | 로케이션 문자열과 그 위치값을 삭제한다. 문자열과 위치값을 1024개 이상으로 늘릴 수 있다. 쓰지 않는 위치값을 바꿀 수 있다. 단락 전체를 압축할 수 있다. | 로케이션 삭제는 수동복구가 어려운 편이나, SCMDraft에서 자동복구 해준다. 스위치, 코멘트 삭제도 있으나 프로텍트되지 않는다. 쓰지 않는 위치값을 아예 없애면 용량도 줄어들고, 프로텍트도 된다.
[ STR 프로텍트 연습 ]
STR 압축
첨부한 STR압축연습.zip을 다운받고 압축해제한다.
이 STR 단락을 분석해 본다면, 전체 문자열은 1024개,
3. 위치값의 주소 검색
Insert키를 눌러 OVR모드를 켜고 위치값을 수정한다. 실제 문자열의 개수가 2개이므로 0004를 0200으로,
다시 Insert키를 눌러 OVR모드를 끄고 단락길이를 삽입한다.
나온 파일을 자신의 STR압축연습 파일과 Ctrl+K로 비교해보자.
2. 3. 4. |
UPRP | . | . | 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
UPUS | 모든 곳 | 단락 전체를 삭제해도 된다. | 바꾸기 어렵지 않기에 많은 프로텍터에서 쓰였다. |
MRGN | 문자열 부분 | 없는 번호로 바꾸면 된다. | SCMDraft에서는 자동으로 복구해 준다. 단락 전체를 압축하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
TRIG | Run AI Script 부분 트리거 번호 부분 문자열 부분 단락 압축 설정값 | 없는 값을 넣으면 된다. 단락 전체를 압축할 수 있다. | StarForge나 SCMDraft에서는 열린다. 밀리맵으로만 쓸 경우 삭제가능하다. |
MBRF | 트리거 번호 부분 문자열 부분 설정값 | 원본에서 사용되지 않을 경우 삭제할 수 있다. 없는 값을 넣으면 된다. | StarForge나 SCMDraft에서는 열린다. 밀리맵으로만 쓸 경우 삭제가능하다. |
SPRP | . | . | 삭제하면 맵이 깨진다. |
FORC | . | . | 삭제하면 맵이 깨진다. |
WAV | 모든 곳 | 단락 전체를 삭제해도 된다. | 바꾸기 어렵지 않기에 많은 프로텍터에서 쓰였다. |
UNIS | 문자열 부분 | 없는 값을 넣는다. hybrid 버전에서 삭제가능하다. | StarForge나 SCMDraft에서 잘 열린다. 다른 버전에서 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
UPGS | . | hybrid 버전에서 삭제가능하다. | 다른 버전에서 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
TECS | . | hybrid 버전에서 삭제가능하다. | 다른 버전에서 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
SWNM | 모든 곳 | 단락 전체를 삭제해도 된다. | 바꾸기 어렵지 않기에 많은 프로텍터에서 쓰였다. |
COLR | 없음 | . | 캠페인에디터에서 기본값으로 고쳐준다. |
PUPx | . | . | 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
PTEx | . | . | 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
UNIx | 문자열 부분 | 없는 값을 넣는다. | StarForge나 SCMDraft에서 잘 열린다. 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
UPGx | . | . | 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
TECx | . | . | 삭제하면 튕긴다. 밀리맵으로만 쓸 경우 삭제가능하다. |
특정 단락을 수정하지 않으면서 프로텍트하는 방법도 있다.
대표적으로 MPQ형식 파일을 Hex로 수정하는 방법과, MPQ편집 프로그램에서 특정 파일을 숨겨주는 방법이 있다.
물론, 숨겨주는 기능이 있으면 반대로 찾아주는 기능이 있는 MPQ 편집 프로그램도 있다.
1. 블리자드에서 사용한 프로텍션 - 배틀넷상의 블리자드맵 인증 시스템
블리자드맵과 같은 표시가 나게 할 수는 있으나 배틀넷 상에서의 게임은 할 수 없다.
배틀넷 파일을 변경함으로써 혼자서는 할 수 있으나, 다른 플레이어와의 게임은 할 수 없다.
2. 블리자드에서 사용한 프로텍션 - (listfile)의 재삽입
현 버전의 래더맵을 캠페인에디터로 열고 아무 곳이나 수정한 다음, 저장 버튼을 누르면 에디터 오류가 나며 종료됨을 알 수 있다.
이는 (listfile)의 속성이 기본 속성이 아니었기 때문이다.
WinMPQ에서 scenario.chk를 삽입하면 자동으로 (listfile)이 기본 속성인 CEX로 생성된다.
이 생성된 (listfile)을 추출한 다음, 기존의 (listfile)을 목록에서 제거한다.
그러면 파일의 갯수는 2/2에서 1/2로 바뀌는데, 이 상태에서 추출했던 (listfile)을 다시 삽입하면 2/3으로 바뀌고 속성이 C--로 된다.
이 파일을 캠페인 에디터에서 수정하려 하면, 래더맵처럼 오류가 나게 된다.
이것이 블리자드가 사용한, 맵은 열리지만 저장이 안되고 튕기게 만드는 블리자드 인증맵 전용 프로텍션이다.
단순히 맵 파일에 읽기 전용 속성을 부여하여 저장만 잠시 안되게 만드는 것과는 다르다고 볼 수 있다.
풀어내려면, 전체 파일을 추출해도 되고 (listfile)만을 추출하여 다시 CE- 속성으로 삽입하면 된다.
WinMPQ의 경우, Mpq -> Encrypt Files에 체크하고 삽입하면 CE-로 넣을 수 있다.
3. 우버레이션에서 사용한 프로텍션 - (listfile)의 삭제
MPQ압축 파일목록의 정보를 담고 있는 이 (listfile)을 삭제하면 WinMPQ상에서 staredit\scenario.chk라는 경로를 찾을 수 없게 된다.
이를 복구하려면 WinMPQ에 내장된 목록을 사용하지 않고 따로 목록 파일을 읽어오게 하면 된다.
자세한 내용은 4편에서 보도록 하자.
4. MPQ파일 자체를 헥스로 수정
MPQ파일에서 같은 버전, 같은 속성을 담고 있는 맵 파일을 계속 비교해 나가다 보면, 어떤 위치에 있는 값은 고정됨을 알 수 있다.
이 고정된 값은 MPQ파일을 읽어들이는 데 중요한 곳이므로 잘못 건드리면 맵이 깨질 위험이 있다.
또한, 이를 사용해서 WinMPQ만은 막았다 하더라도 수많은 여러 MPQ추출 프로그램에 다 뚫리기에 잘 사용하지 않는다.
5. 단락의 순서가 프로텍트로 이어질 수 있나?
결론부터 얘기하자면, 순서를 바꿔도 StarEdit.exe기반의 맵에디터에서 잘 열린다.
각 프로텍터에서 순서를 바꿨던 이유는 프로텍트가 아니라, 언프로텍트할 사람들에게 혼란을 주기 위해서이다.
scenario.chk를 제대로 알고 있는 사람보다 대충 아는 사람들이 더 많고, 기존의 scenario.chk에서
순서가 달라지면 혼란을 줄 수 있기에 변경한 것이지, 프로텍트 때문은 아니라 할 수 있다.
순서를 일일이 바꿔보지 않아도 영향을 줄지 안 줄지 쉽게 알 수 있다.
SCMDraft에서 scenario.chk의 단락 순서를 바꾸지만, StarEdit.exe기반의 에디터에선 잘 열리기 때문.
그러면 2편에서 왜 순서대로 배치하라 했느냐고 묻는다면,
초보분들이 쉽게 이해할 수 있고 Compare를 통해 원본과 비교하라는 의미였지, 순서대로 해야 읽는다는 뜻은 아니다.
6. 블리자드에서 사용한 프로텍션 - (attributes)를 이용한 읽기 전용 속성
MPQ파일내에 존재하는 (attributes)파일은, MPQ에 삽입된 파일의 경로와 속성 정보를 담고 있다.
(attributes)의 최초 8바이트는 (attributes)파일임을, 그 뒤는 12바이트씩 삽입된 파일의 정보를 나타낸다.
만약 그 내용이 00으로 채워져 있다면, 파일은 삭제되었지만 실제 경로에서는 삭제되지 않았음을 뜻한다.
WinMPQ등에서 파일 수는 2개이지만 실제 파일 수는 3개인, 2/3으로 나오는 것이 그 예이다.
이를 해결하기 위해서는 MPQ에디터의 Compact기능을 사용해야 한다.
Compact기능을 지원하는 MPQ에디터에는 WinMPQ, Ladik's MPQ 등이 있다.
Compact를 쓰고 나면, 삭제된 파일의 실제 경로도 삭제되며, 그 파일이 차지하고 있던 용량도 확보할 수 있게 된다.
작성중...
7. 읽기 전용이 걸린 (attributes) 맵 파일을 수정하는 방법
이전 버전의 래더맵에는 맵은 열리지만 저장하려고 하면 튕기는 현상이 있었다.
그 때는 (attributes)자체가 맵 파일에 적용되지 않고 (listfile)만으로 했던 때였지만,
바로 이전 버전에서는 (attributes)를 이용하여 scenario.chk에 읽기 전용 속성을 부여하는 방법을 썼었다.
이를 해제하는 방법은 매우 간단하다. (attributes)파일을 삭제하고 Compact기능으로 경로까지 없애주면 된다.
삭제하지 않으려면 (attributes)파일 자체를 수정해야 한다.
이 방법은 워크래프트3의 언프로텍팅 과정에 포함되는 것이기도 하다.
작성중...
8. MPQ 구조에 따른 MPQ 자체 수정
아래는 MPQ 형식 파일의 대략적인 구조이다.
(여기서는 [수정된 맵] 자료실의 (1)네모네모디펜스 맵을 예로 들었다.)
4D 50 51 1A = MPQ
20 00 00 00 = 헤더 파일 길이 (처음부터 32번째까지를 뜻함)
3A DA 01 00 = 파일 전체 길이 (처음부터 끝까지의 길이)
00 00 = MPQ 버전 (WoW: BC 이후부터는 01 00 라고 함. - Ladik)
03 00 = 블럭 크기 (기본값 3)
1A 9A 01 00 = 해쉬 테이블 위치 (4개의 00 00 00 00당 1개 해쉬를 뜻함. 보통 chk파일은 5D에 위치하는데, 93번째 해쉬에 chk파일의 경로나 기타 정보를 담게 됨.)
1A DA 01 00 = 블럭 테이블 위치 (4개의 00 00 00 00당 1개 파일을 뜻함. 즉 여기서 실제 파일 개수를 알 수 있음.)
00 04 00 00 = 해쉬 테이블 개수 (기본값은 1024개. MPQ버전이 00 이면 2^16을 넘을 수 없고, 01 이면 2^20을 넘을 수 없다고 함. - Ladik)
02 00 00 00 = 블럭 테이블 개수 (전체 파일 개수. 여기서는 2개지만, 다른 값이어도 MPQ읽는데는 무관한 듯함.)
예전에는 20 00 여기를 고쳐서 캠페인 에디터에서 에러나게 했었고,
cmp에서는 02 00 앞의 00을 10으로 고쳐서 에러나게 함.
MPQ자체를 일부 수정해서 에러나게 만드는 수법은
구멍을 알아내기 어려운 반면에, 깨는 방법이 공개되면 끝장이므로 보통은 잘 사용하지 않는다.
* 테이블 자체를 수정해서 chk추출을 방해할 수 있으나, 이것 역시 절대적인 방어를 뜻하는 것은 아니다.
9.
|
첫댓글 .... 예) 0600 -> 0601 또는 AEC8 등 (-_-;;) 이건 정말 몰랐네요.
아.. 그런거였구나... 블리자드가 프로텍트한게 뭔지도 모르고 뻘짓한 난 뭐지 ㅠㅠ
AEC8... 압박입니다요 乃
방금 우버3을 언프로텍트하면서 생각한건데, UNIx 단락을 프로텍트할수도 있겠네요. (쓰이지 않는 유닛 이름 문자열값을 쓰레기로 넣는다던지..)
우버2에선 STR,MTXM쪼개면서 용량 늘리기 삽질을 하더니만 3에선 제대로 했네요. 유닛/업그레이드 쪽 단락은 버전이 달라질 경우 깨질 가능성이 있을것 같기도 하고 SF나 SCMD로 열릴것 같아 아직 세부적인 분석은 안 했습니다.
오리지날맵에서는 UPGR/PTEC/UNIS/UPGS/TECS 를 지우면 에디터에서는 읽을 수 없으나, 게임은 잘 됩니다. 물론 UPGx/PTEx/UNIx/UPGx/TECx 가 있다는 가정하에서.
본문에 추가했습니다. 이론상으론 가능했고 실험만 안 해본 건데, 대신 해주셨네요.^^
근데 hybrid(잡종이)라는게 무슨 버전인가요?;;
1편 앞부분에 나와 있습니다. vanilla처럼 PTEC등의 단락이 있으면서도 broodwar의 PTEx가 있는 버전입니다. PTEx는 PTEC의 확장 단락인 셈이므로, PTEC을 없애도 PTEx가 있기에 겜이 잘되는 것입니다.
MTXM을 나눌 때, 쓰레기 부분이라도 튕기는 지형을 넣게 된다면 게임에서 튕기게 됩니다. cpp를 제작하면서 알아낸 것 중 하나..
2.블리자드가 사용한 프로텍션 - 이 부분 1.14 패치에서는 캠페인에디터에서 맵을 수정할 경우 마크 떨어지도록 변경되었고 저장가능하게 되었으니, 원본 래더맵을 날려먹지 않도록 주의합시다. 바꾼 이유는 아마도 래더 시스템 자체를 날렸기 때문인 것으로 추정.. 말하자면, 우리맵(블리자드) 수정할꺼면 마크 떨어진다는 거 알아둬라.. 뭐 이런 얘기.. 그래도 래더 마크의 의미는 아직 크니 조심합시다.
그런데요 listfile 파일 어떻게 제삽입하나요?
(listfile)을 추출한 뒤, 내부 파일을 모두 포함하도록 메모장으로 편집하고 이 파일만 넣으시면 됩니다. 블리자드의 (listfile)재삽입에서는 뺏다가 Encrypted Files에 체크해서 그냥 넣어도 됩니다.
김성제//리스트파일은 재삽입을 안해도 알아서 생성됩니다.
마치 작성자님이 스타크래프트 제작에 참여한 것 같아요.. 꽤 유용한 정보입니다. wav 가 없다면 용량을 최대로 줄일 수 있겠군요!
이야, 멋집니다!
MASK 나눌때는 StarEdit를 기반으로한 맵에디터에서는 열지못하고 SF/SCMD(테스트해보지못함)에선 잘 열리네요.
맵에디터에선 아마 잘 열릴거지만 VCOD 단락에서는 코드가 5 또는 4 일경우 3으로 변경해줘도 잘 실행됩니다 (첵섬값이 일치하는듯하네요)
도움이 될 지 모르겠지만, 검색하다 보니 이런 곳이 나와서 알려 드립니다. http://code.google.com/p/vgce/source/browse/trunk/docs/Blizzard/Starcraft/chkFormat.txt 이외에도 chk관련 문서들이 많았는데 하도 오랜만이라 잘 모르겠네요;
감사합니다. 혹시 STR 단락을 나눌때 XX YY 스트링 00 에서 XX YY 스트링까지 짜르고 00을 남겨두면 스트링이 깨지는가요? 그냥 마구잡이로 나누게 해봤는데 문자열이 깨졌는지 확인할 방법이 없네요. UU2나 OSMAP2로 열면 그냥 문자열을 초기화 시켜버리고
게임을 해봐도 깨진곳이 잘 안보이고..ㅡㅡ;
아, 그리고 STR 뒤섞기라고 UP에서 사용되었다 하는데 STR 뒤섞기라는게 위치를 전부 변경시켜서 말그대로 뒤섞는건가요??
00은 여기까지가 문자열이다 라고 나타내는 부분이므로, STR 을 나누려면 이것에 맞춰야 합니다. 역대 chk프로그램들 중에서 uBeRaTiOn이 MTXM/STR 나누기를 가장 잘 활용했습니다. UP에서 사용된 STR 뒤섞기도 외국에 chk문서로 있었는데 아직도 있는지는 잘 모르겠네요. (백업게시판에 있을 수 있으니 찾아보고 다시 적겠습니다.)
http://code.google.com/p/vgce/source/browse/trunk/docs/Blizzard/Starcraft/chkCompression.txt 여기 단락 압축법이 있네요. 한국에서 사용한게 빠져있기도하고 없는것도 있고 하네요.
STR 관련 글을 백업 게시판 305번 글에서 찾았는데 이게 맞는지는 잘 모르겠네요. 백업 게시판을 우수회원도 볼 수 있도록 열었습니다. 그 외에 UP의 프로텍션 중 STR 이 강조된 예제맵도 있고 여러가지 소스도 있습니다. (아, STR 예제맵은 등록대기문서 게시판에 있었군요. 여기도 열어 드립니다.)
감사합니다 STR 뒤섞기 scm 파일 찾았네요. 어떤식인지 내일 좀더보고 SP3에 한번 적용해봐야겠네요. 혹시 등록대기문서에 글쓰기 권한을 우수회원으로 변경해주실수 있으신가요? 우수회원분들 중에서 chk 편집 프로그램 만드는것에 관심이있는사람들한테 도움이 될만한 간단한 예제로 드럽지만 SP3를 완성한뒤에 소스를 한번 올려보고 싶네요.
UNIT 단락 늘리기도 맵에디터에서 안열립니다. (CMP에서 사용된것) uu2,scmrec,osmap2 등에서도 UNIT 단락을 안건드려서 맵에디터에서 안열리는거 같네요. UNIT 단락을 늘릴때는 마구잡이로 쓰레기데이터를 넣으면 팅기고 CMP에서 쓰인 FF FF를 넣어도 좋고 단락의 구조에 맞게 넣고 길이를 늘려줘야 프로텍트가 됩니다.
아, 그리고 OWNR 00 인 값을 아무값으로 바꾸어주면 스타포지에서 플레이어 세팅 후 바꿔준 플레이어를 선택하면 팅깁니다. 이것도 팅기긴하니.. SP3에서 적용하게 넣어야겠네요. (SCMREC 에서는 OWNR을 바꾸면 맵을 열때 에러가 뜨네요.)
UP에서 사용된 STR 구조변경에서 하나 이해가 안가는게 있는데요 STR 구조를 바꿀때 각각 문자열의 위치값이 한군대도 안보이는데 어떻게 스타크래프트에서는 위치값을 인식하는건가요? 맵에디터에서는 이 위치값이 없어서 문자열을 위치값으로 인식해 chk파일 곳곳의 데이터를 읽어오는식이네요. 스타에서는 메모리를 읽어오는가 제가 한번 따라해봤더니 잘못되었는지 맵제목에는 정상적으로 되어오고 맵설명에는 아까전에 플레이한 맵의 제목이 있더군요 ㅡ.ㅡ;
본문에서는 "거의 모든 단락에서 단락 늘리기가 통합니다." 이 말만 언급하고 생략했었는데, StarForge 초기 버전에서 최초로 MTXM의 뒤를 늘리면서부터 알게 된 사실입니다. 단, 늘리기 역시 나누기와 마찬가지로 기본 구조로 만들지 않으면 안 됩니다. 생략한 뒤로 업뎃을 하지 않았더니 cmp같은 데서도 쓰이고 그렇더군요. up에서 쓰인 방식이 정확히 어떤지는 소스를 보셔서 확인하시는 것도 괜찮겠네요.
그렇군요 아 UP 소스를 생각 못했었네요 한번 STR단락 구조를 변경한맵에 (등록대기문서에 있는 STR만 변경되어있는맵) STR 나누기를 해보니까 우려했던거와 달리 잘읽어오네요 스타크래프트에서 UU2는 STR이 잘못되어서 그런지 맵을 아애 못읽어오고 SCMREC/OSMAP2는 역시 문자열이 깨집니다. 요리조리 한번 보고 될때까지 시도해봐야겠네요. 그리고 없는유저의 FORC 데이터를 쓰레기값으로 바꾸어주면 SF/StarEdit 에선 잘읽어오지만 SCMD에서는 못읽어오네요. (SF에서 연뒤 Force창을 띄우면 역시 팅기네요 런타임에러로..)
혹시 UBER2로 STR나눈맵 플레이중 세이브한뒤 세이브파일로 게임하면 팅기거나 문자열깨지지않나요? 뒤섞고 구조에맞게 잘랐는데 세이브후 로드하면 무조건 문자열이 깨지네요.. 아마 STR단락 하나만 인식하는거같아요 (아마 두번째꺼) 잘못나눈건가.. -_-;; STR나눌때 기준이 어떤건가요? 길이 길이 문자열00 문자열00 까지나누는건가요? 그럼 맞는데.. 왜이러지.. 뒤섞기는 시험결과 uu2말곤 전부다 깨지네요 단.. uu2로 한번 smc2로 한번하면 풀리는불상사가ㅋ
세이브한 게임 쪽은 잘 모르겠네요. STR 나누기가 원래는 그냥 순수하게 압축해서 나누는 거 말고, 원래 STR 기본 길이 이상으로 높여 보겠다는 시도에서 시작된 거라, 아마 우버2에서는 하나는 길고 다른 하나는 짧을 거예요. 그 때 확인하기로는 그 두 STR 이 모두 인식이 가능하더라는 거였고, 세이브나 리플레이까지는 생각을 못 해서 테스트하지 않음.. 뒤섞기는 up의 방식을 따랐다면 물론 uu2로 풀리겠죠. 오늘은 점검일이니 스타에 좀 신경 쓸 수 있겠어요. 점검이 몇시까지냐가 관건이겠지만 ㅋ (어이쿠.. 방금 확인해 보니 점검이 이미 끝나 있었군요. 늦었당 ㅋ)
테스트맵으로 로템을 해봤는데 음 우버2에서 쓰인거는 STR 단락을 나눈다기보다는 그냥 첫번째 STR을 만든뒤에 암거나 넣고 문자열수를 1024로한담에 두번째 STR단락 (실질적으로 읽어오는단락)에 원래 쓰이는 문자열데이터를 넣고 문자열수를 그 문자열갯수만큼 조정해주네요.. MTXM처럼하는 STR단락 나누기는 불가능한듯 -_-;; 가능은한데 세이브/로드까지 고려하면 해선 안될 압축법인거같아요.
쩝 SMC로 프로텍트된건 SMC만 언플가능하다해서 봤더만 이것또 죄다 가짜내용뿐이네요 수정할곳이 이제 보이질않아서 다 이렇게할수바께 없나..
혹시해서 스톰으로 읽어봤더만 역시나 잘읽히네요 mpq수정은 뭘하나 그게그거인듯 SMC로 된거 시나리오chk만 스톰으로 추출하면 scmrec에서 잘뚫리네요 추출기 만들어서 배포해야지-_-;;
스타크래프트 버전의 스톰으로 읽지 못하면 게임이 안 되니 어쩔 수 없겠죠. 그리고 이제 남은 chk프로텍션은 거의 없긴 함.. 언프로텍팅은 됐지만 맵에디터에서 못 읽게 하는 정도? 스타크래프트 기본 파일들을 고친다는 가정 하에서 mpq, bin, snp, exe 확장자 정도의 파일을 바꾸는 것이나 VCOD 수정만 남은 것 같은데 이것들은 된다고 해도 쓸모가 없을 듯..
정말 이제 더이상 수정할곳이 없는듯.. 수정을해도 상관없는곳은 맵에디터에서 읽을때 에러가나지 않으니.. (SF/SCMD) smc2만해도 그냥 osmap2 uu2등 언플툴 작동오류만 노렸네요 cmp처럼. scmrec는 안퍼져서 몰랐던듯ㅋ sp3에서도 지금도 이용하지만 언플툴 버그를 이용해야할듯.. smc2에서도 문자열갯수가 좀많은맵 뒤섞어버리면 언프로텍트할때 그냥 팅겨버리던데..(되도 트리거부분이 꼬였는지 SCMD에서 열려도 저장하면 팅기고 SF/SE 에서 열면 그냥 에러뜨더라구요) 이부분을 좀더 봐야겠네요 오만단락 전부 해보는중인데 별이상없으면 에디터에서 열리고 이상있으면 겜이안되고ㅋㅋ
트리거 프로텍트(언프로텍터 버그를 노린겁니다.) - 문자열의 위치값을 integer형 범위를 초과하는 수를 넣으시면 됩니다. 그리고 트리거는 0x2F(코멘트)로 설정하고요. 그러면 smc2 2.6인가 부터는 문자열 로드할때 에러때문에 언프로텍트 누르자마자 팅기고 smc2 2.5는 잘모르겠네요. sp3개발때 작성하다 만건데 좀더 파보시면 smc2도 완벽하게 막을수 있을겁니다. 또는 smc2에서 smc2로 프로텍트를 걸었다를 인식하게 해주면 비번틀리다고 smc2에서 못뚫을겁니다ㅋ 패턴 조금만 비슷하면 smc2로 인식하는 이 거지같은 smc2 패턴감지기 ㅡㅡ;;ㅋ
트리거 위치값 프로텍트는 sp3 소스코드에 잠깐 하다 말았을겁니다. 너무 많이 집어넣으면 스타에서 팅기거나 트리거가 꼬입니다. 적당히 집어넣어야합니다.
하하.. 예전부터 패턴감지기는 정말 삽질이었죠. 뭐 하나 달라져도 안 되고 프로텍터들이 비슷해지면서 더더욱..^^; legacyweapon이 공개사이트에 뿌리지 않아서 그런 것인지 아니면 귀찮아진 건지 osmap 이후의 smc부터는 에러가 상당하더라구요. 2.5 실행하시려면 xp쓰셔야 하는데, 만약 지금 7이나 vista이시면 VirtualBox같은 가상pc 설치하시고 그 안에 xp설치하시면 됩니다. 가상pc 통해서 스타크래프트 멀티 플레이도 되고 좋죠. 쓸모없겠지만ㅋ
아마도.. smc2부터는 c++로 짠거같은데요(정확하게 확인해보지는 못했네요) 원래 vb프로그래머이던 레거시웨픈이 c++로 코딩하면서 발코딩한게 좀 많은거 같습니다 적응이 덜되서그런건지 에러도 심한거같구요.. smc2로 sp3로 프로텍트된 언플시험하다가... 갑자기 이 맵의 패스워드가 다르다고 나와서 깝놀;