티스토리

LCOMEBACK's Blog
검색하기

블로그 홈

LCOMEBACK's Blog

lcomeback.tistory.com/m

LCOMEBACK 님의 블로그입니다.

구독자
1
방명록 방문하기
공지 블로그 저작권 안내 모두보기

주요 글 목록

  • 안드로이드 게임 해킹 - 게임 코드 변조 下 Subtitle : Modify CIL Code during Run-time in Mono 전 장에서는 '보안 솔루션이 적용되지 않은' 유니티 기반의 안드로이드 게임에서의 게임 코드 변조를 다뤘었다. 이번 장에서 다루고자 하는 것은 '보안 솔루션이 적용 된' 유니티 기반의 안드로이드 게임에서의 게임 코드 변조인데, '보안 솔루션이 적용되지 않은' 것과 무슨 차이가 있는지부터 알아보도록 하자. 보안 솔루션이 적용되지 않은? 보안 솔루션이 적용된? 전 장에서는 게임 코드 변조를 위해 dnSpy를 이용하여 DLL 파일 내의 코드를 변조한 후, 변조된 DLL 파일을 원본 DLL 파일과 바꿔치기하는 방법을 사용했었다. 그렇다면 동일한 방법을 '보안 솔루션이 적용된' 것에 적용하면 어떻게 될까? 그림 1. DLL .. 공감수 7 댓글수 7 2017. 10. 17.
  • 안드로이드 게임 해킹 - 게임 코드 변조 上 '보안 솔루션이 적용된 유니티 기반의 안드로이드 게임에서의 게임 코드 변조'를 다루기 전에 먼저, '보안 솔루션이 적용되지 않은 유니티 기반의 안드로이드 게임에서의 게임 코드 변조'를 먼저 다루고자 한다. 우선 그림 1을 보면서 유니티 기반의 안드로이드 게임이 어떻게 만들어지고, 배포되고, 실행되는지부터 알아보도록 하자.(본 장에서는 Mono 기반의 유니티 만을 다룹니다. IL2CPP 기반의 유니티는 다루지 않습니다) 유니티 기반의 안드로이드 게임이 만들어지고, 배포되고, 실행되는 방식 그림 1. 유니티 기반의 안드로이드 게임이 만들어지고, 배포되고, 실행되는 방식 ① 유니티 기반의 게임은 C# 언어로 작성된다. ② 작성된 C# 파일들은 하나의 DLL 파일로 컴파일된 후, 배포된다. 작성된 C# 파일들은.. 공감수 8 댓글수 0 2017. 10. 16.
  • 안드로이드 게임 해킹 - 메모리 치팅 게임 해킹에 관심이 있으신 분이라면 한 번쯤 '치트엔진' 이라는 툴을 사용해 본 경험이 있을 것이다. 해당 툴에서 제공하는 기능은 아주 많지만, 그 중에서 가장 널리 사용되는 기능은 게임 내의 특정 값(게임 머니, 체력, 마나 등등..)이 저장된 주소를 알아내어 그 값을 변조시키는 기능이다. 이 장에서 다루고자 하는 것이 바로 이것, '메모리 치팅' 이다. 메모리 치팅은 '사용자가 원하는 대로 게임 데이터를 바꾸는 기술' 이라고 정의할 수도 있지만, 좀 더 컴퓨터공학적인 관점에서 본다면 '타 프로세스의 메모리 값을 보고, 바꾸는 기술' 이라고 정의할 수도 있다. 그럼 일단 첫 번째 문제, 어떻게 타 프로세스의 메모리 값을 보고(Read), 바꿀 수(Write) 있을까? 타 프로세스의 메모리 값을 보고(R.. 공감수 8 댓글수 0 2017. 10. 15.
  • 안드로이드 게임 해킹 - 무슨 함수를 후킹할 것인가 유니티 기반의 안드로이드 게임 속도를 조작하려면 무슨 함수를 후킹하여야 할까? 2장의 첫 부분에서 언급했듯이 스피드핵은 게임에서 사용되는 '델타 타임'이라는 개념을 이용하여 구현된다. 유니티에서는 이 '델타 타임' 값을 쉽게 구할 수 있도록 Time 클래스 내에 deltaTime 이라는 프로퍼티를 제공하는데(C# 기준), 해당 프로퍼티의 값이 무슨 함수를 통해 구해지고 있는지 알아내야 했다. 이를 위해 유니티 구동 파일(UnityEngine.dll, libunity.so)을 분석하였으나 정확한 하나의 함수를 찾는 데에는 실패하였다. 하지만 프로퍼티의 값을 구하기 위해 사용되고 있을 법한 몇몇 함수들을 찝어내는데에는 성공하였다. 그 목록은 아래와 같다. int clock_gettime(clockid_t c.. 공감수 1 댓글수 0 2017. 10. 12.
  • 안드로이드 게임 해킹 - 어떻게 함수를 후킹할 것인가 전 장에서, 스피드핵을 구현하기 위해 총 두 가지 일을 해야 하는 것을 알아보았다. ① 어떻게 함수를 후킹할 것인가② 무슨 함수를 후킹할 것인가 이번 장에서는 '어떻게 함수를 후킹할 것인가'를 다뤄보고자 한다. 안드로이드에서 함수를 후킹하는 방법은 여러 가지가 있다. 하지만 첫 장에서 언급했듯이 내가 하고자 하는 것은 '일반 어플리케이션'에 대한 해킹이 아닌, '보안 솔루션이 적용된 어플리케이션'에 대한 해킹이기 때문에 널리 사용되고 있는 후킹 기법은 사용할 수 없었다. 즉, 해킹을 성공적으로 하기 위해서 아무도 안 쓸 법한, 그리고 보안 솔루션에 의해 막혀있지 않을 법한 아주 마이너한 후킹 기법을 찾아내야만 했다.(물론 보안 솔루션 자체를 분석하여 이를 우회하는 방법 또한 있지만, 난이도가 너무 높아 .. 공감수 5 댓글수 3 2017. 10. 12.
  • 안드로이드 게임 해킹 - 스피드핵 제작을 위한 사전 지식 스피드핵, 게임의 속도를 사용자가 원하는대로 조절할 수 있게 해주는 툴이다. 일반적으로, 게임을 아주 빠르게 하여 오래 기다려야 될 것을 금방 끝나게 하거나, 게임을 아주 느리게 하여 게임 난이도를 낮추는 식으로 쓰인다. 이 스피드핵은 어떠한 방식으로 구현되는 것일까? 이를 알기 위해서는 스피드핵 동작을 가능케 해 주는 게임의 특성을 먼저 알아 볼 필요가 있다. 모든 게임은 특정 코드가 반복되는 형태로 실행된다. 아주 단순한 게임이 있다고 하자. 캐릭터가 일정한 속도로 달려가는 아주 단순한 게임이다. 해당 게임은 아마도 아래와 같은 형태의 코드를 가질 것이다. 단순히 캐릭터의 위치에 정해진 속도를 반복적으로 더해주는 방식이다. while{ character.xpos = character.xpos + sp.. 공감수 2 댓글수 0 2017. 10. 12.
  • 안드로이드 게임 해킹 - 개요 올해 4월부터 약 5개월 간 안드로이드 게임 해킹, 정확히는 '보안 솔루션으로부터 방어되고 있는 유니티 기반의 안드로이드 게임 해킹'을 주제로 연구를 진행하였다. 내가 맡은 부분은 스피드핵, 메모리 치팅, 게임 코드 복호화 및 변조 였고 개인적인 사정으로 연구를 그만두게 되어 인수인계 겸, 정리 겸 해서 여기 블로그에 내가 해 왔던 것들을 남기고자 한다. 목차는 아래와 같다. 1. 개요2. 스피드핵 제작을 위한 사전 지식 2-1. 어떻게 함수를 후킹할 것인가 2-2. 무슨 함수를 후킹할 것인가3. 메모리 치팅4. 게임 코드 변조5. 게임 코드 복호화 * 이 글은 유니티에 대한 약간의 이해와 리버싱 경험이 있는 독자를 대상으로 쓰여졌습니다 공감수 3 댓글수 0 2017. 10. 12.
  • 라피스 컨트롤을 해보자 - 모션 下 저번장에서, '②와 같은 상태' 에서는 3가지 행동 즉, 첫째로, 평타를 쓸 수 있습니다. 둘째로, 타인에게 약초를 써줄 수 있습니다. 아쉽게도 본인에게 쓰는건 안됩니다. 셋째로, 키보드만으로도 쓸 수 있는 스킬 중, 타인을 목표로 하는 스킬을 쓸 수 있습니다. 위의 3가지 행동을 할 수 있다고 했었습니다. 음, 과연 3가지 뿐일까요? 일단 모션이 보통 몇초간 지속되는지를 알아야 합니다. 캐릭터 별로 다르지만 평균적으로 스킬모션은 1.5초 평타모션은 0.75초 경직모션또한 0.75초 정도 지속되는걸로 알고있습니다. 확실히 재본것도 아니고 감으로 말씀드리는 거라 조금 다를수도 있지만, 여튼 저정도 지속됩니다. 그럼, 만약 스킬모션이 1.6초인 캐릭터가 이 때 스킬을 씀으로써 위와 같은 모션을 가진다면? 그.. 공감수 2 댓글수 2 2015. 2. 26.
  • 라피스 컨트롤을 해보자 - 모션 上 기본 컨트롤 - 무빙 에서는 나는 맞지 않으면서, 다른 무언가를 할 수 있는 기술을 배웠었습니다. 하지만 실제로 다른 무언가를 하도록 허용된 시간은 아주 짧은 시간, 즉, (검은선 : 틱이 차는 순간, 녹색면 : 이동을 하고 있는 순간) 위와 같이 이동을 할 경우, 실제로 다른 무언가를 하도록 허용된 시간은 위의 형광색면과 같이 아주 짧습니다. 실제로는 더 짧겠죠, 잘보이라고 과장해서 크게 칠했습니다. 여튼, 다른 무언가를 하도록 허용된 시간은 아주 짧습니다. 만약! 아주 만약에, 위의 형광색면과 같이, 다른 무언가를 할 수 있는 시간이 좀 더 많이, 1초가량 주어진다면? 물론, 나는 맞지 않는 상태, 즉 이동중인 상태에서 말입니다. '모션'을 잘 이해하고 있다면 충분히 가능한 기술입니다. '모션'은 뭘.. 공감수 1 댓글수 0 2015. 2. 26.
  • 라피스 컨트롤을 해보자 - 간합조절 下 전 장에서는 법칙 1. 땅에 닿는 순간이 더블틱이 되게끔 하라 를 배웠습니다. 상대방의 공격 범위 안에서 땅에 닿는 순간을 최소화 하는 동시에, 스킬을 쓸 수 있도록 해주는 법칙이였죠. 하지만 위 법칙에는 치명적인 단점이 있습니다. 땅에 닿자 마자 더블 공격을 할 수 있다는 건, 땅에 닿자 마자 역으로 더블 공격을 당할 수 있다는 것과 같습니다. 정말 치명적입니다.. 그럼, 이 장에서는 위 단점을 극복할 수 있는 또 하나의 법칙, 법칙 2. 상대를 관찰하라 를 배워보도록 하겠습니다. 일단, 법칙 1의 치명적인 단점. '땅에 닿자 마자 더블 공격을 할 수 있다는 건, 땅에 닿자 마자 역으로 더블 공격을 당할 수 있다는 것과 같습니다.' 당하는 모습을 한 번 봅시다. 25초부터 보시면 됩니다. ㅂㄷㅂㄷ.. .. 공감수 1 댓글수 0 2015. 2. 24.
  • 라피스 컨트롤을 해보자 - 간합조절 上 안녕하세요. 겨울방학때 글 계속 이어간다고 해놓고 간거같은데, 겨울방학 끝나기 10일전에 글쓰기 시작하네요. 핑계라면 핑계지만, 손 굳은 상태로 잘하지도 못하는데 이래라 저래라 하기 좀 그래서 실력 되찾고 쓴다는게 이렇게나 미뤄질줄은... 슬슬 손도 다 풀려가고, 10일안에 최대한 많이 쓰고 가도록 하겠습니다. 일단 글 쓰기 전에 비병 스페셜 ver.2 만들었는데 구경 한번씩 하고 갑시다! 그냥 글 쭉 읽는거보다 영상 한 번 보고 읽는게 의욕도 더 생기고 좋지 않겠어요. 재밌으면 구독, 따봉 ㄱㄱ 아, 그리고 지금부터 쓸 내용은 응용 부분이라, 조금 어려울 수 있습니다. 이해가 잘 안된다면 기본컨트롤 부분 확실하게 이해하시고 대련 며칠, 몇달?.. 하다가 오시면 아 이걸 말하려 했던 거구나! 라고 느끼실.. 공감수 1 댓글수 1 2015. 2. 24.
  • 라피스 컨트롤을 해보자 - 불꽃샷 클릭속도. 라피스 대련에서는 꽤나 중요한 요소입니다. 보병vs보병, 궁병vs궁병, 승려vs승려 같은 경우, 먼저 때리거나, 먼저 마법봉인을 건 쪽이 이기게됩니다. 굳이 위와 같은 한방전 뿐만 아니라, 서로서로 마지막 한 대를 남기고서 먼저 치는쪽이 이기는 것과 같은 상황이 자주 발생합니다. 그럼 보병vs보병의 경우, 가만히 서서 상대방이 범위 안으로 올 때까지 대기하는사람이 유리할까요? 아니면 상대방의 범위 안으로 들어가서 소닉블레이드를 날리는 사람이 유리할까요? 전자를 '대기하는자', 후자를 '뚫는자'라 하겠습니다. 다들 아시다시피 라피스에서는 스킬을 쓰기 위해 ① 스킬이 할당 된 키를 눌러 스킬활성화를 시킨 후에, ② 원하는 지점을 클릭 해야 스킬이 발동됩니다. '대기하는자'는 미리 스킬활성화를 시켜.. 공감수 3 댓글수 0 2014. 8. 29.
  • 라피스 컨트롤을 해보자 - 꺾기 창병, 수병, 비병, 기병, 승려와 같이 이동거리가 긴 캐릭은 1.5초정도, 보병, 궁병, 신관, 사교, 법사와 같이 이동거리가 짧은 캐릭은 0.8초정도, 라피스에서는 모든 캐릭터가 0.5초~1.5초간의 무적시간을 가질 수 있습니다. 이동 중인 캐릭터는 때릴 수가 없기 때문이죠. 그럼 만약, 이동을 마치고 또 곧바로 이동을하고, 또 이동을 마치고 곧바로 이동을 하는식으로 계속 이동을 한다면, 아무도 때릴 수 없으니 그 캐릭터는 평생 무적일까요? 그렇다면 좋겠지만 이동을 마치고, 또 다음의 이동을 하기 위해 다른 칸을 클릭하기까지의 그 순간이 0.1초라도 존재하기 마련입니다. 즉, 아무리 연속해서 이동을 한다 해도, 잠시 땅을 밟는 그 순간이 0.1초라도 존재한다는 것이고, 상대방이 나를 칠 수 있는 순간.. 공감수 1 댓글수 0 2014. 8. 25.
  • 라피스 컨트롤을 해보자 - 이동시 타격 기준점과 흘리기 저번엔 무빙에 대해 배웠습니다. 안봤으면 보고오기 그럼, 이 상황에서 법사가 빨간점으로 이동하면서 리버스를 쓴다면(무빙 리버스) 상대방은 맞을까요? 안맞을까요?? 스킬은 써지되, 무조건 미스가 뜹니다. 라피스에선, 이동과 동시에 일어나는 모든 일은 도착점을 기준으로 계산됩니다. 즉, 위 상황에서 서버는 '초록색' 점에서 스킬을 쓴 게 아닌 '빨간색' 점에서 스킬을 쓴 걸로 이해하고, 그에 따라 타격 판정을 합니다. 상대방이 무려 9칸이나 멀리 떨어져 있으므로, 즉 상대방이 스킬 범위 밖이므로 무조건 미스가 뜨게 되는 것이죠. 이 법칙은 위와 같이 범위스킬에만 국한된 것이 아닌 단일 대상 스킬, 예를 들어 소닉블레이드라던가, 바이블이라던가, 아이스스트라이크라던가.. 이러한 스킬에도 적용이 됩니다. 즉, 아.. 공감수 1 댓글수 1 2014. 8. 21.
  • 라피스 컨트롤을 해보자 - 무빙 무적. 라피스에선 누구나 1초정도의 무적시간을 가질 수 있습니다. 당장 사냥을 하더라도 내 캐릭터가 이동하고 있는, 그 순간에는 절대 맞지 않죠. 뭐 이동이 끝나고 도착하는 그 순간엔 몬스터한테 두들겨 맞겠지만; 대련할때도 마찬가지로, 내가 이동하고 있는 그 순간에는 상대방이 아무리 광클을해도 날 공격할 수 없습니다. 다만, 나 또한 공격을 할 수가 없죠. 물론 물약을 먹거나 하는 행위도 불가능하고 즉, 이동하는 그 순간에는 때리지도 맞지도 못하는 상태가 됩니다. 만약 나는 맞지 않으면서, 때리는게 가능해진다면? 맞지 않으면서, 버프를 쓰는게 가능해진다면? 물약을 먹는게 가능해진다면? 캬~ 유저님들도 아시다시피 라피스에는 '무빙'이라는 기술이 있습니다. 이동하는 그 순간에 나는 맞지 않으면서, 다른 무언.. 공감수 1 댓글수 1 2014. 8. 17.
  • 라피스 컨트롤을 해보자 - 더블틱 감각 익히기 일단 복습 더블틱 = 틱이 차기 직전에 뭔가를 하고, 곧바로 또 뭔가를 할 수 있는 상태로 만드는것 그럼 이 틱이 차기 직전은 어떻게 잡아내냐! 제일 좋은 것이 머리속에서 자동으로 1.5초마다 틱 틱 틱 거릴정도로 1.5초의 감각에 익숙해지는 것입니다.(1틱 = 1.5초) 시계를 가져와서 0초가되면 눈을감고 10초를 세어봅시다. 8... 9... 10! 하면서 눈을 뜨면 시계바늘이 10초를 가리키고 있겠죠? 그럼, 이제 다시 0초가 되면 눈을 감고 1.5초를 기준으로 10번을 세어봅시다. 8번.. 9번.. 10번! 하면서 눈을 뜨면 ㅜㅜ시계바늘이 15초를 가르키고 있다면 좋겠지만 잘 안될거에요. 잘되면 곧바로 뒤로가기 누르고 대련하러 가시면 됨. 이 1.5초의 감각을 익혀야 더블틱의 타이밍을 잡아낼 수가.. 공감수 1 댓글수 1 2014. 8. 17.
  • 라피스 컨트롤을 해보자 - 더블틱 더블틱? '보통' 더블틱을 연속 두번 공격하는거라고들 말하죠. 틀린 말은 아닙니다! 하지만, 더블틱을 이용하여 할 수 있는일은 정말 무궁무진하게 많습니다. 목차에 뭐 불꽃이니 꺾기니 기준점이니 휘황찬란하게 갈겨놨는데, 더블틱에 비하면 정말 쓰잘데기 없는 것들일뿐, 더블틱을 할 줄 모른다면 무용지물인 내용들입니다. 더블 틱. Double Tick. 2번의 틱? 으 여튼 기본적으로 틱에 대해 이해를 해야합니다. 아시다시피 라피스는 '틱' 기반 게임입니다. 어떠한 행동을 하면 그에 걸맞는 틱이 소비됩니다. 평타를 치면 1틱, 스킬을 쓰면 1틱, 물약을 먹으면 1틱, 이동을 하면 틱이 닳기도하고 안닳기도하고.. 그리고 이렇게 소비된 틱은 1.5초마다 하나씩 다시 차게되죠. 공격, 스킬을 한 번 쓰면 틱이 다시 .. 공감수 2 댓글수 0 2014. 8. 17.
  • 라피스 컨트롤을 해보자 - 프롤로그 안녕하세요. LCOMEBACK 입니다. 방학이 되고, 마을에 좌판이 점점 늘어가는걸 보니 나름 기분이 좋아지다가 파렌 렙업소리만 들리는 대련장에 오니 너무 씁쓸해져서 유저님들 대련좀 같이 즐기자고 이렇게 꼬셔봅니다. 일단, 얼마 전에 만든 비병 스페셜 영상이라곸ㅋ 나름 재밌어보이는 대련영상만 짜집기해서 만든 영상인데 한번 보고 갑시다. ㅋㅋ 재밌죠. 나만 재밌나; 대련할사람이 너무너무 없어서 직접 /마을치고 보이는 10단유저분들한테 대련좀하자고하면 대다수 유저분들은 대련이 어렵다고 ㅜㅜ 그러시더군요 저도 처음엔 대련이 너무 어려웠고 대련장에 오면 용병으로 성만들어서 ㅎㅔ헿 거리면서 놀았었는데 운좋게도 컨트롤 잘하는 분이랑 친해져서, 여러가지를 배우게 되니까 다른게임은 절대 못하겠더군요! 평소 대련을 하고.. 공감수 4 댓글수 0 2014. 8. 17.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.