코드난독화 :: 해커를 엿먹여보자#

홈 > 안드로이드 > 안드로이드
안드로이드

코드난독화 :: 해커를 엿먹여보자#

S 코드몽키 49 5638 5

얼마전 에셋스토어에 AntiCheat Tool Kit 이 세일을 하길래 냅다 질러봤습니다.

해커들을 막는 보안솔루션이라고 거창하게 광고를 하길래 호기심에 지름신 강림!


어떤 기능들이 있는지 둘러봤다.


Assembly-Csharp.dll 이 잘 뽑혔는데 당췌 코드를 분석할수 없는 사태에 빠지게 된다면..??

그보다 더 허탈한 일은 없을것이다.



위 스샷을 보면....  result 문이 실행면 카드뽑기  실행된다는것을 알수있다. 
해커들이 위 코드를 해킹하게되면 .. 대충 아래와 같은 스샷으로 해커들에게 보여지게 된다. 

 아래 스샷은 난독화 1차 적용을 하였지만 ..메소드명 및 클래스명정도만 가려져 코드추출 후 인자 추적을 하면 해킹이 불가능한 수준은 아니라는것을 알 수 있다.

넥슨에 계셨던 지인이 이정도 난독레벨을 적용 후 출시한 게임을 본인이 해킹 성공하기까지 5시간정도 걸렸었다.. 불가능한게 아니란걸 시간과 몸으로 때워 증명했다 (ㄷㄷㄷ개노가다)


결론: 이정도 코드 난독화 수준으로는 해커의 노가다와 집중력에 의해 충분히 코드의 실행순서 및 경로 유추가 가능하다는것. 재밌는점은 코드 extract 후 난독이 된 상태의 코드를 노트패드++에 올려 string 검색을 하면 해당 string이 검색이 된다는점.(난독이 걸려있는상태지만 신기하게 해당 string을 가르키더라)

난독화 레벨을 좀더 올려보도록 하자.
메소드명과 실행 구문들 사이 사이에 외계어처리를 하여 당최 뭔말인지 알아먹기 힘들수준이 되어가고있다.
코드를 짠 본인조차 이게 뭔말이여?? 하는 수준이 되가고 있다.

중간에 FAKE CODE 를 삽입하여 실행구문과 관계 없는 해커를 혼동 시키기위한 지뢰까지 심어보았다.
 


아래 스샷을 보면 이미 코딩이아니라 ET가 짠 외계어 내지 고대 이집트 상형문자(?!)수준이 되버렸다. 이쯤되면 슬슬 해커는 마우스를 집어던지고싶은 충동을 느끼기 시작한다.


확.인.사.살. 마무리!
 


난독화를 모든 메소드 및 실행구문에있어서 할수있는 만큼 최대로 적용해 보았다.
해커에게 보여지는 클래스, 메소드명부터 실행구문까지 코드를 알아볼수 없을정도로 박살내고 뭉개놓는다.
코드 실행에는 아무 지장이 없으며 해커짱은 게임을 힘들게 디컴파일에 성공해도 해킹시도시점에서 이미 좌절하고 덮게 될 것이다. 그러나 볼륨이 큰 게임일수록 위의 방법은 알수없는 오류와 충돌이 생길수있다고하니 현업에서 자주쓰이는방법은 아닌거같다
(실제로 위 방법이 적용된게임을 본게 한손에 꼽을정도..그것도 전체 적용이 아닌 중요 클래스와 메소드에만 부분적용을 시켰더라..)

아래 스샷에 맨 처음 스샷에 Rename 해둔 SecuredResult 로 표시 되는것을 볼 수 있다. 
(코드 내부적으로는 Result 로 실행이 된다)
그나마 우리가 알아보기위해 SecuredResult 로 정해둔거지 좌측처럼 [][][][][][][][][][][]() 난독화 후 통상 이런식의 메소드명으로 보이게 해뒀다.

 특수문자 아스키코드 영/숫자 무작위 배치등 .. 어느것이든 좋지만 본인은 개인적으로 [][][[[[]]]] 이런식의 깔끔해보이는 배치가 보기좋더라 ㅎㅎ

하단의 읽을수 있는 한글 부분의 String 난독도 가능하지만 어차피 로그찍는부분이라.. 코드상에서 지워도되는 무방한 부분이므로 이해를 돕기위해 냅뒀다

이정도까지 변태적으로 코드난독화가 적용된 게임은 아직 본적이 없지만
-이렇게까지 하는 보안 변태가 있을까싶지만; 
이렇게 출시된 게임이 나타난다면... 나라면 조용히 덮겠다 ㅎㅎ;
 

49 Comments
S 코드몽키 2019.10.03 18:19  
저는 변태가 싫어요 ㅎㅎ
2 sjyim09141 2019.10.03 18:51  
어우야 ㄷㄷ
이런 글 보면 코딩이 배우고싶네요...
1 leo22 2019.10.03 21:10  
네 선생님은변태세요 ㅎㅎ
S 코드몽키 2019.10.03 23:48  
크흠.. 저는 변태라는 이름의 신사일 뿐입니다
2 마루야 2019.10.03 22:23  
와 대단하십니다..
5 Kira 2019.10.03 23:52  
와우 ㄷㄷ..... 저런거보면 멘탈 나갈듯 ㄸㄹㄹ .. 그냥 C#만봐도 힘든데 ㅜ
3 배움 2019.10.04 14:56  
자, 이제 누가 변태인지 말해봅시다
S 코드몽키 2019.10.04 21:24  
도대체 누구죠(엄격,근엄,진지)
2 왕기 2019.10.04 18:34  
전혀 알아보지 못하겠네요
17 티카 2019.10.04 21:12  
크흠, 이해해보려고 노력중...;
3 민크갓 2019.10.05 01:19  
봐도 뭔말인지 하나도 모르겠네요 ㅠ
1 我不给你 2019.10.06 04:02  
어....음.... 이해가 안돼요...

Congratulation! You win the 8 축하드립니다! 당첨되셨어요~!

1 밥보 2019.10.11 04:29  
그냥 변태들의 리그 인건가요??
3 뾰족 2019.10.17 16:43  
3번째 모양까지도 되는 군요 ^^~
7 쿠리얀 2019.10.19 05:54  
난독화 해체법은 보통 어떻게하죠?
2 하롱쥐 2019.10.20 02:15  
음......... 뭔말인지 모르겠지만 변태인건 알겠어요 ^^ 변태..
3 최삽질 2019.10.29 15:19  
babelfor.net 난독화툴 쓰고있는데 괞찮은 툴일까요?
1 PGping 2019.10.29 20:54  
한국말이지만.. 이해 못하는 한국말이군요;;
2 에스트 2019.11.04 12:42  
별로네요 ㅇㅇ
1 Nickel 2019.12.03 20:29  
그냥 봐도 모르겠는대 난독화하니까 아예 모르겠네요 ㅋㅋ
2 95grit 2019.12.06 23:58  
감사합니다
2 빙굴 2019.12.12 07:58  
와우 ㅋㅋㅋ직접 당해보면 황당할듯
2 songod 2019.12.19 17:10  
감사합니다.
S Dhhd 2020.01.04 12:51  
감사합니다
1 ab1313 2020.01.06 10:09  
감사합니다
1 케록 2020.01.08 16:40  
린엠이 저런거 아닌가요?ㅎ
13 Rohas 2020.01.09 16:13  
감사합니다!

Congratulation! You win the 7 축하드립니다! 당첨되셨어요~!

4 stuhkg 2020.01.19 06:07  
저는 변태가 싫어요 ㅎㅎ
1 지안 2020.01.27 08:44  
흥미로운 내용이네요 ㅎ
1 HACK2R 2020.01.29 09:30  
감사합니다!
2 Blueblood 2020.02.18 20:42  
좋은 정보 감사합니다.
2 psg4078 2020.02.26 15:29  
말이안나오네요 저런걸 실제로 많은 게임이 쓴다면 모드 핵을 만드는데 힘들겠죠?
2 빵야빵야 2020.03.30 23:28  
이렇게 난독화를 하는거군요.. 감사합니다.
5 rubybox 2020.03.30 23:53  
ㅋㅋㅋㅋㅋ 저걸 진짜 무리해서 풀어내는 변태도, 저렇게까지 하는 변태도 있을것 같긴 하네요
7 래바리 2020.04.03 18:48  
감사합니다.
1 레이라이 2020.04.10 22:54  
여윽시 신사 코몽님 ! 성지순례 왔습니다
2 mandalake 2020.04.10 22:55  
역시 멋지십니다~

Congratulation! You win the 1 축하드립니다! 당첨되셨어요~!

7 임중호 2020.05.23 22:53  
감사합니다~
7 임중호 2020.05.24 01:27  
저걸 진짜 무리해서
4 쿨록 2020.08.07 19:15  
봐도 뭔말인지 하나도 모르겠네요 ㅠ
1 공백없는아이디 2020.09.09 21:23  
감사합니다!
1 수정이수정이 2020.09.09 23:08  
뭔말인지 ^^;;;
1 jiyu 2020.12.01 15:45  
어렵네요 ㅠ
1 남군 01.26 15:16  
잘보고갑니다
1 미쓰라준 02.04 18:05  
이렇게 메소드랑 클래스명 바꿔놓으면 유지보수는 어떻게 할까라는 궁금증이 생깁니다. ㅎㅎ
1 Proxima2 02.04 18:38  
컴파일할 때 코드를 보기 어렵도록 하는 거 같은데 유지보수가 왜 나오는지 모르겠네요
1 영찬군 02.05 21:45  
역시 게임만들때 난독화는 필수인거 같아요
1 지구를지켜라 04.02 09:47  
대단하신 분들이 참 많으십니다 ㅎ
1 Zl혜ㅉ6 04.07 16:43  
대단하시네요!!