|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1623 [복사]
Url : http://stares.co.kr/StarCraft/163
가입하시면 보실수 있습니다.
사진을 못올리니 글로만 올립니다.
-----------------------
Reverse Engineering in StarCraft
(1) 스타크래프트내의 TEXT를 바꾸어보자.
2010. 10. 15 [금]
준비프로그램 :
StarCraft, ArtMoney(또는 텍스트검색이 가능한 메모리뷰 프로그램)
위의 사진을 보았을때 이상하다고 느끼는것이 없는가?
눈치챈 사람은 알고있을것이다.
MENU의 텝이 NEMU로 바뀌었다는것을.
이런건 어떻게 할까?
요즘나오는 한스타프로그램을 보았더니
저기 메뉴에 영어가아닌 한글로 메뉴라고 쓰여있었다.
필자는 이부분에대해서 궁금증을 갖고 한번 시도해보았다.
방법은 아주간단하다.
스타크래프트를 켜고 싱글플레이든 UDP든 어느곳이든 좋다.
게임에 들어가보자.
다음과같이 MENU라고 나와있다.
그러면 아트머니를 켜서 Select Process 를 Brood War 또는 StarCraft에 맞춰놓는다.
그리고 다음과같이 검색을한다.
검색은 위의 텝에서 Search를 누르면된다.
* 여기서 잠깐.
이렇게 검색을 하기전에 해야할 것이 있다.
Custom 옆에 ... 버튼을 눌러 다음과같이 체크를해줘야 한다.
왜냐하면 우린 어떤 값이 아닌 텍스트를 찾을거기떄문이다.
OK를 누르고 검색을 해보자.
다음과같이 하나의 검색결과가 떳다.
왼쪽에 잇는걸 더블클릭하여 오른쪽으로 넘겨주자.
오른쪽탭에서 Value값에 MENU가 보인다.
MENU를 더블클릭후 원하는대로 바꿔보자.
원하는대로 바꾼후 엔터를 치면 적용된다.
게임상으로 들어가보자.
메뉴창에 글자가 없어졋다.
분명히 STARES라고 입력을 햇는데
없어진것을 보면 오버플로우가 되어 그부분에 메모리할당을 넘어서
들어갈부분이 없기때문에 삭제된것으로 추측된다.
그러면 MENU보다 적은 BYTE값을갖는 글자를쳐보자 (영어로 3글자이하)
필자는 STA라고 바꾸엇다.
게임으로 들어가보자.
분명히 바꾸엇음에도 불구하고 글자가 나타나지 않았다.
아마 이미 오버플로우 되어서 나타나지 않을수도 있으니
게임을 제 시작후 오프셋을 다시 찾아내서 바꾸어 보자.(해당오프셋은 항상 변동한다.)
(이부분은 각자 해보기 바란다. 필자는 STA라고 바꾸어보겟다.)
분명히 입력은 STA라고 햇는데
STAU라고 나왔다.
MENU에서 U가 짤려서 STA에 U가 입력되서 나온것이다.
저부분에 들어가는 용량은 4바이트이고
항상 4바이트를 받아야되기 떄문에 STA를 입력해도 그 뒤에오던 글자들을 받는것 같다.
저걸 한글로 4바이트를 맞춰 바꾸고 이 강좌는 끝내도록하겟다.
-THE END-
P.S 이방법을 이용하여 메모리패치해서 현재나오는 한스타와같은 프로그램을 만들 수 있다.
다음과같이.
참고로 저 이름의경우는 13바이트를 받고있었지만
15바이트를 써도 오버플로우가 되지않았다.
아마 모든 유닛의 이름이 다르고
맵에디터에서도 수정가능하게하기위해 더 많은값을 받을 수 있게 한거같다. |
Hit : 9559 Date : 2010/12/12 03:59
|