2017년 7월 18일 화요일

wuaueng.dll ___ 0

사용 환경 : Windows XP SP3
CPU : Intel Pentium-D

문제의 증상 :

  • 최근 1~2년 사이에 발견한 것으로, 아이들(Idle) 상태의 CPU의 점유율이 50% 이상을 유지함.
  • 해당 프로세스는 svchost.exe였으며, 같은 이름의 프로세스 여러개가 동시에 존재하지만, 그 가운데 하나만 CPU 50%를 독점하고 있었음.
  • 해당 프로세스(svchost.exe)는 Automatic Update, BITS, COM+ Event System 등의 서비스들을 관장하는 프로세스였음.(Process Explorer로 확인)
  • 해당 프로세스 thread가운데, 시작 주소(Start Address)가 wuaueng.dll+0xa4f42인 thread가 CPU를 독점하고 있었으며 매우 빠른 Context Switching이 일어나고 있었음.
  • 해당 thread를 suspend 시킬 수 있었으며, suspend된 후에는 CPU 점유율이 정상으로 돌아 옴.
  • 현재 사용 중인 wuaueng.dll은 2010년 8월 18일에 만들어졌으며, 버전은 7.6.7600.256, 설명은 Windows Update Agent로 되어 있음.
  • 이 현상은 Windows 자동 업데이트 설정과는 무관하게 발생하는 것으로 보임.

CPU를 점유한 svchost.exe

해당 svchost.exe의 설명

CPU를 점유하고 있는 thread

suspend 시키자 CPU 점유율이 없어진다.

해당 모듈의 등록 정보

해당 모듈의 버전

이에 관한 문제를 해결하기 위해서 MS의 support와 MSDN을 검색했지만, 문제에 대한 제기는 있어도 해결 방법에 대해서는 별 정보가 없었다.

우연히 한글로 된 블로거의 포스팅을 발견하였고, 이 문제를 해결해 보고 싶어서 그 과정을 기록하기로 했다.


Windows가 느려졌다?

최첨단의 기술을 필요로하는 게임을 하는 것도 아니다.

하던 업무의 목표가 상향되면서, 더 복잡하고 다양한 기능을 가진 S/W로 업그레이드 한 것도 아니다.

늘상 하던 일을 했고, 내가 원하는 목표치는 항상 같은 수준이었다.

그래서 매일 같은 프로그램을 사용하고, 매일 같은 작업을 반복하고 있다.

그런데, 왜 내 컴퓨터는 점점 느려지는 걸까?


대단한 통찰력의 컬럼을 쓰려는 게 아니다.

그동안 겪었던 몇가지 궁금증, 발견한 몇가지 사실, 그리고 밝히고 싶은 몇가지가 있어서이다.


궁금증에 대한 한가지 설명(?)

- 매일 같은 브라우저를 열어서 같은 사이트를 돌아다니는데, 어느날 부터인가 부쩍 느려지고 버벅대는 컴퓨터. 대체 무엇때문일까?

:
(1) 나도 모르게 브라우저는 조금씩 조금씩 업데이트를 하면서 버그도 고치고, 새로운 사양의 기술도 추가해 나간다. 그러면서 조금씩 무거워지고 느려진다.
(2) 새로운 사양의 기술은 조만간에 여러 웹사이트에서도 적용된다. 아니 대부분의 웹사이트는 새로운 기술이 아니더라도, 자체의 룩앤필(Look & Feel)을 바꾸기도 하고, 내용을 바꾸면서 웹사이트 자체가 무거워지기도 한다.(사실 이게 대부분...)
(3) 흔하게 듣는 해결법에 해당하는 것으로, 인터넷 페이지의 방문 기록, 임시 파일, 캐쉬 파일 등등이 너무 많아져서 저장 매체의 처리가 느려지기 때문에 발생하는 문제도 있다. 이 경우에는 브라우저의 설정 등에서 쓸모없는 파일들을 지워주면 된다.


발견한 몇가지 원인들

- 구글 크롬 브라우저의 백그라운드 프로세스 문제
: 구글의 설정에서 선택할 수 있다.
 브라우저를 종료했음에도 불구하고 컴퓨터가 느리다면 한번쯤 확인해 봄직하다.
 크롬 브라우저가 워낙에 자주 업데이트되다 보니 어렵지 않게 부딪히는 문제인데, 백그라운드 상태에서 업데이트를 하느라 CPU와 Network, Disk를 상당 부분 점유하곤 하는데, 처음에는 이유를 몰라서 당황하다가 이유를 알고나서 괘씸해서 설정을 바꾸어 버리게 된다.

- LoL의 백그라운드 업데이트 문제.
: League of Legend도 크롬과 마찬가지인데, LoL의 경우에는 이를 사용자의 마음대로 바꿀 설정이 없다는 것. 보통은 게임을 다 마치고 난 뒤에 컴퓨터가 현저하게 느려지곤 하는데, LoL의 업데이트는 용량이 매우 크고 CPU를 많이 사용하는 듯이 보여서 체감상의 성능 저하가 크게 느껴진다.



밝히고 싶은 몇가지

- 특정 svchost.exe가 CPU를 독점하는 문제 (wuaueng.dll의 문제)
- nossvc.exe

2017년 1월 25일 수요일

키보드 후킹

MS-Windows 환경에서 키보드를 후킹하는 방법에 대한 프로그래밍 예 입니다.

http://www.codeguru.com/cpp/w-p/system/keyboard/article.php/c5699/Hooking-the-Keyboard.htm

반(反) 역공학 방지 기법?

Reverse Engineering Protection Technique = 역공학 방지 기법
Anti Reverse Engineering Technique = 반 역공학 기법

이 정도로 해석하고 이해하면 좋을 듯 한데,

Anti Reverse Engineering Protection Technique은 대체 뭐라고 해석하고 이해해야 하는 걸까?

반 역공학 방지 기법?

그렇다면 역공학 방지 기법을 무력화시키는 기법이라는 뜻인걸까?

그렇다면 다음 구문은...

Anti Reverse Engineering Protection Technique To Use Before Releasing Software
(원문에서 사용한 대문자를 그대로 사용한 것임)

'소프트웨어를 출시하기 전에 적용해야 하는 반 역공학 방지 기법'???

통상적인 소프트웨어라면, 역공학 기법에 의해 위변조 되어 악용되거나 핵심적인 기법이 노출되는 것을 방지할 필요성이 있을 수 있지만, 반 역공학 방지 기법이 필요한 소프트웨어란 대체 무엇일까?

암튼, 해당 사이트의 URL은 다음과 같다.
https://www.apriorit.com/dev-blog/367-anti-reverse-engineering-protection-techniques-to-use-before-releasing-software

================================================================
※ 오랫만에 위 링크를 다시 방문해 보니 페이지의 타이틀이 바뀌었다.
Anti Debugging Protection Techniques With Examples.
'나처럼 이상하게 생각하는 사람이 많아서 정정했나 보군'이라고 잠시 생각했지만, 가만히 보니 이것도 별반 다를 것 없는 이상한 문장.
정확한 내용은 본문을 읽어 봐야 알듯. 그런데 아직도 안 읽어봤으면서 대체 언제 읽어 볼건데?

※ 이런 건 어떨까? 참고할 만한 링크 추가.
https://www.codeproject.com/Articles/30815/An-Anti-Reverse-Engineering-Guide
An Anti Reverse Engineering Guide
================================================================