본문 바로가기

CAT-Security/미분류

[Secuinside2013] beist_attack_game_150







프로그램을 실행 시키면 다음과 같은 게임 화면이 나오게 됩니다.

점수 획득이 가능하며 1000점을 달성했을 시에 보스몹이 나오게 되고

그 보스몹의 피는 999999 입니다.


보스몹은 전체공격(?)을 시전해서 정상적인 방법으로

도저히 클리어가 불가능합니다.





보스몹 출현!!






보스몹의 피를 깍는건 거의 불가능 합니다.







현재 게임에서 볼수 있는 단서는 점수라고 생각하고

그 점수값이 1000점이 되었을때 새로운 함수가 실행 된다라는 생각이 들어서

점수를 중심적으로 찾아 보았습니다.


예상대로 1000점이었을경우 if문 안으로 분기해서 보스몹을 띄우는 루틴을 찾을 수 있습니다.





여러 루틴을 살피던 도중에 스코어 값이 20점이 되었을때 406450의 메모리의 값을

바꿔버리는 루틴을 찾을 수 있었습니다.




바뀐 이후의 메모리 값 입니다.





밑을 조금더 살펴 보게 되면은, 바뀐 값에 또 += 18로 바꾸는 것을 볼 수 있습니다.

그리고 그 밑에 406450 메모리의 값을 String에 넣고 TextOut 해주는것을 볼 수 있습니다.

999999의 피를 다 깍은 이후의 출력될 값으로 예상 됩니다.







메모리 값을 가져와서 +=을 해 줬습니다.





키값이 출력 됨을 확인 할 수 있었습니다.





치트엔진으로 메모리값만 바꾸어도 키값을 출력 합니다.






'CAT-Security > 미분류' 카테고리의 다른 글

[Codegate2014] dodoCrackme_200  (0) 2014.05.13
[Reversing.kr] Direct3D_FPS  (6) 2014.05.08
gdb 명령어 요약집  (0) 2014.04.28
[Defcon 21 ctf] policebox  (0) 2014.04.08
Python 예외처리  (0) 2014.01.09