본문 바로가기

프로세스, 쓰레드, 잡 설명 (Windows Sysinternals Administrator’s Reference) Windows® Sysinternals Administrator’s ReferenceMark Russinovich, Aaron Margosis Part I Getting Started 2 Windows Core Concepts 아래는 마크 러시노비치와 아론 마고시스의 라는 책 영문판 Part I, 2장 중의 "프로세스, 쓰레드, 잡"이라는 절의 설명이다. 프로세스, 쓰레드, 잡의 개념에 대한 좋은 설명이라고 생각되어 번역하였다. 한국어 번역판이 아직 없는 것으로 알고 있어서, 정보공유의 차원에서 번역하여 블로그에 공개하였다. 저작권 상의 문제를 제기한다면 댓글 등으로 알려달라. 프로세스, 쓰레드, 잡 Processes, Threads, and Jobs 프로그램과 프로세스는 비슷한 것처럼 보이지만, 실은 ..
0xF4 CRITICAL_OBJECT_TERMIN Following is a blog posting capture with my korean comments on it. I translated some foreign informational text into korean in order to share the information with korean readers. However, I thought some of the key text translation should suffice for technical texts. So I decided to capture the posting and put some korean translations of key sentences beside them. This posting is not inteneded to..
Shell_NotifyIcon 실패에 대한 대응 http://msdn.microsoft.com/en-us/library/windows/desktop/bb762159(v=vs.85).aspx Shell_NotifyIcon 실패에 대한 대응 Handling Shell_NotifyIcon failure Shell_NotifyIcon 가 윈도우가 시작하며 불리면 종종 실패한다. (예를 들어 응용 프로그램이 HKLM\Software\Microsoft\Windows\CurrentVersion\Run 에 등록되어 있다던가. ) 이유는 시스템이 응용 프로그램들을 시작시키는 데 바쁘기 때문인 것으로 보인다. 이 실패는 낮은 사양의 컴퓨터 또는 시작할 때 부하가 큰 특정 백신 소프트웨어가 설치되어 있는 경우에 더 잘 발생하는 것 같다. Shell_NotifyIcon w..
윈도우 환경에서 플랫폼 SDK 사용하기 c프로그래밍을 처음 시작하는 사람들에게 넘기 어려운 커다란 산이 내 컴퓨터에 어떻게 개발환경을 만드느냐는 것이다. 주변에 친구가 있거나 학교에서 배우는 사람들이라면 별 어려움 없이 물어봐서, 또는 컴파일러나 IDE를 받아서 깔아서 개발환경을 갖추겠지만, c를 혼자서 한번 배워봐야지 하는 마음으로 책을 한권 사서 보려는 사람에게 책에 나온 재밌어 보이는 것들을 실습해 보는데에 무엇이 필요한지를 알아내는 건 커다란 고민이다. 많이 추천하는 방식은 어디에선가 받은 비주얼 스튜디오 6.0을 깔아서 해 보는 방식일 것이다. 그러나 이건 엄밀하게 합법적인 방법이 아니다. 그 다음 방식은 비주얼 스튜디오 익스프레스 버전을 무료로 다운받아 깔아 환경을 갖추는 것이다. 아주 좋은 실습환경이 갖춰지지만, mfc 등 많은 ..
[Euler Project 090] itertools 의 combinations 를 가져다 씀. 좀 반칙성으로 브루트포스 풀이. 그냥 문제의 요구를 그대로 코딩했음. 문제가 좀 애매한 부분이 있었는데, 두 주사위를 다른 것으로 볼 것이냐 아니면 같은 것으로 볼 것이냐... 그래서 계속 답이 틀렸음. 검색해서 다른 사람의 풀이를 보고 문제의 의도를 알아낼 수 있었음.
[Euler Project 091] 직각삼각형 갯수 구하기 (2) 주어진 레인지 안의 두 점을 잡아서 원점과 연결한 삼각형이 직각삼각형인 갯수를 구하는 문제임. 벡터의 내적과 외적의 성질을 이용해서 간단한 식으로 푼다. 내 컴퓨터에서 10초정도 걸린다. 아무래도 모든 가능한 점을 다 돌면서 검사를 하다보니.과거에 풀었던 것은 조건을 나눠서 복잡했었는데, 이 쪽이 코드는 더 간단하다. 비슷하게 풀었던 다른 문제도 있었던 듯.
stack frame 그림. Microsoft Tech Ed 03 : Microsoft Windows Crash Dump Analysis (Mark Russinovich, David Solomon) 이라는 인터넷에서 다운받은 문서에 있는 그림.스택쓰레드 마다 한 개의 유저모드 스택과 커널모드 스택이 있다.유저모드 스택은 x86에서 보통 1MB이다.커널모드 스택은 x86에서 보통 12KB이다.스택은 중첩된 함수 호출을 가능하게 한다.패러미터가 스택을 통해 전달된다.복귀주소를 저장한다.지역변수의 저장소로 기능한다.특이한 호출규약(calling convention)을 사용하면 스택을 분석하기 어려워진다.프레임 포인터 사용 안함.레지스터를 통한 패러미터 전달 (fast calls)이 경우 디버거는 파싱을 위해 심볼정보가 필요하다.
크래시덤프분석 ObInsertObject PspCreateProcess 는 프로세스 객체를 생성하고 초기화하고, 프로세스 핸들을 리턴해 준다. 객체 생성은 ObCreateObject 를 호출하여 이루어진다. ObCreateObject(KeGetPreviousMode(),PsProcessType,ObjectAttributes,KeGetPreviousMode(),0,0x258,0,0,&ProcessObject); 위의 예에서는 PsProcessType 객체 타입의 객체가 만들어지고, 0x258 이라는 사이즈는 윈도우 버전마다 틀리다. ProcessObject 는 다른 객체처럼 OBJECT_HEADER 헤더가 붙는다. OBJECT_HEADER는 다음과 같다. OBJECT_HEADER: +0x000 PointerCount : Int4B +0x004 H..