프로그래밍 배우신 분들에게는 정말 간단한 것인데 의외로 모르시는 분들이 많고 반복된 문의가 많아서 간단하게 써 봅니다.

온라인게임 같은 경우에 단순히 실행파일만 실행해서는 실행이 안되는 경우가 많습니다. 런처가 있고, 게임 메인 실행 프로그램이 있는 경우 런처에서 업데이트 등을 체크한 다음에 게임 메인 프로그램에 인자값을 주어 게임을 실행하는 방법을 사용하는 경우가 많습니다.

그런데 게임 메인 프로그램을 어케 좀 건드렸으면 하는데.. 불러내면 실행이 안되고 해서 곤란한 적이 있는데요. 런쳐에서 따로 메인 프로그램에 대한 체크를 하지 않는다면 간단한 C 프로그램으로 인자값을 알아낼 수 있습니다.

C를 배우신 분이라면 argc, argv 라는 문자열이 굉장히 친숙하실 텐데요. argc 는 넘어오는 인자값의 개수, argc 는 인자값을 저장하는 배열입니다. 이 값은 굉장히 간단한 프로그램으로 알아볼 수 있습니다.

사용자 삽입 이미지

이 프로그램을 실행하면 프로그램에 넘어오는 인자값을 출력해 줍니다. C 배우신 분들에게는 너무나 쉬운 프로그램이라서 민망하네요 ㅠㅠ 실행하면 아래와 같은 화면을 보여줍니다.


사용자 삽입 이미지

아무것도 인자값을 넘기지 않았기에 argc는 1이고, argv[0]에 저장된 값은 현재 실행된 파일의 정보가 들어갑니다. 이는 기본값으로 항상 들어가는 값입니다. 자세한 설명은 C 책에 보면 부담스러울 정도로 잘 되어 있구요. 이제.. 간단하게 생각하면 이 파일을 게임 실행 파일로 바꾸면 런처에서 게임 메인 프로그램을 실행할 때 어떤 인자값을 주는지 알 수 있겠지요?

제 컴퓨터에 깔린 게임이 별로 없어서.. 2가지로 한번 예시를 들도록 하겠습니다. 라그나로크를 한번 보죠. 첨부한 파일을 라그나로그 디렉토리에 Ragexe.exe로 카피합니다. (원래 파일은 백업하는 것이 좋겠죠.)

사용자 삽입 이미지

그리고 Ragnarok.exe를 실행하면 런처가 뜨고, 서버를 선택해서 들어가면...

사용자 삽입 이미지

위와 같은 화면을 볼 수 있습니다. 첫번째의 Ragexe.exe는 원래 있는 값이구요. 2rag2가 넘어온 인자값입니다. 이값이 정말 맞는지를 한번 테스트해 봅시다. 원래 Ragexe.exe로 돌려놓구요. 커맨드 창을 띄우고 아래와 같이 입력하여 프로그램을 실행합니다.

사용자 삽입 이미지

라그나로크가 바로 실행되는 것을 확인할 수 있습니다. 그럼 2rag2 말고 다른 건 없을까요? Ragexe.exe 파일을 울트라에디트로 열어서 2rag2 라는 문자열을 검색해 보면..

사용자 삽입 이미지

2rag2 외에도 이런저런 인자값들이 보이네요. 디스어셈블러에서도 이 값을 확인할 수 있을까요? w32dsm에서 Ragexe.exe 파일을 불러와서 2rag2로 검색하면..

사용자 삽입 이미지

이런저런 내용들이 나오네요. 그럼 다른 게임은 어떨까요. 제가 게임을 안해서 게임이 별로 없는데.. 국민 게임인 카트라이더는 설치되어 있습니다. 카트라이더를 한번 보겠습니다. 같은 방법으로 실행파일을 바꾸어 주고, 기존의 파일은 백업하여 줍니다.

사용자 삽입 이미지

그리고 카트라이더 홈페이지에서 카트라이더를 실행하면..

사용자 삽입 이미지

위와 같은 내용을 볼 수 있습니다. 아마도 이상한 문자열의 나열은 세션값일 것 같네요. 런처에서 게임 메인 프로그램의 무결성을 체크하지 않는다면 이와 같은 방법으로 인자를 알아낼 수 있습니다.

무결성을 체크하면 어떻게 알아내는지는 또 여러 방법이 있겠지요. 그것에 대한 질문은 하지 마세요.

PlayStation 1) EXE 파일이 실행되지 않는다는 제보가 있어서.. 전체 소스코드를 첨부합니다. Visual C++이나 gcc, Dev-C++ 같은 프로그램으로 컴파일하시면 됩니다. 제가 2005에서 컴파일 해서 호환성이 부족한 것 같네요.

#include <stdio.h>
#include <string.h>

int main(int argc, char** argv) {
        int i;

        for(i=0;i<argc;i++) {
                printf("%d : %s\n", i, argv[i]);
        }

        getchar();
        return 0;
}

댓글을 달아 주세요

  1. BlogIcon 방문자 2008/09/28 04:14  댓글주소  수정/삭제  댓글쓰기

    폴님 안녕하세요...
    이글이 제가 궁금했던 부분을 확 풀어주는군요...
    역시 프로그램을 공부를해야 하는군요...ㅠㅠ

    역시 고수는 많고 세상은 넓다라는걸 배우고 갑니다~ ^^

    그럼 즐거운 하루되세요~ ^ㅡ^

    • BlogIcon 2008/09/28 16:32  댓글주소  수정/삭제

      위에서 언급한 부분은 워낙 기본적인 내용이라서 조금만 책 보시면 금방 알 수 있는 내용입니다 ^^;

  2. BlogIcon 휴리스틱 2008/09/28 11:45  댓글주소  수정/삭제  댓글쓰기

    요즘 리버싱 공부하시나 보네요 ㅎㅎ

    • BlogIcon 2008/09/28 16:33  댓글주소  수정/삭제

      리버싱 공부한다기보다는 5년전에 쓰던 내용인데 아직 모르는 분이 많은 것 같아서 간단하게 정리해 보았답니다 ^^; 오랜만이에요~

  3. 손님 2008/10/01 15:26  댓글주소  수정/삭제  댓글쓰기

    올리신 파일이 안되는거 같아요 =_=

  4. ㅇㅅㅇ; 2008/10/05 21:04  댓글주소  수정/삭제  댓글쓰기

    윗분이랑 같은 에러가 나는데요;; 링크 거신것도 설치해봣고요;

    혹시나 해서 비쥬얼 스튜디오란걸

    처음으로 깔아봐서 위에쓰신걸 그대로 옮겨서 exe파일을 만드려했습니다-_-;

    근데 에러가 나더라고요;뭐;;; 만드는 방법을 몰라서 그런것 같지만.

    죄송한데 exe파일을 다시 만들어 주실수 있나요?

    • BlogIcon 2008/10/05 21:12  댓글주소  수정/삭제

      제가 2005에서 컴파일 해서 그런지 호환성이 부족한 것 같네요.

      전체 소스 코드를 올렸으니 한번 컴파일 해 보세요 ㅠㅠ

  5. ㅇㅅㅇ; 2008/10/06 10:45  댓글주소  수정/삭제  댓글쓰기

    쏘쓰대로 쓰니 잘되네요 ㅎㅎㅎ

    감사합니다.

    • BlogIcon 2008/10/06 17:14  댓글주소  수정/삭제

      2005에서 컴파일해서 역시 호환성이 부족한가 보네요 ㅠㅠ 6.0이 있으면 컴파일 해 드렸을텐데 6.0이 설치가 안되어있어요 ㅠㅠ

      좋은 하루 되세요~

  6. 2008/10/07 19:10  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

    • BlogIcon 2008/10/07 19:13  댓글주소  수정/삭제

      체크썸 내용이 추가되고 나서 약간의 편법을 동원해야 패스가 가능합니다.
      해당 내용에 대한 언급은 더이상 하지 않습니다. 죄송합니다. ㅠㅠ

  7. 김철수 2008/10/07 20:13  댓글주소  수정/삭제  댓글쓰기

    신고로 닫으신글이 그런 내용이신거 같은데요...

    잠시만이라도 보여주시면 안될까요? ㅠㅠ 일주일동안 메달렸는데..

    여기서 무너질순 없어요 ㅠㅠ 아니면 힌트라도 몇마디 남겨주시면

    많은 도움이 될꺼예요 ㅠㅠ 도와주세요

  8. 김철수 2008/10/07 23:12  댓글주소  수정/삭제  댓글쓰기

    감사드려요 이해하기 힘든글이네요 ㅡ.,ㅡa

    어떻게든 해보게뜸 후후후후

  9. 라그 2008/10/08 08:30  댓글주소  수정/삭제  댓글쓰기

    다른게임 오토를 돌리고 있습니다..

    최근 라그쪽으로 공부중인데..초보라 그런지 설명서를 봐도 도저히 이해가 안가는데

    최근실행되는 통파일좀 부탁드립니다....

    sky5012001@nate.com 로 네이트메신져추가나 메일로 꼭 좀 부탁드립니다...

  10. 라그 2008/10/08 21:04  댓글주소  수정/삭제  댓글쓰기

    플님 답변주셔서 감사합니다.

    그럼 예전에 되시던 통파일이라도 부탁드려요^^;;

    직접 한번 연구해보고싶은데..어디서부터 해야할지 어떤파일들이 있어야 하는건지

    몰라서..통파일로 해서 배워보고 싶어요^^:;

    귀찮으시겠지만 좀 부탁드립니다 _ _)꾸벅..

    • BlogIcon 2008/10/09 13:18  댓글주소  수정/삭제

      예전에 통파일도 지금은 없는터라..ㅠㅠ

      간단하게 말하면 crc 체크가 추가되기 전에는 걍 수정하면 되었는데 crc 체크 추가된 이후로는 약간의 편법이 필요하고 최근의 파일은 pack이 되어 있어서 unpack 하셔야 될 꺼에요;;

      외국 포럼의 글 하나를 링크해 드립니다. 도움이 될 지 모르겠네요.

      http://all4one.forumwise.com/all4one-thread569-0.html

  11. 라그 2008/10/10 05:16  댓글주소  수정/삭제  댓글쓰기

    네 ㅠㅠ

    자료가 없으니 뭘 손을 대야할지 몰라 답답해 죽겠네요 ㅠㅠ;

    어떤분 돌리시는분 봤는데 파일공유 안해주시고 돈주고 파실려고만;;

  12. 2008/10/11 12:16  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

    • BlogIcon 2008/10/11 15:07  댓글주소  수정/삭제

      그런데 그게 당연합니다;;
      자세하게 설명해봐야 이래저래 글 복사되어 돌아다닐테고 고발한다느니 어쩐다느니 하는 골치아픈 일만 생기고 좋을 거 하나도 없거든요.

  13. 2008/10/11 19:23  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

  14. 2008/10/12 01:41  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

    • BlogIcon 2008/10/12 21:49  댓글주소  수정/삭제

      그러게요~
      자격증 시험 치시는 것 같은데 좋은 결과 있으시길 바래요~
      SE쪽 준비하시나봐요 ㄷㄷ

  15. 2008/10/12 21:58  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

    • BlogIcon 2008/10/13 18:14  댓글주소  수정/삭제

      그래도 목표가 있다는 건 좋은 것이지요;
      매일매일 조금씩 가까워질테니까요. ^^;

  16. 2008/10/13 20:22  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

    • BlogIcon 2008/10/13 23:17  댓글주소  수정/삭제

      배울수록 모르는 건 점점 늘어나기 마련이죠 ㄷㄷ;
      세상사 참 오묘한 것 같아요. 열심히 공부하세요 ㅎㅎ;

  17. 2008/10/13 23:48  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

  18. 2008/10/22 19:13  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

    • BlogIcon 2008/10/22 19:31  댓글주소  수정/삭제

      안녕하세요.

      지금의 라그에서 멀티로더나 오픈코어를 사용하실려면 컴퓨터와 프로그래밍에 대해서 상당한 지식이 있으셔야 하구요. 다른 사람이 단시간에 설명해 줄 수 있는 분량이 아닙니다;; 기본적으로 어셈블리 및 Perl 코드와 패킷 정도는 이해하셔야 하고.. 업데이트 되었을 때 떄려맞추기도 해야 하고 해서.. 전 지금 라그를 플레이하지 않고 있어서요.. 도움을 드리기는 힘들 것 같네요.

      양해 부탁드립니다. ㅠㅠ 즐거운 게임 하시길 바래요.

  19. 모상민 2008/10/29 15:48  댓글주소  수정/삭제  댓글쓰기

    안녕하세영 엔프로텍X 우회관련 뒤지다가 우연히 들린 유저에영
    한가지 질문요 ㅡㅜ 제가 완전 초보에영 컴파일은 어떻게 하는지 c++ 6.0 다운받아서 설치하긴 했는데 컴파일을 어떻게 하는지 ㅡㅜ 부탁드립니다.

  20. 모상민 2008/10/30 01:31  댓글주소  수정/삭제  댓글쓰기

    감사합니다 컴파일까지 성공하고 인자값 확인하던 도중 또막힙니다 ㅡㅜ
    플 님 께서 올려놓으신 스샷장면 두번째 카트라이더 같이 제가하는게임도
    홈페이지 에서 실행을 합니다 인자값 찾기 해봤더니
    1:/620013916969/dd46f4662ce6f927edb437854a4794c4/0/60/0/3/1024/768 이렇게 뜹니다. 어떤게 인자값일까용 ㅡㅜ;; 잘못 된건가영?조언점 부탁드립니다.

    • BlogIcon 2008/10/30 04:40  댓글주소  수정/삭제

      그렇게 출력되었다면 해당값이 인자값이 맞는 것 같네요~ 프로그램에 따라서 인자값을 문자열의 형태로 준 다음에 프로그램 내부에서 분리해서 쓸 수도 있을 것 같아요. 아마 중간에 숫자.. 는 유저번호? 나 뭐 그런거 같고 뒤에 영문은 해쉬코드같은걸로 인증키.. 같은 기능일 것 같고 뒤에 숫자들은 시스템 정보 (1024, 768 은 해상도..) 같네요.

  21. 흠냐.. 2008/12/11 01:14  댓글주소  수정/삭제  댓글쓰기

    테트리스를 뚫어보고 싶어서 해봤으나...이름바꿔 파일을 바꿔치시 했을때 Start 누르면...업데이트 하면서 ...강제로 바꿔버리네요..어떻게 하면 좋을까요?

    • BlogIcon 2008/12/11 06:32  댓글주소  수정/삭제

      한게임은 처음 실행할 때 메모리에 게임을 전부 얹어놓고 실행하는 것 같던데요. 옛날에 잠깐 사부작데본것이 다라서 자세히는 모르겠습니다 ^^;

  22. 이럴수가!! 2009/01/12 21:38  댓글주소  수정/삭제  댓글쓰기

    라그 게임가드가 강화되었는지
    플님께서 가르쳐주신 뛰어넘기 방법으로 안되네요
    파일업글해서 올려주실 생각은..