문제를 올리디버거로 열어보았다.pushad로 시작하기에 peid로 문제를 열어보았다. upx로 패킹되어 있다는 것을 알게되었다.CFF Explorer을 이용해 언패킹을 해보자. 사진에 보이는 순서대로 누르면 간단하게 언패킹을 할 수 있다. 언패킹된 파일이다.올리디버거로 열어보자. oep는 코드 시작점인 00401000 이다.stolenbyte는 총 12바이트이다.언패킹된 파일에서 정보를 얻었으면 패킹된 파일을 열어보자. pophad에 bp를 걸고 f9를 눌러 실행시켜보면, 문제를 실행시켰을 때 처음 뜨는 문자열이 나타나게된다. 이로써 stolenbyte는 6A 00 68 00 20 40 00 68 12 20 40 00 임이 밝혀졌다.언패킹된 파일에 stolenbyte를 넣어주자. 언패킹된 파일을 열고 s..
reversing
올리 디버거로 열어보니 pushhad 명령어가 먼저 보인다.패킹된 듯 하다. peid로 확인해보니 aspack 2.000으로 패킹되어있다. 패킹을 풀어보자. 우선 oepcode를 구해야한다.친절하게도 pophad와 returnpoint에 bp가 걸려있었다. oep는 보통 return뒤에 나오는 코드이다.따라서 oep는 00445834 이다. oep를 구했으니 ollydump라는 플러그인을 통해서 덤프를 뜨자. 혹여나 ollydump플러그인이 없다면 위 파일을 다운받아서 플러그인폴더(올리디버거에 설정해둔)에 넣으면 된다. 표시된 부분들을 사진과 같이 바꾸자.(이 글과 똑같이 따라왔다면 굳이 바꾸지않아도 바껴있을거다.)rebuild부분은 꼭! 체크를 해제해야한다! 제대로 설정해준 후 dump를 누른다. 1차..
코드엔진 9번 문제는 StolenByte를 찾는 문제.. 문제를 풀기 전 StolenByte를 간단히 이해하자면,말그대로 훔친 바이트이다. 패킹할때 코드의 일부를 다른 위치에 배치시키는 것이다.(근데 이걸 언패킹할때 옮겨두지 않으면 프로그램이 제대로 작동하지 않게된다...) 일단 9번 문제를 받아서 올리디버거에 올려둬보니 PUSHAD 명령어가 보인다.패킹되어있을 가능성이 높으니 PEID로 확인해보자. UPX로 패킹이 되어있다. CFF Explorer 에서 UPX Utility 를 선택해 언패킹 후 저장해준다. 짠 언패킹한 실행파일을 올리디버거로 열어보니 stolenbyte가 보인다. stolenbyte는 12바이트이다. 패킹되어있던 실행파일과 언패킹된 실행파일을 그냥 실행하고 비교해보았다.이로서 스톨른바..
코드엔진 8번 문제 : OEP구하기 우선 주어진 프로그램을 다운받고 열어봅시다. 조그만 계산기네요. OEP를 구하랬으니 PEiD를 열어 패킹되었는지 확인해봅시다. UPX로 패킹되어있네요! 언패킹해줍시다. CFF에 파일을 불러온 후 언팩을 누르고 저장을하면 요롷게 언패킹한 파일이 생깁니다. 이제 올리디버거로 언패킹한 파일을 열어봅시다. 짠 OEP는 프로그램의 시작점이므로 답은 에서 앞의 초록부분에 있는 숫자겠네요! 이 문제는 언패킹을 하지 않고 패킹된 파일에서 OEP를 구해서 풀 수도 있습니다. 우선 언패킹된 실행파일을 올리디버거로 불러온 후 아래로 내리다보면 모든 레지스터에 값을 넣고 마지막에 실행위치로 점프시켜주는 명령문을 볼 수 있습나다.바로 여기서 점프 뒤의 위치가 프로그램이 시작하는 위치입니다. ..