2018년 8월 23일 목요일

카카오톡 친구 차단에 대한 진실?

카카오톡을 아주 최근에야 설치하게 되었다.(바로 이틀 전이다.)

지금까지 카카오톡을 설치하지 않았던 이유는,
 - 주소록에 있는 사람들이 자동으로 친구로 등록된다는 문제.
 - 나의 근황을 알리고 싶지 않은 사람도 있고, 그런 사람들에게 관심을 일으키고 싶지도 않었다.
 - 개인적으로 사람들과의 교류는 적정한 거리가 필요하다는 평소의 생각도 한몫. 너무나 쉬운 연결 통로는 나의 개인적인 시간과 여유를 침범할 것이 자명하기 때문이었다.


그럼에도 불구하고 카카오톡을 설치한 이유는,
 - 몇몇이 함께 만나는 모임에서 약속 시간과 장소를 정하기 위해서 누군가 문자메시지를 모두에게 중복해서 발송해야 하고, 또 다른 사람의 의견이나 사정을 나머지 인원에게 재전송해야 하는 어려움을 겪고 있었다. 그래서 모두가 한번에 모여 얘기할 단톡방이나 채팅 공간이 필요했다.
 - 처음에는 녹색창 회사의 밴드를 쓰려 했는데, 누군가가 안쓴다고 해서, 결국은 모두가 쓴다는(나를 제외하고) 카카오톡을 선택.
 - 위에서 내가 우려했던 문제들은 적절한 설정을 통해서 방지할 수 있다는 친구의 설명을 들었다.



인터넷에서 검색을 해 보니, 실제로 카카오톡의 설정에서 "자동 친구 추가"를 해제함으로써 내가 우려했던 문제들이 해결된다는 글들이 여럿 보였다.

그리고, 용기를 내어 카카오톡을 설치하고, 본인 인증도 하고, "자동 친구 추구"나 "친구 추천"등의 설정을 모두 막아놓고 일단락.

모임의 친구들은 다음날 추가하려고 생각하고 잠이 들었다.



다음 날, 가족들이 만든 단톡방을 틍해서 누이가 톡을 보내왔다. 드디어 가입했구나, 축하한다, 어서 와라.... 허걱

인사도 뒤로 미루고, 대체 어떻게 알게 된건지 추궁하자 아버지의 스맛폰에 내가 친구로 올라왔다는 것. 그걸 보고 누이도 확인하고 톡을 보내왔다는 것.

대체 무슨일이 벌어진걸까?

잠시후에는 더 놀라운 일들이 벌어졌는데, 내 주소록에 있는 사람들 중 대다수가 친구로 올라왔다는 것. 나는 황급하게 가족과 몇몇의 친구들을 제외하고는 모든 친구들을 일일이 차단했고, 프로파일 비공개까지 설정을 해 줘야 했다.



가족들 모두 톡을 나누는 동안 카카오톡의 고객센터 항목에서 문의하기에 장문의 글을 올렸다.
그리고 다음날에야 답변이 올라왔다.


내가 올린 질문의 요지는, "나는 자동으로 친구가 추가되는 것을 원하지 않아서 모든 설정에 이와 관련된 것들을 모두 해제해 두었다. 그런데 원치 않는 상대방에게는 내가 친구로 보여졌다. 대체 무엇이 잘못된 것인가? 내가 설정을 잘 못한 것이 있는가?"

그리고 답변의 요지는, "카카오톡은 주소록에 저장된 번호의 사람이 카카오톡에 가입하면 친구로 등록되는 것이 기본 메커니즘이다. 따라서 니가 설정을 어떻게 하든지, 누군가 주소록에 너를 등록해 두었다면 그 사람에겐 니가 친구로 나타난다."라는 거....ㅆㅂ



그리고 더더욱 반가운(?) 사실은, 일단 상대방에게 친구로 나타나면, 니가 뭘 어떻게 하든지 상대방의 친국 목록에서 뺄 수 있는 방법은 없다는 거... 푸하하핳ㅎㅎㅎㅎㅎㅎㅎㅎㅎ


모두가 이런 사실을 알고 있는걸까?
아마 사용하고 있는 사람이라면 누구나 다 알고 있을 듯도 하지만,
아직 사용하지 않고 있는 사람이라면, 인터넷에 떠도는 그런 낭설을 믿고 안심해서 가입했다가 낭패를 보는 일은 없었으면 한다.

카카오가 프라이버시라는 단어의 의미를 알고는 있는 걸까?

2018년 7월 10일 화요일

하드 디스크 드라이브의 노후

과연 하드디스크 드라이브는 얼마나 오랜시간을 사용할 수 있을까?

지금까지 사용했던 수많은 하드디스크드라이브는 대부분 어느 시점엔 폐기었는데,
초창기에는 하드디스크 드라이브의 인터페이스의 변화에 따라 새로운 시스템에 사용이 불가능해지거나, O/S의 변화와 기술의 변화에 따라 필요로 하는 용량이 극적으로 늘어나면서 폐기되기도 했다.

물론 사용 중에 고장으로 인해 페기된 경우도 많았는데, 대부분은 IDE interface 방식으로 어느 순간에 갑자기 시스템에서 하드디스크를 인식하지 못하게 되거나, "딸깍,- 딸깍-..."하는 소리를 내면서 정상적으로 데이터를 읽고 쓰지 못하게 되면서 O/S 부팅이 되지 않게되곤 한다.
(전문적인 지식이 없지만, 나름대로 짐작하기에는 하드디스크의 뒷면에 부착되어 있는 interface B'd에 문제가 생겨서 고장난 것으로 생각된다.
즉, 물리적인 디스크와 헤드는 정상이므로, 이 Board만 수리하거나 같은 모델로 교체하면 정상적으로 작동하지 않을까 싶기는 하다.)


2018년 7월 11일 현재 사용하고 있는 컴퓨터 시스템도 꽤 오래된 구닥다리이지만, 여기에 장착해서 사용하고 있는 하드디스크도 굉장히 오래되었는데, 중간에 한번 교체한 것이긴 하지만 한번도 문제 없이 지금까지 사용하고 있다.(언제부터 쓴거지?)

그런데 며칠 전부터 컴퓨터가 이상하게 느려지기 시작했다.

항상 프로세스들에 대해 주시를 하고 있었는데, 특별히 이상한 프로세스도 없었다.
물론 안티 바이러스 프로그램은 사용하지 않는다.

그러다 발견하게 된 이상한 현상은,


컴퓨터가 느려진다 생각될 때에, Hardware Interrupts and DPCs가 CPU를 대부분 점유하고 있는 것을 알게 되었다.


그리고 혹시나 하는 생각에 하드디스크에 문제가 있는 것이 아닌가 싶어 확인을 해 보았다.
사용한 프로그램은 HD Tune.

HDTune Benchmark

전송 송도가 정상의 1/30에도 미치지 못한다.
인터넷을 찾아보니 이 모델의 평균 전송 속도는 대략 100MB/sec 전후.
Access Time은 거의 정상.
그리고 하드디스크가 자신의 일을 잘 못할 뿐 아니라, 이로 인해 컴퓨터가 전반적으로 느려지는 지대한 공헌(?)을 했다는 증거인 CPU Usage는 무려 55.8%.
아마도 정상이라면 2~4%를 넘지는 않았어야 하는 항목이다.

HD Tune의 나머지 항목도 살펴 보았다.

HDTune Info
HDTune Health

보통 하드디스크에 문제가 발생하면,
위의 항목 중 (05) Reallocated Sector Count가 증가하기 시작한다.
확실하진 않지만 아마 (C4) Reallocated Event Count도 같이 증가하지 않을까 싶다.
내 디스크의 경우에는 (C7) Ultra DMA CRC Error Count가 1146이 나왔다는게 의심스러웠는데 며칠간 추적해 봐도 더 이상 늘어나지는 않았다.

문득 이걸 보면서 들었던 생각은... 참 많이 썼구나... 였다.
(09) Power on Hours Count : 작동 시간이 30728시간. 3.5년간 하루 24시간 계속 사용해야 하는 시간이다.
(0C) Power Cycle Count : 껐다가 켠 횟수 5205회. 하루 한번씩만 컸다 켜도 14년이 걸리는 횟수.

HDTune Error Scan
시간이 너무 많이 걸리고, 상태도 메롱이라 Quick Scan으로 검사해본 결과는 이상이 없다.


인터페이스 보드에 문제가 생겨서 인식 불량, 데이터 접근 불가능의 문제가 생기는 경우는 종종 봐왔지만, 마치 사람이 늙어서 기운이 떨어지는 것처럼 하드디스크가 성능이 급격히 느려지는 경우는 처음이었다.

사실 이에 대해서 다른 의심을 해 보기도 했다.
여름이 되면 온도가 상승하면서 컴퓨터의 여러 부품들에도 열이 가해져서 데미지를 입는 경우가 있다.
혹시 파워서플라이에 문제가 있어서 적정한 전압이 공급되지 않거나 전력이 부족해서 생긴 현상은 아닐까 하는 의심.
전력의 문제는 모르겠으나, 직접 확인해 보니 전압은 정상적으로 공급되고 있었다.


언제 갑자기 동작을 멈춘다해도 이상하지 않을 상황이라, 새로운 하드디스크를 주문해 놓은 상태이다.

이제는 편히 쉬도록 해 주어야 하는 걸까?

2018년 1월 16일 화요일

Android 에뮬레이터?

Google에서 제공하는 Android SDK에 포함된 Android 에뮬레이터는 매우 무겁고 느리게 느껴진다.

Android 버전에 따라, Host의 시스템 성능에 따라 많이 달라지기야 하겠지만...

개발자의 입장에서는 실제 Android 기기와 100% 동일하게 작동하는 에뮬레이터가 가장 이상적이겠지만, 나처럼 특정 App을 PC에서 사용해야 하는 사용자의 입장이라면 완벽한 호환성은 양보하더라도 무난하게 사용할 수 있는 성능도 중요하다.

아마, 언젠가 이런 필요성 때문에 Android 에뮬레이터를 알아보긴 했었나보다.
그리고 언제나처럼 귀차니즘으로 "알아보기"만 하고 마무리는 짓지 못했었던 듯...

다시 필요성이 느껴져 잠시 고민을 하다가,
Android-x86이라는 것이 있음을 알게 되었다.
Virtualbox에 Android-x86을 설치하면 꽤 무난한 성능을 보여주길 기대하면서...

설치하는 방법은
https://www.howtogeek.com/164570/how-to-install-android-in-virtualbox/

Android-x86의 ISO를 다운로드 하는데 시간이 꽤 걸린다.
600~700MB 정도인데, 서버가 그리 넉넉하지는 않은 것인지 1시간 넘게 걸려야 다운로드가 완료될 예정.
기다리는 동안에 간략하게 포스팅 하는 중.

모쪼록, 다운로드 후에 귀찮다고 내버려 두지 않길 바란다.


다행히도, 다운로드 후에 설치도 해 보았고 몇가지 작동도 해 보았다.
우선 몇가지 팁(?)을 적어야 겠다.

  • 반드시 Virtualbox의 "마우스 통합 비활성화"를 선택해야만 한다.
    Virtualbox 메뉴의 "머신" 항목에 있으며 단축키는 Host(우측 컨트롤키) + i로 토글된다.
    이걸 선택해야만 하는 이유는, 터치하지 않은 상태에서도 마우스의 움직임을 볼 수 있기 때문인데.... 잘 이해가 안되면 직접해 보면 알게 된다.
  • 시스템을 종료할 때에는 Virtualbox 메뉴 "머신 - ACPI종료"를 선택하면 된다.
    핫키는 Host + h
  • 간혹 일부 앱의 경우에는 화면의 비율 때문에 90′ 회전하는 경우가 있다.
    앱의 종료 후에도 회전한 상태로 남아 있는 경우에는 메뉴 "머신 - Ctrl-Alt-Del누르기"로 원래 상태로 돌아 올 수 있다.

사용해 본 소감을 말 하면,
  • 많은 리소스와 메모리가 필요하다. 어쩌면 너무 당연한걸지도 모르지만, 스마트폰에 사용되는 CPU가 비록 모바일용 CPU라 할지라도 최신 사양인걸 생각하면...
  • 설치하는 중에 잠깐 먹통인 듯 싶은 경우가 있는데, 참고 기다리면 된다.
    디스크 파티션을 만드는 첫번째 화면에서 이런 경우가 있었다.
  • 설치 도중에, 정확히 말하면 파티션과 파일 시스템에 대한 설정을 모두 마치고 파일을 복사하는 과정에서 오류가 나서 멈춘 경우가 있다.
    다시 처음부터 시작하니 문제 없이 진행이 되었다.

위 링크의 마지막 부분에는 이 방법이 제일 효율적이지는 않다며 블루스택이라는 제품을 권유하고 있었다.... 이걸 왜 다 하고 난 다음에야 봤을까ㅠㅠ

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
================================================================