본문 바로가기

LoadLibraryEx에서 LOAD_LIBRARY_AS_DATAFILE 문제 LoadLibraryEx 함수는 플래그 인자를 통해 여러 형태로 모듈을 메모리로 로드할 수 있다.그 중에 LOAD_LIBRARY_AS_DATAFILE 플래그를 사용하면 파일 형태로 메모리에 모듈을 로드시킬 수 있다. 오늘 저 함수를 사용해 특정 코드를 작성 중 원치 않은 결과가 나와 당황을 하였다.리버싱을 하면서도 저 플래그를 사용해 작업하는걸 많이 봐왔고 다른 오픈소스에서도 많이 사용하는 것을 봐왔는데 왜 이제서야 이 문제가 인식이 되었는지 이해가 되질 않는다. 아무튼 내가 겪은 문제는 다음과 같다. 함수 호출은 성공하였는데 리턴 값이 이상하다. MZ로 시작하는 메모리 위치를 리턴(0x30000)해줘야하는데 0x30001 이 리턴된 것이다. 음? 저 1은 뭐지? 난 아무것도 하지 않았는데 리턴 값이 저.. 더보기
Visual Studio 빈 솔루션 생성 (Blank Solution) Visual Studio에서 여러 프로젝트들을 하나로 모아서 하나의 솔루션 형태로 관리를 하기 위해 빈 솔루션을 생성해야될 때가 있다. 지금 껏 개발하면서 Blank Solution을 생성안해봤는데 다음과 같이 생성하면 된다. [Visual Studio 2013 영문판 버전] 기준으로 설명한다. 다른 버전도 별반 다를게 없을거라 생각한다. 먼저 프로젝트 생성화면으로 들어간다. Templates -> Other Project Types -> Visual Studio Solutions 들어가서 Blank Solution을 생성하면 된다. 생성된 빈 솔루션에서 다음과 같이 기존에 있는 프로젝트 파일(.vcxproj)을 불러오면 된다. 더보기
페이징파일 사용 안함으로 인한 딜레마.. 현재 내 노트북엔 SSD 128GB 짜리가 박혀있는데 여기에 OS가 설치되어있다.그리고 SSD수명을 늘리기 위해 읽기/쓰기 작업을 줄이려고 페이징 기능을 꺼버렸다. 근데 어느날 부터 내 컴에 BSOD가 떴을 때 커널 메모리 덤프가 안남는 것이다. (기본적으로 미니덤프가 아닌 커널 메모리 덤프로 설정해놓는다.) 이번에 윈도우 업데이트를 하다가 BSOD가 발생했길래 원인 좀 분석하려고 했지만 덤프가 남지 않아 실패했다.어리둥절해서 다시 옵션을 봐봤지만.. 여전히 커널 메모리 덤프로 잘 설정이 되어 있다. 여기서 "자동으로 다시 시작" 기능이 켜져있길래 꺼버리고 확인을 눌렀더니 다음과 같은 창이 떴다. 딱 읽어보면 알겠지만 BSOD가 발생했을 때 덤프를 남기려면 페이징기능이 켜져있어야 하나보다...ㅠㅠ찾아보니.. 더보기