[오토핫키] 쿠키런 매크로방지 뚫기(우회)

Posted by Readiz
2014.02.14 14:52 연재/오토핫키



AutoHotkey(오토핫키)로 쿠키런 매크로방지 뚫기


  쿠키런에 갑작스럽게 매크로방지가 생겼습니다. 사실 예상할 수 있었던 패치이긴 하지만, 오토핫키를 이용하면 왠만큼의 방지로는 매크로 돌리는 것을 막을 수 없을 것입니다. 이 글에서 전제로 하는 것은 블루스택을 이용해서 쿠키런을 돌릴 때를 전제로 하는 것이구요. 그 방법에 관해서는 아래 글을 참조하시기 바랍니다. 



  이 글에서 다룰 것은 오토핫키의 이미지서치를 이용하는 방법이구요, 아래와 같은 이미지가 필요합니다만 이 이미지는 돌리는 컴퓨터의 그래픽카드에 따라 달라지기 때문에 직접 찍으셔야 합니다. 아래와 같은 이미지가 필요합니다.




  위 이미지를 인식해서 미니게임을 깨보도록 하겠습니다. (이미지는 C:\hotkey\game.bmp 에 저장합니다)


	
F12::
imagesearch, x1, y1, 0, 0, 1300, 900, *50 c:\hotkey\game.bmp
if (ErrorLevel=0) {
  fMacroCheck()
}
return

fMacroCheck() {
  fCardClick(1)
  fCardClick(2)
  fCardClick(1)
  fCardClick(3)
  fCardClick(1)
  fCardClick(4)
  fCardClick(1)
  fCardClick(5)
  fCardClick(1)
  fCardClick(6)
  fCardClick(2)
  fCardClick(3)
  fCardClick(2)
  fCardClick(4)
  fCardClick(2)
  fCardClick(5)
  fCardClick(2)
  fCardClick(6)
  fCardClick(3)
  fCardClick(4)
  fCardClick(3)
  fCardClick(5)
  fCardClick(3)
  fCardClick(6)
  fCardClick(4)
  fCardClick(5)
  fCardClick(4)
  fCardClick(6)
  fCardClick(5)
  fCardClick(6)
  return
}
fCardClick(card) {
  if (card=1) {
    mouseclick, left, 390,245
  } else if (card=2) {
    mouseclick, left, 535,245
  } else if (card=3) {
    mouseclick, left, 688,245
  } else if (card=4) {
    mouseclick, left, 390,400
  } else if (card=5) {
    mouseclick, left, 535,400
  } else if (card=6) {
    mouseclick, left, 688,400
  }
  sleep, 300
  return
}
 
	

 원리는 간단합니다. F12키를 누르면 매크로방지 기능이 작동했는지 확인하고 작동하고 있으면 나올 수 있는 모든 조합을 눌러서 깨는 것이죠.. 사실 이미지서치를 사용하면 실제로 플레이 하는 것처럼 카드를 맞춰보는 수도 있습니다만 그렇게까지 할 필요는 없거든요. 


  쿠키런의 매크로 방지 기능이 더 강력해지면 다시 뚫는 법을 가지고 돌아오겠습니다. 궁금한점 있으면 질문해주세요 :) (비밀글은 다른 사람들에게 공유가 안되니 비밀글로 댓글주시면 답변 안달릴 수도 있습니다)




PS. 위 코드는 '매크로 방지를 뚫는' 부분입니다. 게임을 진행하게 하는 매크로는 직접 제작하셔야 합니다. 게임 진행하다가 위 코드를 삽입해주면 매크로방지가 실행되었을 때 자동으로 뚫고 계속 진행합니다.


저작자 표시 비영리 변경 금지
신고
이 댓글을 비밀 댓글로
  1. 이전 댓글 더보기
    • 2014.03.16 23:57
    비밀댓글입니다
    • 전체를 loop로 감싸셔야합니다..
      http://blog.readiz.com/140
      이 글 하단부에 제가 단 코멘트 참고해보시면 도움이 되실겁니다.
    • 2014.03.17 16:13
    비밀댓글입니다
    • return은 함수를 끝내버리는 구문입니다.
      중간에 이걸 만나면 당연히 멈추겠죠? ^^;
      매크로 방지 부분은 함수로 따로 구현하셔서 호출하는 식으로 구현하는 것입니다. 함수개념이 없으시면 작성하시기 힘드실 겁니다.
    • 때보
    • 2014.03.18 08:45 신고
    단순터치 + 이미지서치로 매크로 우회 + 곰클릭 까지는 각각 완료 하엿습니다.
    자 이제... 단순터치에서 A이미지를 만낫을때 A1의 함수를 불러오는 것을 알려주세용!!
    B이미지를 만낫을때는 B1함수...
    그러면 완벽하게 매크로 만들듯 ㅋ
    • function A() {
      ...작업들...
      return
      }
      function B() {
      ...작업들...
      return
      }
      imagesearch, x1, y1, 0, 0, 1300, 900, *50 c:\hotkey\a.bmp
      if (ErrorLevel=0) {
      A()
      }
      imagesearch, x1, y1, 0, 0, 1300, 900, *50 c:\hotkey\a.bmp
      if (ErrorLevel=0) {
      B()
      }

      참고하세요.
    • 때보
    • 2014.03.18 21:54 신고
    감사합니다 ^^ 함 연구 해볼게요 ^^
    • 2014.03.19 16:32
    비밀댓글입니다
    • 2014.03.24 18:01
    비밀댓글입니다
    • 어쩌다보니 여기저기 답변하면서 제 밑천을 다 털어낸 것 같군요.. ㅋㅋ
      고생하셨어요.
  2. 저프로그램공유좀요
    • 다 구글링 하시면 나오는 프로그램들입니다...
      이 블로그에서 공유는 좀 힘듭니다. ㅎㅎ
    • 꾸루릉
    • 2014.03.30 11:13 신고
    F12::
    imagesearch, x1, y1, 0, 0, 1300, 900, *50 c:\hotkey\game.bmp
    if (ErrorLevel=0) {
    fMacroCheck()
    }
    return

    여기서 1300, 900은 뭘 나타내는 건가요?
    • 창 크기요~
      저는 정확하겐 계산 안하고 대충 1300 900정도 되어서 그렇게 적용했구요,
      블루스택 창 크기는 사람마다 다를거라고 봅니다. 글에서 한번 소개했었을텐데 window spy로 창크기 보신담에 적용하면 됩니다.
    • 2014.03.31 12:28
    비밀댓글입니다
    • 코드
    • 2014.04.06 04:41 신고
    fMacroCheck()가 함수를 포함하지 않고 있다는데 추가적인 스크립트가 필요한 건가요?
    • 밑에 fCardClick함수가 또 있는데 못보신듯..
      그리고 저거 자체로는 의미가 없고 다른 스크립트랑 같이 합쳐져 돌아가야 완성되는 겁니다.
    • 코드
    • 2014.04.06 13:52 신고
    네 저대로 하니까 다른 스크립트가 필요할 것 같더라구요.
    fCardClick 함수가 있어도 저대로만 쓰면 포함하지 않다고 떠서 댓글 달아봅니다ㅎㅎ
    • 내부를 보시면.. 읽어보시면 다른 스크립트는 쓴게 없지 않나요?;
      함수 자체가 공개돼 있는데 제가 다른 스크립트를 썼다고 하시니 난감하네요;;
      다른 스크립트에서 불러와야 되는데 호출을 안하신건 아닌지요? 아무튼 저 알고리즘 자체는 따로 필요한 스크립트 없습니다.

      만약에 다 맞게 했는데도 그런거면 그건 오토핫키 오류구요.
    • 코드
    • 2014.04.06 14:57 신고
    제 뜻은 그런게 아니라
    제가 호출헝식이 아니라 F12::를 제외한 나머지 스크립트만 썼을때 안된다는 겁니다
    결론은 제 스크립트가 안된거죠

    지금은 함수 루틴이 어려워 gosub으로 돌리고 있습니다.
    질문 하나만 더 해도 될까요?
    돌리다보면 쿠키런 자체가 멈추는현상이 있어서
    그 방안으로 블루스택을 재시작하고 싶은데
    블루스택을 종료하고 재시작하는 명령어가 일을까요?

    Settimer와 run을 이용하면 될것같은데 종료는 어떤 명령어가 있을지요?
    • http://www.autohotkey.com/board/topic/49732-kill-process/

      도움이 확실히 되실듯한 페이지입니다.
      부연 설명은 필요 없을거라 봅니다. ^^
    • 2014.04.11 01:34
    비밀댓글입니다
    • 말 그대로 함수 안에 함수 포함 안되게 짜시면 될 것 같은데요.. 함수 선언이 시작되면 그 안에 다른 함수를 선언하면 안됩니다. 지금 이 글에 있는 함수 자체는 문제가 없는데 아마 다른 것을 포함하신 것 같습니다..?
      아니면 다른 함수 안쪽에다가 이 코드를 넣으셨거나..
    • 정창일
    • 2014.04.30 18:49 신고
    안녕하세요.. 다름이아니라 이걸 어떻게 해야하는지 궁금해서요..



    F10:: pause

    F12::

    mouseclick, left, 965, 608

    sleep,1000

    mouseclick, left, 965, 608

    sleep, 8000

    loop, {
    MouseClick, left, 157, 603

    sleep, 400

    MouseClick, left, 155, 122

    sleep, 400
    }



    이렇게 게임 시작하고 왼쪽 아래 클릭해서 무한점프 하는것까지 만들었거든요??

    근데 쿠키가 죽기전에 끝내야하는데 죽고도 계속 점프 버튼을 연타합니다

    쿠키가 죽기전에 무한점프 매크로를 끝내고 다른 스크립트로 넘어가게 하는 방법좀 알려주실수있을까요?
    • 관련글에 이미지서치 참고하시기 바랍니다.
      게임종료를 인식시키고 무한루프를 끝내게 해야합니다.
    • drrobot
    • 2014.05.04 13:05 신고
    제가 일단 게임 시작이라던지 점프라던지 등등 매크로 틀은 다 만들고 매크로 방지를 뚫으려고 하는데 위에있는 명령어는 그냥 복사해서 제가 만들어논 loop 구문 안에 붙여넣으면 되는 건가요?
    그리고 저 위에서 return의 역할이 뭔가요. 꼭 필요한 건가요?
    • 저 구문만으로 돌아가는 것이 아니니 이전 함수로 복귀하는 것이 return입니다. 어차피 함수 끝나면 자동으로 끝나니 이 경우는 없어도 상관은 없습니다만 다른 언어를 사용하던지라 습관처럼 붙이는거죠 뭐.. 리턴값 없으면 안써도 지장 없습니다.
    • 2014.06.04 20:48
    비밀댓글입니다
    • 2014.09.17 21:45
    비밀댓글입니다
    • 2014.09.19 15:53
    비밀댓글입니다
    • 2015.02.14 15:29
    비밀댓글입니다
    • 궁금
    • 2016.09.20 17:46 신고
    궁금한게 있는데 한번 틀리면 처음부터 다시 시작하는 것으로 되있는데 이러면 맞출 확률이 많이 낮아서 시간이 오래 걸리지 않나요?

티스토리 툴바