전체보기30 180113_REVERSING(2)_pick_me Concept Windows MFC Reversing sub_401000이 WinMain이고 , sub_401110이 WndProc임을 알 수 있다. (노란 형광펜 부분 딱 들어가면 된다.) 일반적으로 WndProc은 두번째 인자를 메시지 번호로 받고, 그 메시지 번호에 따라서 분기한 후, 메시지 번호에 맞는 함수를 호출하거나 WndProc이 호출하는 함수목록과 비교하여 일치하는 경우 해당 함수로 이동할 수 있도록 되어있다. 문제를 풀면서 느낀점 아이다의 수도코드로 어느정도 분석이 끝나고 나면, 패치나 상세 어셈블리 분석은 olly를 같이 키고 주소 비교해가면서 하는게 빠른것 같다. 올리가 특정 주소의 메모리 보기에 더 편한 듯. Hands-on Practice pick_me 라는 게임은3x3개의 칸 중.. 2018. 1. 14. 170111_REVERSING(1)_whereami Concept Windows MFC Reversing WndProc 함수 ( =메시지 처리 함수 ) : 특정 메시지가 발생했을 때 그것을 처리하는 함수로, WinMain과는 별개로 WndProc 이라는 이름으로 존재한다. WinMain 내의 메시지 루프는 메시지를 메시지 처리 함수로 보내주기만 할 뿐이며, WndProc은 메시지가 입력되면 윈도우즈에 의해 호출되어 메시지를 처리한다. 이렇게 운영체제에 의해 호출되는 응용프로그램 내의 함수를 Callback(콜백) 함수라고 한다. 보통 winProc 함수는 위와 같은 양상을 띄며, message를 인자로 넘겨받고 이러한 메시지 번호에 따라 분기하는 구조를 띈다. WM_DESTORY는 창을 닫는 메시지이며, 안의 코드를 작성하여 해당 메시지가 발생했을 때 어.. 2018. 1. 14. 180105_Memory_Forensic Concept PE구조를 가진 Windows 실행파일이 실행되면, 메모리에 실행코드가 올라온다. 각 프로세스별로 이론상 32bit 기준으로 4GB의 연속된 가상메모리를 할당받게 되는데, (사실은 4GB를 모두 쓰는 프로세스는 없다고 한다.) 가상 메모리란 물리적 메모리의 용량과 관계없이 실존하지 않는 가상의 주소에 메모리가 올라가는 것을 말한다. 실제 하나의 프로세스가 쓰는 하나의 가상메모리, 즉 실행 코드는 프로그램에서 필요한 핵심 부분은 RAM(물리 메모리) 잘 활용되지 않는 그 외의 부분은 페이지 파일(하드디스크)로 저장된다. 그렇게 여러 프로세스들의 가상메모리가 각각 RAM과 pagefile.sys에 나뉘어 저장되는 것이다. ( 가상 메모리 = 물리 메모리 + 페이지파일 ) Hands-on Pra.. 2018. 1. 10. 이전 1 2 3 4 다음