« PREV : 1 : 2 : 3 : 4 : 5 : ... 34 : NEXT »

1. BIOS란 무엇인가?

하드웨어의 기본 입/출력을 담당하는 제어코드가 들어간 컨트롤러를 의미 합니다. 즉 OS에서 특정 기능(예 NUM키 활성화) 입력할수 있는 코드가 들어왔을때 그 코드가 BIOS에 등록되어 있어 동작이 가능한것이며, OS 커널과 H/W는 이런 상호 운용을 위해 호환 계열 리스트에서 작동할수 있도록 구성됩니다, 소프트웨어와 하드웨어의 중간에서 입/출력 제어를 담당한다고 생각하시면 됩니다.(Flash ROM이라고도 하며, VGA, RAID도 BIOS를 가지고 있습니다.)

 

2. Firmware란 무엇인가?

하드웨어 장치 특성에 맞게 포함된 소프트웨어를 Firmware라고 하며 소프트웨어라고 생각하시면 됩니다, 하드웨어를 설정을 변경하거나, 기능을 추가, 호환성을 유지하는데 사용됩니다. , 각 장치별 즉BIOS 및 RAID, MEDIA를 위해 제공되며 사용합니다. (예 OS의 새로운 기능을 하드웨어의 특정 코드를 통해 이용하는데 코드 추가로 가능한 경우, 새로운 기능을 추가해줄경우, 새로운 하드웨어를 추가 지원해줄경우)

 

3. 하드웨어(메인보드) Firmware 업그레이드를 해야하는 이유

하드웨어 Firmware역시 프로그램으로 버그가 존재할수 있으며, 기능개선 및 확장성 위해 진행하기도 하지만,

특정 장치혹은 서비스에서 나타나는 버그를 제거하기위해 업그레이드가 필요하기도 합니다.

서비스 혹 장치 마다 사용하는 코드(커널수준)를 개발 당시 존재하지 않아 생각하지 못하였거나, 배포이후 추가 버그가 발생하기도 하기때문에 업그레이드를 해주어야 합니다. (OS의 발전으로 많은 부분의 예외 상황 처리를 해주고 있어도 안전성을 확보하기 위해 진행한다 생각하시면 됩니다.)


 

저작자 표시 비영리

'하드웨어' 카테고리의 다른 글

BIOS란 Firmware, 업그레이드 필요성  (0) 2010/07/22
[HP]Smart Array Cache is Permanently Disabled  (0) 2010/07/21
Write your message and submit

HP서버에서 The cache for Smart Array P410i in Embedded Slot is disabled 메세지와 함께 Cache 기능이 작동하지 않을수 있습니다. (요즘 이런거 하고 있습니다. -ㅅ-;; 어느덧 하드웨어..)

Array Accelerator
Array Accelerator Present : True
Cache Status :  Permanently Disabled
Cache Status Details Cache disabled; run a diagnostic report for details.
Array Accelerator (Cache) Ratio : 100% Read / 0% Write
Total Cache Size : --- MB
Battery/Capacitor Pack Count : 0

이럴때 확인할수 있는 방법은, Cache 메모리가 정상인지 확인후 정상이지 않을경우 교체를 진행하여야 합니다.

1. 서버 전원을 내립니다.
2. 하드디스크를 다 제거 합니다.
3. 서버 전원을 올리고, RAID 초기화를 지켜본후, 서버를 다시 내려줍니다.
4. 하드디스크를 다시 삽입합니다.
5. 캐시가 올라왔는지 확인합니다.

계속 장애시에, 메모리 모듈 오류로 교체해야 합니다. :)
저작자 표시 비영리

'하드웨어' 카테고리의 다른 글

BIOS란 Firmware, 업그레이드 필요성  (0) 2010/07/22
[HP]Smart Array Cache is Permanently Disabled  (0) 2010/07/21
Write your message and submit

Msinfo32를 실행한다거나, 도움말 센터를 활용할때 사용하는 서비스로
중요한 서비스는 아니지만, 가끔 MSINFO32를 실행하여야하는 경우가 있어서 재설치 방법을 설명드리고자 합니다.

서비스가 정상적이지 않으면, 아래 두넘이 되지 않습니다.

위 Help and Support


 

위 MSINFO32


1. Help and Support 재설치 합니다.
%windir%\INF 디렉토리 안에 pchealth.inf를 찾아 마우스 우클릭 하여 설치(Install)을 누릅니다.
설치중 필요한 파일은 Windows CD를 넣어 해결합니다. (하드드라이브에 I386 디렉토리를 복사해 두시면 편리합니다.)

2. Help and Support 재등록 합니다.
우선 프로세스가 실행중인지 확인후 실행중이면 종료하고 아래 작업을 진행합니다.
확인해야할 프로세스 : helpsvc.exe, helphost.exe, helpctr.exe

그리고 아래 명령을 순차적으로 수행 하여 기존 서비스를 종료후 재등록을 합니다.

net stop helpsvc 엔터
cd /d %windir%\pchealth\helpctr\binaries 엔터
start /w helpsvc /svchost netsvcs /regserver /install 엔터
start /w helpsvc /register 엔터
start /w helpctr /regserver 엔터


정상등록이 되었느지 확인을 위해 services.msc를 열어 "Help and Support"가 있는지, msinfo32가 정상 실행되는지 확인하시면 됩니다.



 

저작자 표시 비영리

'운영체제 > Windows' 카테고리의 다른 글

재설치 Help and Support Center Service  (0) 2010/07/21
Microsoft 제품 지원 기간  (0) 2010/07/13
MPS Reports Viewer 2.0  (2) 2010/07/13
Physical Address Extension(PAE) 허와 실  (0) 2010/06/10
Windows 2003 기능사양 비교  (0) 2010/05/31
Windows 2008 기능사양 비교  (0) 2010/05/31
Write your message and submit
최근 하드웨어 지원을 하다보니, HP, IBM의 EOL,S에 대해 열심히 찾아보게 되었습니다.

잘 숨겨놓은건지 참 찾기 어렵더군요, -ㅅ-;

기본적인 개념을 잡은건 H/W의 경우 Retired 발표를 하고 더이상의 지원을 않해준다는 것입니다.

머리 뜯어 가면 결국 HP/IBM는 찾게 되어 알려드립니다.

HP는 HP Product Bulletin이라는 프로그램으로 지원하지 않는 제품 및 언제부터 않했는지를 편히 확인이 가능합니다.

http://h18004.www1.hp.com/products/quickspecs/productbulletin.html
위 링크로 들어가서 Visit the download site 를 눌려 설치후 Reitred Product로 확인 가능합니다.

IBM은... 따로 발표를 하지 않은것으로 보아 엔지니어에게 확인하였는데, 거희 지원하고 있다고 하더군요 ;;

엄청 옛날것인 NETFINITY 7100도 아직 지원 한다고 하니깐 뭐.. 거희 다 지원 될 듯 하네요..
저작자 표시 비영리
Write your message and submit

Microsoft 제품 지원 기간

Posted 2010/07/13 16:11
요즘 Microsoft 에서 더이상 지원하지 않는 제품이 많아지면서 이부분에 대한 관심이 많아지고 있습니다.

Microsoft의 기본 지원 방식은 다음과 같습니다.

제품 출시 후 5년간, 일반지원, 그후 5년간 연장 지원을 하면, 출시후 10년이 지나면 더이상 지원하지 않습니다.
그리고 지원유형별 가능 내용은 아래와 같습니다.

제공되는 지원

일반 지원

연장 지원

유료 문제 해결 지원 (문제(incident) 단위, 시간 단위, 기타)

X

X

보안 업데이트 지원

X

X

보안과는 관련 없는 핫픽스 지원

X

일반 지원 기간이 끝난 후 90일 이내에 추가 비용을 지불하여 연장 핫픽스 지원 계약 체결이 요구됨

무료 문제 해결 지원

X

 

일반 지원(Warranty) 주장

X

 

디자인 변경과 새 기능 요청

X

 

온라인 기술 자료(KB)에서 이용 가능한 제품 상세 정보

X

X

기술 질문에 대한 답변을 위한 Microsoft 고객 지원 사이트에서 이용 가능한 제품 상세 정보

X

X



제품별 지원 만료일은 아래 문서에서 확인할 수 있습니다.
http://support.microsoft.com/gp/lifeselectindex/ko#W
저작자 표시 비영리

'운영체제 > Windows' 카테고리의 다른 글

재설치 Help and Support Center Service  (0) 2010/07/21
Microsoft 제품 지원 기간  (0) 2010/07/13
MPS Reports Viewer 2.0  (2) 2010/07/13
Physical Address Extension(PAE) 허와 실  (0) 2010/06/10
Windows 2003 기능사양 비교  (0) 2010/05/31
Windows 2008 기능사양 비교  (0) 2010/05/31
Write your message and submit

MPS Reports Viewer 2.0

Posted 2010/07/13 14:20

오늘 Microsoft 사이트를 방문해서 유용한 도구를 발견하게 되었습니다.

다름아닌 MPS Reports Viewer

보통 Mircrosoft 기술지원 해보신 분들은 MPSREPORT라는 친숙한 툴을 알고 있을것입니다.

MPSREPORT를 실행하게 되면, 해당 실행 결과에 맞는 로그 및 이벤트, 테스트 실행결과를 CAB파일로 압축하여

Mircorsoft 기술지원을 원격에서 원활히 할수 있도록 돕는 도구 입니다.

이때 엔지니어는 해당 툴을 압축을 해제하여 로그를 확인하여야 하는데, 무수히 많은 파일들이 존재하여,

익숙하지 않은 분들은 어려움을 격을수 있고 더미 데이터들 속에서 필요한 내용을 확인하는 노하우가 필요합니다.

그런데 본 툴은, CAB의 로그를 분리하여, 엔지니어들이 오류를 찾는데 좀더 편하게 진행할수 있도록 도와줍니다.

또 시스템 별로 구분 및 시스템 정보를 표시 하여 여러 장애를 지원해야할때 유용 할것 같네요
* 기존 엔지니어들은 잘 사용하지 않을듯한 툴이긴 합니다.-_-;  겉싸는 툴을 않좋아하는 분들이 많더라구요
저작자 표시 비영리

'운영체제 > Windows' 카테고리의 다른 글

재설치 Help and Support Center Service  (0) 2010/07/21
Microsoft 제품 지원 기간  (0) 2010/07/13
MPS Reports Viewer 2.0  (2) 2010/07/13
Physical Address Extension(PAE) 허와 실  (0) 2010/06/10
Windows 2003 기능사양 비교  (0) 2010/05/31
Windows 2008 기능사양 비교  (0) 2010/05/31
  1. taehwa

    | 2010/07/19 09:07 | PERMALINK | EDIT | REPLY |

    설치해서 실행해 봤더니 known report 라고 나오네요 음냐

  2. BlogIcon 올엠

    | 2010/07/20 13:59 | PERMALINK | EDIT |

    저도 해봤더니, 않되더라구요. 새로나온 MPSREPORT(2008용)도 디버그 오류를 내뿜고, Network 쪽 정보만 정리되는.. 아직 불안정한거 같아요..
    좋다고 올려놓고 바로 구석에 처박은.. -ㅅ-;

Write your message and submit

대인배..?

Posted 2010/07/09 09:50
대인배... 많은 사람들의 존경과 사회적 직위를 갖은 사람..

폭포위에 서있는 사람같다.

나 역시 그렇게 되고자 바라는 것인지 모른다.

사람을 의식하고 살아가는 현재의 모습에서,
 
맘 편히 의지할 수 있는 사람은 없다...

마치 폭포밑에서 폭포 정면을 오르는것 같다.

위로 가면 부디치는 거쌘 물쌀에 내 뒤의 그림자를 보지 못하고,

등을 돌려 아래를 보면 밀려 내려가는게 두렵다.

나 하나 가누기 힘들어 쉬게 잡아주지 못한다..

나약하니깐 폭포 위에 가까울수록 물쌀이 거쌔지 않으니깐...

나의 욕심에.... 폭포 아래로 빠질 필요도 있겠다..





저작자 표시 비영리

'올엠의 > 히스토리' 카테고리의 다른 글

대인배..?  (0) 2010/07/09
Real water bed  (0) 2010/07/08
한강 유람선 시간표  (0) 2010/06/01
좋은 면접  (0) 2010/05/27
처음 한 매도  (0) 2010/02/17
"축의금 만 삼천원"  (0) 2009/09/22
Write your message and submit

Real water bed

Posted 2010/07/08 10:03
http://www.facebook.com/video/video.php?v=436889259127
크크크 정말 우껴요
저작자 표시 비영리

'올엠의 > 히스토리' 카테고리의 다른 글

대인배..?  (0) 2010/07/09
Real water bed  (0) 2010/07/08
한강 유람선 시간표  (0) 2010/06/01
좋은 면접  (0) 2010/05/27
처음 한 매도  (0) 2010/02/17
"축의금 만 삼천원"  (0) 2009/09/22
Write your message and submit
요즘 Windows 7이 이슈가 되면서, WIndows Xp와 Windows 7을 같이 사용하시는 분들이 많으실겁니다.

하지만 작업시 내문서 와 바탕화면에 주로 저장하게 되는 이를 매번 다른 경로에서 찾는것 만큼 번거로운것이 없습니다.

이를 편히 통합할수 있는 방법이 있는데, 간단히 Regedit의 경로 수정으로 동일한 내문서와 바탕화면을 사용할수 있습니다.

*주의 : 시작 메뉴 및 AppData, Cache 같은 경로는 기존 경로를 유지 하는것이 좋습니다, 설치 Windows 별 응용프로그램 환경이 다르기 때문이죠. 저같은 경우 Favorites(즐겨찾기), Desktop(바탕화면), Personal(내문서) 이렇게 3개만 변경하엿습니다.
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]

저작자 표시 비영리
Write your message and submit

BugCheck 0x50

Posted 2010/07/05 12:17
자주 만날수 있는 디버깅 오류 코드로 PAGE_FAULT_IN_NONPAGED_AREA 에 관한 오류 입니다.

PAGED와 NONPAGED AREA 란
윈도우에서 PAGE는 정보를 사용하기위한 정보를 저장해 놓은 것이라고 생각 하면 되는데, 기본 크기는 4096Byte 입니다. PAGE라는 용어는 여러 곳에서 사용되게 되며, NONPAGED란 가상 메모리화 할 수 없는 영역, 즉 시스템 메모리(실 메모리) 영역에서 오류가 발생했다는 판단 하시면 됩니다.

오류가 발생하는 원인
이유는 크게 2가지로 보실수 있습니다.
첫째는 함수로 지정한 공간이 너무 작은 경우 입력값이 커서 발생할 수 있으며,
두번째는 위의 반대 상황으로, 입력값이 너무 커서 발생할 수 있습니다.
같은 상황 같지만, 장애를 조치하는 방식에 있어서는 엄연히 다른 부분이 되겠지요.

해결 방법
어떠한 값이 잘못된 메모리 영역을 사용하도록 하였는지 확인하는게 키 포인트로,
잘못된 메모리를 찾았다면, 어떻게 잘못되게 되었는지 역으로 트래킹 해보아야 합니다.
사용할 만한 명령들
!analyze -v
.trap
.frame
dv
dt

보다 자세한 내용은 windbg help 파일을 참조하세요



저작자 표시 비영리
Write your message and submit
HP EVA 4400 설치 구성 가이드 메뉴얼 입니다.

EVA 하드웨어 설치 및 서버 연결 방법에 대해 나와 있습니다.



저작자 표시 비영리

'네트워크 > SAN' 카테고리의 다른 글

[스토리지]HP StorageWorks EVA 4400 Disk Array Guide  (0) 2010/07/02
Write your message and submit
최근  http://blogs.msdn.com/b/ntdebugging/ 에서 제공한 팁으로, CDDB(Critical Device Database)에 대한 내용과 나타날수 있는 장애에 대한 내용이 있습니다.

 BIOS를 업데이트 하고, Bugcheck 0x7B(Inaccessible_Boot_Device)를 나타낼 때 먼저 !devnode 명령을 통해 현재 어떤 디바이스에서 장애가 발생하였는지(Problem 원인) 확인하고, 해당 디바이스의 인스턴스를 확인하여(업데이트시 인스턴스는 동일해야 합니다.), 기존 레지스트리에 등록된 인스턴스 (HKLM\System\CurrentControlSet\ENUM\)와 차이가 없는지 확인하여 설치 파일의 Inf 내용을 수정하거나, 레지스트리를 수정(inf 수정 추천)하여 조치할수 있습니다.

저작자 표시 비영리
Write your message and submit

Default Password List

Posted 2010/06/22 09:30
앞으로 하드웨어 만지는 일도 할것 같다...

다음 사이트는 하드웨어의 장비 설정을 위해 들어가야하는 콘솔 기본 패스워드 값을 알려주고 있습니다.

http://www.phenoelit-us.org/dpl/dpl.html

저작자 표시 비영리
Write your message and submit

 

많은 분들이 메모리 분석을 시도 하고 있습니다.

 

하지만 어디서부터 시작해야할지 막막할때가 많죠

제가 생각하기에 가장 먼저 해야할일은 스택의 구조를 파악하는 일을 해야한다 생각합니다.

컴퓨터를 하시는 분들은 메모리가 스택구조로 되어 있다고 알고 있으실 겁니다.

선입후출 이라는 것이죠

 

그럼 다음 내용을 보고 어떤 내용인지 알수 있을까요?

42 01001360 8bff mov edi,edi

    42 01001362 55 push ebp

    42 01001363 8bec mov ebp,esp

    42 01001365 83ec14 sub esp,14h

    43 01001368 c745ec03000000 mov dword ptr [ebp-14h],3

    44 0100136f c745f401000000 mov dword ptr [ebp-0Ch],1

    44 01001376 c745f802000000 mov dword ptr [ebp-8],2

    44 0100137d c745fc03000000 mov dword ptr [ebp-4],3

    45 01001384 c745f000000000 mov dword ptr [ebp-10h],0

    47 0100138b 8d45f0 lea eax,[ebp-10h]

    47 0100138e 50 push eax

    47 0100138f 8b4dec mov ecx,dword ptr [ebp-14h]

    47 01001392 51 push ecx

    47 01001393 8d55f4 lea edx,[ebp-0Ch]

    47 01001396 52 push edx

    47 01001397 e824000000 call 05stackdesc!Sum (010013c0)

    48 0100139c 8b45f0 mov eax,dword ptr [ebp-10h]

    48 0100139f 50 push eax

    48 010013a0 6874110001 push offset 05stackdesc!`string' (01001174)

    48 010013a5 ff1584100001 call dword ptr [05stackdesc!_imp__wprintf (01001084)]

    48 010013ab 83c408 add esp,8

     49 010013ae 8be5 mov esp,ebp

    49 010013b0 5d pop ebp

    49 010013b1 c3 ret
자 선입후출의 의미로만 알수 있을까요?

이 의미만으로는 아무것도 알수가 없지요..

 

정확히 메모리의 구조를 이해하기 위해서는 스레드들이 어떻게 처리되는지 더 자세히 확인해볼 필요가 있습니다.

 

그럼 위 구조 내용을 통해, 확인해 보도록하겠습니다.

 

스택은 아래와 같이 구분할 수 있습니다.

함수 도입부

함수 코드

함수 종결부

 

그러다면 함수 도입부를 확인해 보도록 하겠습니다.

42 01001360 8bff mov edi,edi

    42 01001362 55 push ebp

    42 01001363 8bec mov ebp,esp

    42 01001365 83ec14 sub esp,14h

    43 01001368 c745ec03000000 mov dword ptr [ebp-14h],3

    44 0100136f c745f401000000 mov dword ptr [ebp-0Ch],1

    44 01001376 c745f802000000 mov dword ptr [ebp-8],2

    44 0100137d c745fc03000000 mov dword ptr [ebp-4],3

    45 01001384 c745f000000000 mov dword ptr [ebp-10h],0

    47 0100138b 8d45f0 lea eax,[ebp-10h]

    47 0100138e 50 push eax

    47 0100138f 8b4dec mov ecx,dword ptr [ebp-14h]

    47 01001392 51 push ecx

    47 01001393 8d55f4 lea edx,[ebp-0Ch]

    47 01001396 52 push edx

양이 많죠? 위 부분이 함수 도입부 인데, 함수를 저장할 공간을 할당하고, 기존 포인터 위치를 기억하는 게 주된 목적 입니다.

위 부분에서 ebp에 대해 알아 보도록 합시다.

ebp는 알아두어야 할 내용이 항상 주어진 프레임의 베이스 포인터(Base Pointer)를 포함한다고 생각하시면 됩니다.

그럼 아래내용은 무엇을 뜻하는 것일까요?

42 01001362 55 push ebp

    42 01001363 8bec mov ebp,esp

Push 명령을 통해 ebp를 집어넣으라는 명령으로, Stack에 자료를 집어넣을 때 사용하는 것입니다.

쉽게 말해 ebp를 집어넣으라는 뜻이지요

그래서 mov 명령으로 esp 값(Stack Pointer)을 ebp에 저장하라는 명령이 나오게됩니다.

esp는 현재 스택 포인터 값으로, 이 포인터 위치는 항상 변하게 되므로, 항상 호출 이전의 원래 상태로 복귀됨을 보장하여야하는 메모리 구조상 esp의 복귀 주소를 사용할수 없기 때문에 ebp를 통해 복귀할 수 있는 주소를 저장하게 됩니다. (이 행동의 거희 모든 스택의 기본 동작으로 들어가 있습니다.)

mov edi,edi는 긴급 패치를 위해 사용하는데 대부분 nop(no operation)으로 상태가 됩니다. 가용성 측면으로 비사용시간을 줄이기위해 필수적으로 사용하게 됩니다. 이는 나중에 jmp 코드를 이용하기 위해 넣어 둔것이라고 생각하시면 됩니다.

 

자 그럼 도입부분으로 프레임의 베이스 포인터 위치를 ebp에 저장하여 프레임 복귀위치를 저장하였습니다.

이제 다음 스택을 보도록 하겠습니다.

    42 01001365 83ec14 sub esp,14h

    43 01001368 c745ec03000000 mov dword ptr [ebp-14h],3

    44 0100136f c745f401000000 mov dword ptr [ebp-0Ch],1

    44 01001376 c745f802000000 mov dword ptr [ebp-8],2

    44 0100137d c745fc03000000 mov dword ptr [ebp-4],3

    45 01001384 c745f000000000 mov dword ptr [ebp-10h],0

esp, 14h가 의미하는건 14h를 10진수로 변환해 보면, 20바이트가 되며, sub는 빼는것으로, 20바이트 만큼 공간을 생성하도록 되어 있습니다.

왜 이렇게 공간을 생성하는게 빼기를 하였을까요?

메모리의 저장 위치를 잘 보시면 저장 위치의 값이 감소하도록 되어 있습니다.

즉 밑으로 갈수록 값이 감소하고 있는것이지요

그래서 아래 공간은 빼기를 통해 확보하게 됩니다.

그렇게 확보한 공간에 ebp(베이스 포인터)의 위치 값을 이용하여 (베이스 포인터는 절대 위치 값처럼 그 프레임 내에서는 변화하지 않기 때문에 변수 저장과 같은 절대 위치가 필요한 값 저장에 사용하게 됩니다.)스택기반 지역 변수를 초기화 하게 됩니다.

그 내용이

    43 01001368 c745ec03000000 mov dword ptr [ebp-14h],3

    44 0100136f c745f401000000 mov dword ptr [ebp-0Ch],1

    44 01001376 c745f802000000 mov dword ptr [ebp-8],2

    44 0100137d c745fc03000000 mov dword ptr [ebp-4],3

    45 01001384 c745f000000000 mov dword ptr [ebp-10h],0

위 부분이 되겠습니다.

그리고 포인터 전달 명령인 lea를 통해 인자를 스택에 저장 합니다.

42 01001360 8bff mov edi,edi

    42 01001362 55 push ebp

    42 01001363 8bec mov ebp,esp

    42 01001365 83ec14 sub esp,14h

    43 01001368 c745ec03000000 mov dword ptr [ebp-14h],3

    44 0100136f c745f401000000 mov dword ptr [ebp-0Ch],1

    44 01001376 c745f802000000 mov dword ptr [ebp-8],2

    44 0100137d c745fc03000000 mov dword ptr [ebp-4],3

    45 01001384 c745f000000000 mov dword ptr [ebp-10h],0

    47 0100138b 8d45f0 lea eax,[ebp-10h]

    47 0100138e 50 push eax

    47 0100138f 8b4dec mov ecx,dword ptr [ebp-14h]

    47 01001392 51 push ecx

    47 01001393 8d55f4 lea edx,[ebp-0Ch]

    47 01001396 52 push edx

이렇게 지역 변수를 다 저장하고 나면, Call 명령을 통해 해당 변수를 사용하게 됩니다.

그리고 수행을 마치고 마지막에 esp에 처음 저장한 ebp를 대입하여, 복귀하고, 해당 프레임을 빠져 나오게 됩니다.

49 010013ae 8be5 mov esp,ebp

    49 010013b0 5d pop ebp

    49 010013b1 c3 ret

이렇게 하나하나의 프레임의 복귀 주소를 저장하고 변수를 저장후 Call을 통해 해당 명령을 수행하는 구조가 메모리의 기본 구조가 되겠습니다.

^^;

아직 알아야하는부분은 더 많지만 오늘은 스택의 기본 구조 1은 이 정도로 마무리 하도록 하겠습니다.

  1. | 2010/06/21 21:52 | PERMALINK | EDIT | REPLY |

    비밀댓글 입니다

  2. BlogIcon 올엠

    | 2010/07/07 14:27 | PERMALINK | EDIT |

    안녕하세요 늦게 댓글을 달게 되네요,
    그런데 어쩌죠?
    현재 초대장을 주변분들에게 모두드려서 없는 상태에요..
    만약 나중에 생기게 되면 메일로 보내드릴께요 ^^

Write your message and submit

메모리 깨짐 증상으로 인해 발생하는 Clush 상황에 따른 덤프 분석내용 입니다.


분석 내용

*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced.  This cannot be protected by try-except,
it must be protected by a Probe.  Typically the address is just plain bad or it
is pointing at freed memory.
Arguments:
Arg1: fffffa821440c7fe, memory referenced.
Arg2: 0000000000000000, value 0 = read operation, 1 = write operation.
Arg3: fffffa6009fe1763, If non-zero, the instruction address which referenced the bad memory
 address.
Arg4: 0000000000000005, (reserved)

Debugging Details:
------------------

PEB is paged out (Peb.Ldr = 000007ff`fffdc018).  Type ".hh dbgerr001" for details
PEB is paged out (Peb.Ldr = 000007ff`fffdc018).  Type ".hh dbgerr001" for details

READ_ADDRESS:  fffffa821440c7fe

FAULTING_IP:
V3Flt2K+11763
fffffa60`09fe1763 0fb70441        movzx   eax,word ptr [rcx+rax*2]

MM_INTERNAL_CODE:  5

IMAGE_NAME:  V3Flt2K.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  4afbd730

MODULE_NAME: V3Flt2K

FAULTING_MODULE: fffffa6009fd0000 V3Flt2K

DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT

BUGCHECK_STR:  0x50

PROCESS_NAME:  w3wp.exe

CURRENT_IRQL:  0

TRAP_FRAME:  fffffa600a7f22e0 -- (.trap 0xfffffa600a7f22e0)
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=00000000ffffffff rbx=0000000000000000 rcx=fffffa801440c800
rdx=fffffa80153355e0 rsi=0000000000000000 rdi=0000000000000000
rip=fffffa6009fe1763 rsp=fffffa600a7f2470 rbp=fffffa8011d1d450
 r8=fffffa801440c800  r9=fffffa800acf5910 r10=0000000000000001
r11=0000000000000002 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0         nv up ei ng nz ac po nc
V3Flt2K+0x11763:
fffffa60`09fe1763 0fb70441        movzx   eax,word ptr [rcx+rax*2] ds:24d0:c7fe=????
Resetting default scope

LAST_CONTROL_TRANSFER:  from fffff8000165bce0 to fffff8000164dbd0

STACK_TEXT: 
fffffa60`0a7f21e8 fffff800`0165bce0 : 00000000`00000050 fffffa82`1440c7fe 00000000`00000000 fffffa60`0a7f22e0 : nt!KeBugCheckEx
fffffa60`0a7f21f0 fffff800`0164c759 : 00000000`00000000 00000000`00000000 fffffa80`0bb78700 00000000`00000000 : nt!MmAccessFault+0x4f0
fffffa60`0a7f22e0 fffffa60`09fe1763 : 00000000`00000000 00000000`00000000 fffffa80`11d1d5a0 fffffa60`09fe1182 : nt!KiPageFault+0x119
fffffa60`0a7f2470 fffffa60`09fe1182 : fffffa80`1440c800 fffffa60`09fd632f fffffa80`11d1d500 fffffa60`0a7f2598 : V3Flt2K+0x11763
fffffa60`0a7f2490 fffffa60`09fd64f6 : fffffa80`15335510 fffffa80`153355e0 fffffa80`1440c800 fffffa80`0acf5910 : V3Flt2K+0x11182
fffffa60`0a7f24f0 fffffa60`00d4505a : fffffa80`11d1d500 fffffa60`0a7f2598 fffffa60`0a7f2580 00000000`00000010 : V3Flt2K+0x64f6
fffffa60`0a7f2540 fffffa60`00d4432c : 00000000`00000000 fffffa80`0fb7e300 fffffa80`0c666f00 fffffa80`1000000c : fltmgr!FltpPerformPreCallbacks+0x28a
fffffa60`0a7f2620 fffffa60`00d60256 : fffffa80`09dac040 fffffa80`0c666f20 fffffa80`0fb7e0c0 fffffa60`0a7f26a0 : fltmgr!FltpPassThroughInternal+0x3c
fffffa60`0a7f2650 fffff800`018d5393 : 00000000`00000005 fffffa80`0ccf4b10 00000000`00000040 00000000`00000000 : fltmgr!FltpCreate+0x247
fffffa60`0a7f2700 fffff800`018cf069 : fffffa80`0960dcc0 00000000`00000000 fffffa80`1f44b010 fffff800`018fa501 : nt!IopParseDevice+0x5e3
fffffa60`0a7f28a0 fffff800`018d2f54 : 00000000`00000000 fffffa80`18f14101 00000000`00000040 00000000`00000000 : nt!ObpLookupObjectName+0x5eb
fffffa60`0a7f29b0 fffff800`018df430 : 00120089`80100080 00000000`0909ddb8 fffffa80`1e07e501 fffffa80`1e07e540 : nt!ObOpenObjectByName+0x2f4
fffffa60`0a7f2a80 fffff800`018dff5c : 00000000`0909dd48 00000000`80100080 fffffa80`1d9db060 00000000`0909dd68 : nt!IopCreateFile+0x290
fffffa60`0a7f2b20 fffff800`0164d673 : fffffa80`1d9db060 00000000`0909fcc8 fffffa60`0a7f2bc8 fffff800`018cc4d4 : nt!NtCreateFile+0x78
fffffa60`0a7f2bb0 00000000`777b5fca : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x13
00000000`0909dcd8 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x777b5fca


STACK_COMMAND:  kb

FOLLOWUP_IP:
V3Flt2K+11763
fffffa60`09fe1763 0fb70441        movzx   eax,word ptr [rcx+rax*2]

SYMBOL_STACK_INDEX:  3

SYMBOL_NAME:  V3Flt2K+11763

FOLLOWUP_NAME:  MachineOwner

FAILURE_BUCKET_ID:  X64_0x50_V3Flt2K+11763

BUCKET_ID:  X64_0x50_V3Flt2K+11763

Followup: MachineOwner
---------

3: kd> .trap 0xfffffa600a7f22e0
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=00000000ffffffff rbx=0000000000000000 rcx=fffffa801440c800
rdx=fffffa80153355e0 rsi=0000000000000000 rdi=0000000000000000
rip=fffffa6009fe1763 rsp=fffffa600a7f2470 rbp=fffffa8011d1d450
 r8=fffffa801440c800  r9=fffffa800acf5910 r10=0000000000000001
r11=0000000000000002 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0         nv up ei ng nz ac po nc
V3Flt2K+0x11763:
fffffa60`09fe1763 0fb70441        movzx   eax,word ptr [rcx+rax*2] ds:24d0:c7fe=????

3: kd> dd fffffa821440c7fe <-- 잘못된 메모리 영역 참조
fffffa82`1440c7fe  ???????? ???????? ???????? ????????
fffffa82`1440c80e  ???????? ???????? ???????? ????????
fffffa82`1440c81e  ???????? ???????? ???????? ????????
fffffa82`1440c82e  ???????? ???????? ???????? ????????
fffffa82`1440c83e  ???????? ???????? ???????? ????????
fffffa82`1440c84e  ???????? ???????? ???????? ????????
fffffa82`1440c85e  ???????? ???????? ???????? ????????
fffffa82`1440c86e  ???????? ???????? ???????? ????????

3: kd> db fffffa801440c800
fffffa80`1440c800  00 00 0d 17 80 fa ff ff-69 00 63 00 65 00 5c 00  ........i.c.e.\. <--- 깨진부분
fffffa80`1440c810  48 00 61 00 72 00 64 00-64 00 69 00 73 00 6b 00  H.a.r.d.d.i.s.k.
fffffa80`1440c820  56 00 6f 00 6c 00 75 00-6d 00 65 00 32 00 5c 00  V.o.l.u.m.e.2.\.
fffffa80`1440c830  48 00 59 00 55 00 4e 00-44 00 41 00 49 00 5c 00  H.Y.U.N.D.A.I.\.
fffffa80`1440c840  30 00 34 00 20 00 1c ac-1c bc 8c c1 a4 c2 5c 00  0.4. .........\.
fffffa80`1440c850  30 00 34 00 20 00 31 00-30 00 20 00 57 00 65 00  0.4. .1.0. .W.e.

조치 방법

안철수 연구소 확인결과 타고객사 유사건으로 확인한 내역이 있어 이에 따른 안정성을 위해 핫픽스를 제공

v3Net7.0 제품에서 메모리 관련 방어 코드 수정

[패치내용]
파일 path가 비 정상 적으로 입력되거나 해당 메모리가 깨져 있을 경우에 대한 방어 코드 추가

[변경사항]
파일 버퍼의 유효성 확인 코드 추가

[변경모듈]
v3flt2k.sys 7.1.0.15

저작자 표시 비영리
Write your message and submit