본문 바로가기

코드 엔진 5

코드엔진 basic 6번 7번 문제도 6번 문제처럼 패킹이 되어있었다. 그래서 툴을 이용해서 언패킹을 먼저 했다. 언패킹된 코드를 올리디버거에서 열어보니 OEP의 주소가 00401360이라는 것을 알 수 있었다. 스트링 찾기를 해봤는데 이번 문제는 얻을 수 있는 스트링이 없었다. 그래서 사용하게 된 back to user mode! back to user mode란 프로그램의 이벤트를 인식하고 그 이벤트를 사용하는 코드로 이동하는 모드 이다. back to user mode를 사용할 때에는 프로그램이 정지 해 있는 상태여야 한다. 그래서 F9를 눌러서 아무 거나 입력했다. 경고 창이 떴고, 그 경고창의 확인 버튼을 누르기 전까지는 이 프로그램이 멈춰있게 된다. 그 후 프로그램 상단바에서 정지 버튼을 누르고 Alt+F9를 누르니 .. 2017. 12. 29.
코드엔진 베이직 5번 5번 문제는 처음 올리디버거를 이용해서 열어보면 패킹이 되어 있다는 것을 알 수 있다. 그래서 툴을 이용해서 언패킹을 해보았다. 툴을 이용해서 언패킹 해봤다. 이번엔 다른 방법으로 툴을 이용하지 않고 hardware breakpoint를 이용해서 OEP를 찾아봤다. UPX를 이용하여 패킹을 한 실행파일을 실행을 하면 PUSHAD 명령어로 시작을 한다. UPX 패커의 특징이다. PUSHAD : 8개의 범용 레지스터(EAX~EDI)의 값을 스택에 저장 POPAD : 8개의 범용 레지스터(EAX~EDI)의 값을 스택에서 빼서 레지스터에 적용 UPX를 가지고 패킹을 하면 패킹된 실행파일은 처음 실행될때 바로 패킹하기전 EP(OEP)로 시작하지 않기 때문에 해당 레지스터의 값들을 그대로 스택에 저장했다가 EP에 .. 2017. 12. 28.
코드엔진 베이직 3번 코드엔진 베이직 3번 문제 라이트업입니다. 일단 실행시켜보았습니다. 두번째 창에서 아무거나 입력해보니 에러라고 뜹니다 ㅠㅠ 그래서 올리디버거에서 프로그램을 열어보았습니다. 문자열 찾기를 해봤습니다. 위의 화면에서 2G83G35Hs2부분이 정답과 관련이 있어보여서 저 코드로 들어가보았습니다. 저 코드에서 보면 밑에 vbaStrCmp가 스트링 비교함수의 이름입니다! 답을 입력하고 성공메세지를 받았습니다. 문제는 다 풀었지만.. 패스워드를 바꿔보고 싶어서 시도해보았습니다. 먼저 덤프창으로 들어가봤습니다. 덤프창에서 패스워드가 들어있는 코드를 검색했습니다. 여기서 패스워드를 아영으로 바꿔봤습니다. 다시 코드를 보니 아영으로 패스워드가 바뀌었습니다! 2017. 11. 29.
코드엔진 베이직 2번 코드엔진 베이직 2번 라이트업입니다. 2번 문제는 올리디버거에서 실행 하려고 하니 되지 않았습니다. 그래서 PE view를 이용해서 열어보았습니다. 위의 화면에서 보듯이 패스워드가 나와있습니다.. 2017. 11. 29.