본문 바로가기

분류 전체보기439

백준 2751번 n = int(input())a=[0]*nfor i in range(n): a[i]= int(input())a.sort()for i in range(len(a)-1): if a[i] == a[i+1]: a.remove(i+1)for i in range(len(a)): print(a[i]) 2018. 9. 11.
백준 2750번 n = int(input())a=[0]*nfor i in range(n): a[i]= int(input())a.sort()for i in range(n): print(a[i]) 2018. 9. 11.
코드엔진 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.