전체 글 (49) 썸네일형 리스트형 카카오 인턴 합격 후기(하) - 2020 카카오 인턴십 for Tech developers 카카오 인턴 합격 후기 상편 - https://osb330.tistory.com/52 코딩테스트... 한번도 넘지 못한 벽을 카카오에서 넘다. 카카오 코딩테스트(이후 코테)를 설명하기 앞서 필자는 코테 준비가 매우 늦었다. 본격적인 코테를 준비한 것이 1년이 안되었다. 컴퓨터공학을 전공하였지만 프로그래밍과 개발보다 OS/보안쪽에 관심을 가지고 있어서 학부생때 코테를 준비한 적이 없었다. 대학교 4학년 때 보안팀 인턴 면접을 볼 때에도 서류-1차 면접-2차 면접으로 진행되어서 코딩테스트의 준비의 필요성을 느끼지 못했다. 그러다보니 왠만한 IT기업은 코테를 전부 보고 있었기에 지원할 수 있는 기업의 수는 매우 제한되었다. SSAFY라는 교육을 받기 시작한 2019년 7월부터 코테에 관련된 알고리즘 지식과 프.. 카카오 인턴 합격 후기(상) - 2020 카카오 인턴십 for Tech developers 카카오 인턴 합격 후기 하편 - https://osb330.tistory.com/53 들어가기 앞서... 이 글을 쓰는 이유는 지금 정리를 하지 않으면 이때의 느낌이나 어떤 생각을 가지고 있었는지 잊을 수 있으니 기록을 하기 위해 작성하는것이 크며 나중에 카카오에 지원하는 다른 분들에게 조금이라도 도움이 될 수 있을까 해서 작성한다. 필자도 카카오 인턴십을 준비하면서 진짜 구글링을 하면서 각종 후기나 정보글을 읽어가면서 심신의 안정과 더불어 도움이 되었는데 미약하지만 도움이 되고 싶기에 남긴다. 그리고 이 글은 2020 상반기 기준이라 추후에 일정이나 모집요강이 변경될 수 있다는 것을 숙지하길 바란다. 카카오에서 인턴십을 진행한다고...? 올해 상반기에 카카오에서 인턴십을 진행한다 공고가 올라왔다. 처음.. Notepad.exe 프로세스 내의 KeyHook.dll 디버깅 이제 notepad.exe 프로세스에 인젝션된 KeyHook.dll의 훅 프로시저를 디버깅해보자. Notepad.exe를 OllyDbg로 열어보자. 그리고 OllyDdg의 옵션에더 Pause on new module(DLL)을 체크하자. 이 옵션으 디버기(Debuggee) 프로세스(notepad.exe)에 새로운 DLL이 로딩될 때 자동으로 디버깅을 멈추는 옵션이다.(DLL이 인젝션되는 순간부터 디버깅할 때 매우 유용하다.) 이 상태에서 HookMain.exe를 실행하고 notepad.exe에서 키보드를 입력하고 Ollydgb에서 Executable modules 창이 뜬다. 10000000 주소에 KeyHook.dll이 로딩된 것을 확인할 수 있다. 전에 훅 프로시저의 주소(10001020)를 알고 있.. HookMain.exe 디버깅 Windows 메시지 후킹 기법을 어떻게 디버깅하는지 살펴보자. 먼저 키보드 후킹을 설치해주는 HookMain.exe를 디버깅 한다. OllyDbg로 HookMain.exe를 열어보자. 위 그림은 HookMain.exe의 EP(Entry Point) 코드이다. 전형적인 VC++의 스텁 코드이다. 우리가 관심있는 코드는 키보드 후킹을 시작하는 부분이다. search for - All referenced String을 통해 Press 'q' to quit! 이부분을 찾아보자. 그림이 보여지는 코드는 프로그램의 main() 함수이다. main() 함수 디버깅 401000 주소에 BP를 설치한 후 실행하면 이 주소에서 멈추면서 디버깅이 가능해진다. 위 코드를 차례대로 트레이싱해서 내려오다 보면 주요 흐름을 알 .. 키보드 메시지 후킹 실습 그렇다면 간단한 키보드 후킹을 해보자. 아래 그림을 보자 KeyHook.dll 파일은 훅 프로시저(KeyboardProc)가 존재하는 DLL 파일이다. 그리고 HookMain.exe는 KeyHook.dll을 최초로 로딩하여 키보드 훅을 설치하는 프로그램이다. HookMain.exe에서 KeyHook.dll 파일을 로딩한 후 SetWindowsHooEX()를 이용하여 키보드 훅(KeyboardProc)을 설치한다. 만약 다른 프로세스(explorer.exe, iexplore.exe, notepad.exe등)에서 키 입력 이벤트가 발생하면 OS에서 해당 프로세스의 메모리 공간에 KeyHook.dll을 강제로 로딩하고 KeyboardProc 함수가 호출된다. 여기서 중요한 점은 키 입력 이벤트가 발생한 프로세.. DLL 인젝션- Window 메시지 후킹 1. 훅(Hook) 영어로 Hook, 우리말로는 갈고리, 낚시바늘 정도의 뜻을 가지고 있는데, 원하는 것을 낚아 채고 싶을 때 사용하는 도구이다. 이 갈고리나는 뜻이 확장되어서 정보를 엿보거나 가로채는 경우에도 훅이라는 말을 쓴다. 중간에 오고가는 정보를 엿보거나 가로채기 위해 초소를 설치하는 일을 훅(hook)을 건다(설치한다)라고 하고, 실제로 정보를 엿보고 조작하는 행위를 후킹(Hooking)한다. 컴퓨터 분야에서도 후킹이 광범위하게 사용되고 있다. 그 중에서 가장 기본적인 메시지 훅(Massage Hook)에 대해 설명한다. 2. 메시지 훅 Windows 운영체제는 GUI를 제공하고, 이는 Event Driven 방식으로 동작한다. 키보드/마우스를 이용하여 메뉴 선택, 버튼 선택, 마우스 이동, .. UPack PE헤더 상세 분석 -2 5-6 RVA to RAW 각종 PE 유틸리티들이 UPack 앞에서 맥을 못 추던 원인이 바로 RVA-> RAW 변환에 어려움을 겪었기 때문이다. UPack 제작자는 많은 테스트를 통해서 Windows PE로더의 버그를 알아낸 후 이를 UPack에 적용하였다. 이 기법을 처음 접한 유틸리티들은 대부분 '잘못된 메모리 참조에 의한 비정상종료'를 당했다. 먼저 일반적인 RVA -> RAW 변환 방법인 이렇다 RAW - PointerToRawData =RVA - VirtualAddress RAW = RVA -VirtualAddress + PointerToRawData 그렇다면 위 공식대로 EP의 파일 옵셋(RAW)를 계산해보자. UPack의 EP는 RVA는 1018이다. RAW = 1018 - 1000 + 1.. UPack PE헤더 상세 분석 -1 UPack(Ultimate PE 패커)는 실행 압축기(PE Run-Time 패커)이다. UPack의 특징은 PE 헤더를 굉장히 독특한 방식으로 변형한다는 것이다. UPack 때문에 기존의 많은 PE분석 프로그램들이 오작동을 일으켜서 패치를 해야만 할정도로 획기적인 기법을 사용했다는 얘기다. UPack 상세분석을 통해 PE 헤더에 대한 지식을 완전히 엎어버리는 내용이며 리버싱에 대한 흥미와 열정을 더욱 끌어낼 수 있을 것이다. 1.UPack 설명 UPack은 중국의 dwing이라는 사람이 만든 PE패커이다. http://www.geocities.jp/dwingj/mycomp.htm UPack으로 실행 압축된 파일들의 PE 헤더를 보면 실행이 될 지 의문이 들 정도로 특이하게 변형되어 있다. 이러한 특이한 .. 이전 1 2 3 4 ··· 7 다음