본문 바로가기

분류 전체보기

(466)
크래시덤프분석 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..
리소스 모니터 메모리 탭 탐구 윈도우 7의 리소스 모니터가 아주 좋다. 메모리 탭의 예쁜 그래프가 과연 무엇을 나타내는지 탐구해 봤다.준비물은 시스인터널즈의 RamMap 유틸리티.성능모니터를 직접 실행하거나, 작업관리자에서 성능모니터를 실행시키고 메모리 탭을 본다.실제 물리 메모리의 사용량을 그래프로 나타내 준다. 사용 중은 rammap 툴에서는 active 로 표현하는 실제 프로세스나 시스템이 현재 사용하고 있는 메모리를 뜻한다. 수정한 날짜라는 부분은 분명한 오역인데, modified 로 표현되는 (윈도우즈 인터널즈 5판 한국어판에서는 "변경"으로 번역하고 있다.) 메모리 페이지를 뜻하는 듯 하다. 대기 모드 또한 오역으로 보인다. rammap에서는 standby, 윈도우즈 인터널즈 5판 한국어판에서는 "스탠바이"로 번역한 것이다..
윈도우즈에서 넌페이지드풀과 페이지드 풀 에러 트러블슈팅 Troubleshooting Nonpaged and Paged Pool Errors in Windows윈도우즈에서 넌페이지드풀과 페이지드 풀 에러 트러블슈팅 12 March 2010by Ben Lye Ben Lye uncovered a memory leak in the nonpaged pool which was crashing his servers with disquieting regularity. Luckily it was relatively easy to troubleshoot, and he's sharing the tools and techniques he used to get his servers back on track in double-quick time. Ben Lye가 정기적으로 서버를 죽..
[WinDbg] 0y 는 몇진수? windbg로 실습하다보면 0y 라는 표현이 나온다. 0x는 16진수 hexa 표현인데, 0y는 과연 몇 진수 표현일까? 답은 2진수. 주로 비트플래그값에 대해 0y라는 표현이 등장한다는 걸 알 수 있다. windbg 창에서 .formats 명령으로 쉽게 알 수 있다. (thnx to http://mat-f.blogspot.com/2011/05/hex-binary-decimal-octal-number.html )
[VS2008] AddVariable 시 DoDataExchange에 컨트롤과 변수 연결코드가 자동으로 생성되지 않는다. 6.0까지는 클래스 위자드를 이용해서 간단하게 컨트롤과 변수를 연결할 수 있었다. 변수를 생성하면 컨트롤과 변수 사이에 값을 세팅해 주거나, 값을 가져오는 코드가 DoDataExchange 안에 자동으로 생성된다. 2008까지는 클래스 위자드가 없어지고, 리소스 에디트 화면에서 컨트롤 - 오른쪽클릭 - AddVariable 메뉴를 통해 변수를 추가한다. 변수를 추가할 때 컨트롤이 아닌 CString, int 등의 Value 형 변수를 추가하려고 했는데, UpdateData가 동작하지 않는 것 같았다. DoDataExchange함수 안에 해당 컨트롤-변수간의 통신과 관련된 코드가 추가되지 않았었다. 문제를 해결하기 위해 검색을 해 보았더니, 내가 Value 변수를 만들 때 Variable Wizard를 잘..
[번역|StackOverflow] 파이썬 람다 - 왜써? / Python Lambda - why? Are you talking about lambda functions? Like 람다 함수를 말하는 건가요? 이런 것? f = lambda x: x**2 + 2*x - 5 Those things are actually quite useful. Python supports a style of programming called functional programming where you can pass functions to other functions to do stuff. Example: 이거 진짜 좋아요. 파이썬은 다른 함수에 함수를 넘길 수 있는 함수형 프로그래밍 스타일을 지원해요. 예를 들면 : mult3 = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, ..
64비트 : 64비트 시스템의 32비트 프로세스에 붙은 64비트 DLL 다국어 편집기 madedit 32비트를 64비트 윈도우에서 실행한 상황. 해당 프로세스에 5개의 64비트 dll이 달려있다. wow64*.dll 3 개와 apisetschema.dll (검색해 보니 virtual dll과 logical dll을 매핑해 주는 역할을 한단다.), 그리고 ntdll.dll 이 있다. ntdll은 64비트 버전과 32비트 버전 두 개가 달려 있다. 너무 당연한 이야기인지도 모르겠지만, 64비트 dll도 4G 영역을 넘지 않는 곳에 배치되어 있다. 그런데 어떻게 로드될 수 있는 건지? 32비트 프로세스 안에서 어떤 식으로 주고받고 동작하는 걸까? 궁금하다.
VS2008 윈도우들이 엉켰을 때. 편집창 윈도우, 결과창 윈도우, 검색창 윈도우 들이 막 엉켜서 스트링 검색하면 편집창을 가리면서 검색결과창이 위에 뜨고, 컴파일하면 또 소스 편집창이 가려지고 하는 상황이 계속 됐다. 한참 짜증내면서도 그냥 쓰다가 이걸 되돌리는 방법이 없는지를 찾았다. 해결책은 매우 간단했음. window - reset window layout 이 간단한 걸 해결 못하고 몇 달을 2008만 키면 괴로워했었네.