본문 바로가기

분류 전체보기

[Rookiss] dragon - 75pt 보호되어 있는 글입니다. 더보기
[Rookiss] fsb - 20pt 보호되어 있는 글입니다. 더보기
PE Viewer 개발 3일차 오늘은 DOS_IMAGE_HEADER 부분을 완성시켰다. 출력하는 부분을 어떻게 처리할까 계속 고민하다가 반복문으로 하게 되면 제약이 너무 많아지기 때문에 그냥 각 멤버 변수 하나씩 printf로 노가다 해서 출력해 줬다. 이렇게 hex로만 표현해 주는 부분과 분석을 해서 출력하게 하는 부분을 만들었다. IMAGE_DOS_HEADER에서 가장 중요한 멤버 변수인 e_magic하고 e_flanew는 특별히 ★까지 붙여줬다. 이제 Dos Stub출력 부분과 NT_IMAGE_HEADER 앞부분을 분석하는 부분을 만들어야겠다. 더보기
OS 개발 및 공부 스터디 3주차 보호되어 있는 글입니다. 더보기
[2016 CAT HolyShield] Reversing - Who Am I? 이번 CAT HolyShield에서 푼 리버싱 문제인데 가상화 문제였습니다. 풀 때 꽤 재미있었던 문제라서 좀 더 분석을 해 보고 이렇게 풀이를 올립니다. 먼저 실행 모습입니다. 파일은 exe파일 하나와 dll파일 하나가 주어집니다. exe를 먼저 IDA로 열어서 보면 이러한 부분이 존재하는데 분석하면 주어진 dll파일을 열어서 0x1E00영역에 입력한 값으로 덮어 씌웁니다. 헥스에디터로 원래 0x1E00부분을 보면 Nice_To_Meet_You~~!!라는 문자열이 존재하는데 이를 입력 값으로 덮어 씌웁니다. 그리고 로드한 dll에서 checkfunc함수의 주소를 가지고 와서 인자로 넘겨주고 호출합니다. 그럼 이제 dll을 보겠습니다. IDA로 까 보면이게 전부입니다. 처음에는 가상화 일 것이라고 생각을.. 더보기
2016년 1월 22일 금요일 오늘은 OS 스터디에서 64비트 프로세서에 관한 운영모드, 레지스터, 메모리 관리기법에 대해서 발표했다. 확실히 페이징이나 세그먼테이션 같은 기법들을 읽어만 보다가 직접 말하면서 설명을 해 보니 설명해 주면서 나도 다시 한 번 더 이해가 되는듯 했다. 다음주에 부팅 과정과 부트로더 작성을 성휘가 발표할 것이다. OS도 어렵지만 참 재밌는 것 같다. 그리고 pwnable.kr의 alloca문제를 다시 붙잡았다.. 끝없는 삽질을 통해 내 우분투에서는 드디어 쉘을 따는데 성공했다. 그리고 기쁜 마음으로 pwnable.kr서버에 접속하여 똑같이 했는데 쉘이 오지가 않았다... gdb로 똑같이 따라 했는데 그냥 메모리 값이 다르게 나온다.. 내 우분투에서는 eip가 의도한대로 변조가 잘 되는데 pwnable.kr.. 더보기
[Rookiss] tiny_easy - 30pt 보호되어 있는 글입니다. 더보기
PE Viewer 개발 2일차 오늘은 많은 부분을 제작하지 못했다. 일단 메모리에 파일을 올리는 것은 그대로 매핑해서 올리기로 하고, 전역변수에다가 각 헤더와 섹션을 구분해서 저장하기로 했다. 그리고 헥스로 출력하는 부분을 좀 더 나눠서 함수로 만들었다. 그리고 IMAGE_DOS_HEADER를 읽어와서 이를 각 멤버 변수들과 의미 등으로 구분해서 출력을 해야 하는데 이 부분을 반복문으로 처리하기가 약간 까다롭다.. 각 멤버 변수들마다 크기도 다르고, 이름도 제각각 달라서 어떻게 효율적으로 출력해야 할 지 고민중이다.. 아마도 각 변수들의 크기, 이름, 설명 등을 전부 테이블로 만들어서 반복문으로 처리하게 될 것 같은데 좀만 더 방법을 찾아봐야겠다.. 더보기
PE Viewer 개발 1일차 오늘은 기본적인 프로그램을 읽어 들이는 부분과 읽어들인 파일을 헥스로 표현하는 부분을 구현하였다. cpp파일을 main.cpp, loadPE.cpp, printPE.cpp 이렇게 새 개로 나누어서 함수를 작성하고 header.h 하나를 작성하였다. 헤더파일 안에 전역변수를 선언했었는데 자꾸만 이미 정의되어있는 변수라면서 에러를 마구 내뿜었었다. 검색을 해 보니 헤더파일에 선언을 할 때에는 extern 키워드를 앞에 붙여서 중복 선언이 방지되도록 해야 한다고 했다. 그렇게 오류를 해결하고 파일을 잘 읽어 들이고, 헥스로 출력하도록 했다.파일을 읽어 들이는 것은 먼저 CreateFile 함수로 파일 객체를 생성하고, CreateFileMapping 함수로 파일 매핑 객체를 생성하고 난 뒤에 MapViewOf.. 더보기
2016년 1월 19일 화요일 오늘은 자습시간에 리버싱 핵심원리가 있어서 오랜만에 PE구조를 다시 공부해 보았다. 예전에는 그토록 어려웠던 IAT나 EAT를 다시 공부하니 예전 기억이 새록새록 올라왔다. PE를 다시 공부하고 나서 이번에 예전부터 만들어 보려고 했던 PE Viewer를 하나 만들기로 결심했다. 오늘은 직접적인 코딩은 하지 않았고 이전에 쓰던 PEView라는 유명한 프로그램을 직접 리버싱 해서 대체적으로 어떤 식으로 동작하는 지를 살펴 봤었다. 프로그램을 뜯어보고 옛날에 이 프로그램을 쓰면서 프로그램을 읽기 모드로 열어버려 PEView로 켜놓고 헥스 에디터로 수정되지가 않아 불편한 점이 있었는데 그 부분을 패치하고 프로그램을 처음에 어떻게 로딩하는지와 여러가지 궁금했던 부분을 봤었다. 오늘 대체적으로 어떤 구조로 되는지.. 더보기