블로그 이미지
Nehoy
경기대학교 / kknock

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

Tag

2016. 12. 20. 10:07 Hack/리버싱

위 사진과 같이 Drive의 타입 값을 가져와서 CD-ROM인지 확인하는 프로그램이다.


401024-26을 보면 EAX와 ESI를 비교하여 분기하게 된다. 


401026에서의 EAX와 ESI의 값은 위와 같게 된다.



EAX와 ESI의 값이 같으면 되는 것이므로 MOV EAX, ESI로 어셈블리어를 변경하여 항상 분기하게 한다.



배운점.

Dump Debugged Process를 할 때에 OEP가 현재 실행위치로 변경되므로 꼭 신경써서 본 OEP로 바꿔주자.

'Hack > 리버싱' 카테고리의 다른 글

[CSAW 2017] tablez  (0) 2017.09.20
[Codegate 2016] compress  (0) 2017.05.20
[Reversing.kr] imagePrc  (0) 2016.05.30
[Reversing.kr] Music Player  (0) 2016.05.18
[Reversing.kr] Easy Unpack  (0) 2016.05.12
posted by Nehoy
2016. 5. 30. 18:53 Hack/리버싱

 프로그램을 실행한 후 Check 버튼을 누르면 Wrong이라는 메세지가 뜨는 것을 볼 수 있다.



 따라서 Wrong 문자열이 있는 곳을 찾아가보면, 그 위쪽에 이미지를 불러오고 비교하는 부분(004013A8)을 찾을 수가 있다.


 프로그램을 실행시킨 후 이 부분에서 ds:[eax+ecx]가 가리키는 곳으로 가보면 이미지 파일로 의심되는 바이너리가 있다.


 이 부분을 복사한 후 적절한 bmp 헤더를 붙이면, 다음 이미지가 나오게 된다.


Auth : GOT

'Hack > 리버싱' 카테고리의 다른 글

[CSAW 2017] tablez  (0) 2017.09.20
[Codegate 2016] compress  (0) 2017.05.20
[CodeEngn] Challenges : Basic 01  (0) 2016.12.20
[Reversing.kr] Music Player  (0) 2016.05.18
[Reversing.kr] Easy Unpack  (0) 2016.05.12
posted by Nehoy
2016. 5. 18. 23:09 Hack/리버싱








 일단 "1분 미리~"를 띄우는 메세지 박스 함수의 주소를 찾는다.

 (rtcMsgBox함수의 주소가 0x0040104C인 것을 볼수있다!)


 이 함수 주소에 하드웨어 브레이크 포인트를 사용하여, 어느 부분에서 이 함수를 통해 "1분 미리~"라는 문자열을 출력하는지 찾아낸다.


 브레이크 포인트 때문에 프로그램이 중지되었을 때, Call Stack을 통해서 함수를 호출한 코드의 주소를 참조한다.

 

 그러면 이렇게 rtcMsgBox함수가 사용된 것을 볼 수 있는데, 이 메세지는 1분이 지날 때에만 출력이 되므로 분기가 있을거란걸 예상할 수 있으므로, 이 함수를 호출하는 코드 부분을 감싸고 있는 분기문을 찾으면

 

 이 곳이 되는데 여기가 First Check Routine인 것을 알 수가 있다!


 일단, 1분이 지나도 이 코드 부분이 실행되지 않도록 jl을 jmp로 바꿔준다.


//


하지만 이렇게만 했을 경우에는 

이런 오류 메세지가 뜨는 것을 볼 수가 있다.


나는 이 때 First Check 코드 부분을 제외하고도 1분이 지났을 때에만 실행이 되는 코드 부분이 있을거라고 생각했고, First Check Routine 밑 코드들 중 의심스러운 모든 분기문에 break point를 사용하여 Second Check Routine와 Third Check Routine를 찾아내었다.



이 두 routine 중 에러 메세지가 출력 되기 전에 실행되는 코드를 break point로 찾아내면, 그 부분이 third check routine인 것을 알 수 있는데


 이 부분 또한 아까와 같이 jge를 jmp로 바꾸어준다.



 이제 다시 실행해보면 1분이 넘어갔을 때, 프로그램의 타이틀이 Password is LIstenCare로 변한 것을 볼 수 있다! 끝!

'Hack > 리버싱' 카테고리의 다른 글

[CSAW 2017] tablez  (0) 2017.09.20
[Codegate 2016] compress  (0) 2017.05.20
[CodeEngn] Challenges : Basic 01  (0) 2016.12.20
[Reversing.kr] imagePrc  (0) 2016.05.30
[Reversing.kr] Easy Unpack  (0) 2016.05.12
posted by Nehoy