개요
[pe2-image src=”https://lh3.googleusercontent.com/-JB2CMj66b1I/WL5k7pEDcfI/AAAAAAAAFl8/HaVp9-nIXgAG2k3LtGwKdtiPJw7iFLcqACHM/s144-c-o/636px-Nexon_Logo.svg.png” href=”https://picasaweb.google.com/108868947737276920881/6298550190759059361#6394659496710599154″ caption=”Nexon Logo” type=”image” alt=”636px-Nexon_Logo.svg.png” ]
자바스크립트는 웹에서 사용하는 클라이언트에서 명령어를 처리하는 웹 언어중 하나다.
이 언어는 넥슨 웹사이트에서도 잘 쓰이고 있는데, 아래 설명할 자바스크립트 방식을 이용하면 된다.
넥슨 홈페이지는 이런 방식으로 게임 실행을 수행하기 때문에 이 방식을 통하면 여러 많은 정보를 유저가 직접 수행할 수 있다는 장점이 있다.
사용법
스크립트 실행전, 기초정보 확인
[pe2-image src=”https://lh3.googleusercontent.com/-UXwfpbOpcEs/WL5k7pnAY-I/AAAAAAAAFl8/WV5JG1DoXmwI06Kt41y7TKbRfP-Pr7kLgCHM/s144-c-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580_3.png” href=”https://picasaweb.google.com/108868947737276920881/6298550190759059361#6394659496857199586″ caption=”카스온라인의 게임 코드” type=”image” alt=”이미지_3.png” ]나는 카스온라인을 기준으로 정보를 알아냈다. 카스온라인의 게임 코드는 “73737” 이란 코드 이다.
이 코드를 기반으로 ‘역으로 다른 게임코드를 집어넣으면 어떻게 실행될 것인가?’ 에 대해서 실험을 해보았다. 당연히 성공.
그럼, 이 코드가 어떤식으로 불러와지는지를 확인하자.
게임 실행에 필요한 자바스크립트
[pe2-image src=”https://lh3.googleusercontent.com/-skrN84w7d5w/WL5k7h2nOJI/AAAAAAAAFl8/GTQoLRY14bkHBBiuR_qgUKqH1lJUkKr4wCHM/s144-c-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580_5.png” href=”https://picasaweb.google.com/108868947737276920881/6298550190759059361#6394659494775175314″ caption=”게임 시작 자바 스크립트” type=”image” alt=”이미지_5.png” ]넥슨 웹 홈페이지의 게임 시작은 아래와 같은 자바스크립트를 통해 실행이 되는것을 우리는 웹 홈페이지의 소스코드를 통해 확인할 수 있었다.
1 |
<a href="javascript:GnxGameStartOnClick();" name="start_button" >게임스타트</a> |
그럼 이 코드를 기반으로 역으로 다른 게임의 코드번호를 알아내는것이 가능할까?
가능은 하다. 하지만 찾는 노력이 필요하다.
[pe2-image src=”https://lh3.googleusercontent.com/-o0eiraiszYU/WL5k7mZKlwI/AAAAAAAAFl8/z1xCQVCBkzcCp46gmeIzQQIhdI7PItyLwCHM/s144-c-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580_4.png” href=”https://picasaweb.google.com/108868947737276920881/6298550190759059361#6394659495993841410″ caption=”서든어택2의 게임 코드” type=”image” alt=”이미지_4.png” ]
나는 이 이미지를 촬영했을 당시, 서든어택2는 G-Star CBT 용으로만 가능했기 때문에 서든어택2의 게임 실행 코드를 넥슨 홈페이지에서 찾아서 이를 역으로 수행할 수 있도록 코드번호를 확인했다.
1 2 |
case 74278; return game.createGameInfo(74278, 74278, 74278, gameStartEnum.ngm, gameCookieEnum.NX, atlVersionEnum.ver20, gameGradeEnum.limit15, "http://sa2.nexon.com"); |
서든어택2의 게임 코드는 “74278” 이란 코드임을 확인했다.
이렇게 코드를 알아냈고, 게임 실행 자바스크립트도 알아냈는데, 현재 알아낸 스크립트 만으로는 게임 실행을 할 수 없다.
아래와 같은 방식으로 좀더 세부적으로 확인해야 게임 시작 스크립트가 어떤 방식으로 동작하는지를 확인할 수 있다.
실제로 자바스크립트를 수행하는 것을 알아보기
[pe2-image src=”https://lh3.googleusercontent.com/-13ivFBNO560/WL5k7sgIJNI/AAAAAAAAFmk/jD8aRKRj0sEGZJn20xld82aYdSyH7nKxQCHM/s144-c-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580_6.png” href=”https://picasaweb.google.com/108868947737276920881/6298550190759059361#6394659497633653970″ caption=”게임 시작 자바스크립트 호출” type=”image” alt=”이미지_6.png” ]넥슨 홈페이지의 자바스크립트를 찾아본 결과, 위에 작성했던 스크립트인 GnxGameStartOnClick 이란 스크립트가 아래와 같은 코드를 통해 게임실행을 한다는것을 확인했다.
1 2 3 4 |
//게임스타트 스크립트 function GnxGameStartOnCLick() { PS.game.startGame({ gameCode: 73737 }); } |
그렇다. 카스온라인 홈페이지에서는 게임 실행을 할 때, GnxGameStartOnClick(); 이란 스크립트를 이용하지만
이 스크립트는 PS.game.startGame({ gameCode: 73737 }); 라는 코드를 다시 불러와서 실제로 게임 실행을 시키는 것이다.
즉, gameCode 를 적은 것이 무엇이냐에 따라 다른게임이 실행될 수 있다는것을 확인했다.
위에서 확인한 서든어택2의 코드가 74248 이므로 이를 역으로 이용해 gameCode 란에 73737 대신 74248 로 넣고 수행을 하면 작동을 한다는 것이다.
[pe2-image src=”https://lh3.googleusercontent.com/-rVru3HBdmZI/WL5k7l7f1aI/AAAAAAAAFmk/0U9oMw6vlnEoPRRxJ98KlapW8ODQOBQZQCHM/s144-c-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580_7.png” href=”https://picasaweb.google.com/108868947737276920881/6298550190759059361#6394659495869404578″ caption=”서든어택2 NGM 다운로드” type=”image” alt=”이미지_7.png” ] [pe2-image src=”https://lh3.googleusercontent.com/-OILsCOkk56U/WL5k7o3Eq6I/AAAAAAAAFmk/bB0d7fi-1lQFGBj3TZjcyGG6HMQbVZp3gCHM/s144-c-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580_9.png” href=”https://picasaweb.google.com/108868947737276920881/6298550190759059361#6394659496656153506″ caption=”니드 포 스피드 엣지 NGM 다운로드” type=”image” alt=”이미지_9.png” ]
실제로 적용을 해보면 위와 같은 식으로 게임 다운로드가 가능하다.
이 이미지 촬영당시에는 두 게임은 실제로 오픈된 게임이 아니기에 다운로드만 가능했다.
그런데, 게임코드까지 알아냈고, 자바스크립트도 아는데 어떻게 실행을 시키냐 인데… 아래와 같이 하면 알 수 있다.
실제로 자바스크립트를 수행하기
[pe2-image src=”https://lh3.googleusercontent.com/-4x0dNfr5Gp0/WL5pIOtS-4I/AAAAAAAAFnE/vkclMl-LIy8ZM6c-BE6xh41nm65wNon-gCHM/s144-c-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B1.png” href=”https://picasaweb.google.com/108868947737276920881/6298550190759059361#6394664111020637058″ caption=”넥슨 게임 실행 하기 – 1″ type=”image” alt=”이미지 1.png” ]구글 크롬 기준으로 F12키를 눌러 개발자 도구를 연다.
콘솔 도구창에서 우리는 위에서 알아낸 정보를 바탕으로 PS.game.startGame 이가 게임을 실행한다는 것을 알아냈으니 이 게임실행코드를 바탕으로 원하는 게임을 실행한다.
이미지 상에서는 카스온라인의 게임 코드인 73737을 실행했다.
[pe2-image src=”https://lh3.googleusercontent.com/-mSlsk7O69R8/WL5pINosR1I/AAAAAAAAFnE/eHDPxDF0gEAMgZnTcKj5S3SsuK3k_UtaACHM/s144-c-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B2.png” href=”https://picasaweb.google.com/108868947737276920881/6298550190759059361#6394664110732887890″ caption=”넥슨 게임 실행 하기 – 2″ type=”image” alt=”이미지 2.png” ]
스크립트를 수행하면 자동으로 게임이 반응하면서 실행을 할 것이다.
끝으로
이를 이용해서 넥슨 게임에서 다운로드가 일반적으로 불가능했던 게임을 쉽게 미리 다운로드 하여 내용물을 알아낼 수 있다.
하지만, 이렇다 해서 실제로 종료된 게임을 다시 복구하는것은 불가능하다. 다운로드 서버에 파일이 없는경우 저 스크립트가 아무런 소용이 없다.
파일 자체를 불러올 수 없기 때문에 서든어택2 같은경우 2017년 03월 07일을 기준으로는 코드를 아무리 입력해도 파일 다운로드가 되지 않는다.
이처럼 이것을 역으로 이용해서 게임 다운로드를 할 수 있도록 하면 무언가 도움이 되지 않을까 하고 작성해본다.