cgy12306

Direct3D 본문

Reversing

Direct3D

cgy12306 2019. 7. 30. 08:32
Direct3D 파일이  패킹이 되어있는지 확인해보자.


패킹이 안되어 있다.

정훈이랑 올리디버거로 프로그램을 실행시켰을 때 엔트리 포인트가 달랐다.
정훈이가 ASLR 걸려있는 것 같다는 추리를 듣고 인터넷에 ASLR이 걸려있는지 확인하는 방법과 해제하는 방법을 찾았다.

PE view로 파일을 열고 IMAGE_OPTIONAL_HEADER에서 DYNAMIC_BASE를 확인할 수 있다. 동적으로 BASE를 변경해준다.



000015E에 8140이라 적혀있는 부분에서 40을 00으로 바꿔준다.




바꿔주면 아래와 같이 주소가 00403ECD로 바뀌는걸 볼 수 있다.  이렇게 엔트리 포인트가 고정이 되면 IDA로 정적 분석을 할 때 편하게 분석을 할 수 있다.



우선 HP를 변경을 하고 싶은데 10이라는 숫자가 어딘가에 담겨 있을 것이다. 10은 헥스로 A이고 ASCII코드로 바꾸면 0x31이다. 
A를 한참 찾다가 열받던 도중 정훈이가 DS를 유심히 살펴보라는 힌트를 던져줬다.
덤프창에서 00407020  지점을 보게 되면 A라는 값이 들어가 있다.




A라는 값을 FF로 바꿔 보았다.



HP가 255로 변하는걸 볼 수 있다. HP를 채운상태로 고구마를 조져보자.



고구마를 다 구워먹고나니 Congratulation~ Game Clear! Pass word is Thr3EDP3??이 적혀있다.
고구마를 잡으면 원래 있던 값이 정상적인 문자로 반환하는걸 알 수 있었다.
저 한자를 다른 글자로 바꿔야한다. 

저 한자를 어떻게 바꿔야 할까.

고구마를 더 잡으면 한자가 바뀔 것 같은데 이미 보이는 고구마는 다 잡았다.

여기서 의심이 드는 점은 저 이상한 둠과 벽.
벽과 둠안에 고구마가 있지 않을까 의심을 해봤다.

그러면 우리는 벽을 다 없애면 된다. 
즉, 벽을 생성하는 함수를 뛰어 넘으면 된다.


이 지점에서는 반복문이 엄청나게 많이 돈다. 하지만 고구마를 생성하는 부분인것 같으니 패스.


이 지점부터가 벽을 생성하는 부분인데 floor(바닥)은 생성해야하니 넘기고 00402CA1부분을 벽을 모두 생성한 뒤의 지점으로 점프 시켜줄 것이다.


Hsy는 한승연의 이니셜이다. 이것도 필요없다.



skybox 함수 부분 이전으로 점프하게 되면 벽뒤에 고구마가 생기지 않는다



00402DC1지점으로 점프하면 된다.



이 지점에서 같으면 00403301으로 점프한다. 하지만 같지 않아서 바로 아래줄을 실행한다.





같지 않으니까 Jump not equal 00402DC1를 해주면 바로 00402DC1로 넘어간다.



실행하고 나면


벽 뒤에 외톨이가 보인다. 다 잡고나면 아래와 같이 뜬다.










'Reversing' 카테고리의 다른 글

ImagePrc  (0) 2019.07.30
Easy Unpack  (0) 2019.07.30
Easy Keygen  (0) 2019.07.30
Easy CrackMe  (0) 2019.07.30
[reversing.kr] Ransomware  (0) 2019.07.15
Comments