블로그 이미지
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

'-'에 해당되는 글 43

  1. 2016.05.30 [Reversing.kr] imagePrc
  2. 2016.05.18 [Reversing.kr] Music Player
  3. 2016.05.12 [Reversing.kr] Easy Unpack
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
2016. 5. 12. 23:37 Hack/리버싱

 일단, Unpack을 하기 위해서는 popad(popal)부분을 찾고 그 다음 jmp구문을 찾아야한다.


맨 처음 디버거를 통해 Unpack파일을 열고 F9키를 눌러 실행을 하면 다음 화면이 나온다.


 이 화면에서 위로 조금 올려보면 다음과 같이 0040A021 부분에 popal이 있는 것을 확인할 수 있다.


 popad(popal)부분을 찾았으므로 jmp구문을 찾으면 되는데, 이를 찾기 위하여 아래로 쭉 내리다보면 다음 화면과 같이 jmp구문이 있는 것을 볼 수 있다.


 이 jmp하는 00401150주소가 unpacking된 코드가 있는 부분이고 우리가 찾던 OEP(Original Entry Point)인 것이다.


따라서, Auth에 00401150을 입력하면 된다.


느낀점.

 디버거로 프로그램을 연 다음 꼭 F9키를 눌러주자.

'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] Music Player  (0) 2016.05.18
posted by Nehoy
prev 1 2 3 4 5 next