'전체'에 해당되는 글 41건

  1. 2009/12/22 프로그래밍
  2. 2009/11/11 행동하지 않는 양심은 악이다.
  3. 2009/09/06 [펌] CRT 이야기
  4. 2008/11/13 침묵
  5. 2008/11/06 XP에서 관리용 원격 데스크톱 MMC 스냅인 사용하기
  6. 2008/08/02 두 사람
  7. 2008/07/23 HEAP CORRUPTION DETECTED
  8. 2008/07/14 델파이에서 VC++ DLL 사용시 주의사항
  9. 2008/07/02 MFC DLL 내부에서 wmemcpy 사용시 Heap 해제 에러
  10. 2008/06/22 박찬호, 클리블랜드전 5이닝 9삼진 !!
  11. 2008/06/13 박찬호, 샌디에고전 2.2이닝 무실점 / 추신수, 3점홈런 (6월 13일)
  12. 2008/06/12 6월 10일 촛불 집회 사진
  13. 2008/06/09 박찬호, 시컵스전 2이닝 무실점 (96마일)
  14. 2008/06/06 6월 6일 촛불집회 시청 앞 사진 모음
  15. 2008/06/05 박찬호 98마일 던지다
  16. 2008/05/28 _DRIVER_OBJECT / 심볼릭 링크로 Driver Object 얻어오기
  17. 2008/05/28 Ring3에서 드라이버 로드를 위한 2가지 방법 - 1/2
  18. 2008/05/28 WinDBG 디스크립터 덤프
  19. 2008/05/27 InstDrv - 드라이버 로딩 도구
  20. 2008/05/27 작업관리자(taskmgr) 변경하기
  21. 2008/05/27 Visual Studio 2008 / WDK 연동
  22. 2008/05/26 천백만원짜리 신문광고를 샀습니다. (1)
  23. 2008/05/25 후킹관련서적 (도서관일련번호) (2)
  24. 2008/05/25 Photoshop에서 ICO파일로 저장하는 법
  25. 2008/05/25 한마디
  26. 2008/05/25 API 후킹 간략한 정리
  27. 2008/05/24 Tommy Emmanuel - Angelina
  28. 2008/05/23 VMware를 이용한 커널 디버깅 설정법
  29. 2008/05/07 찬호횽
  30. 2008/03/24 이승철 - 서쪽 하늘 live

프로그래밍

잡담 2009/12/22 19:07
사용자는 당신들이 프로그램을 아무리 멋지게(cool) 만들어도 신경 쓰지 않는다.
프로그램에 멋진 것을 넣어 놓고, 이봐라 멋지지? 이렇게 생각하지 마라.
사용자는 당신들에게 아무 관심이 없다. 당신들이 누구인지조차도 모른다.
사용자가 원하는 것은 당신의 프로그램을 더 이상 보지 않는 것이다.
사용자들은 빨리 당신의 프로그램을 쓰는 것을 마치고 밖에 나가서 인생을 즐기고 싶어 할 뿐이다.
크리에이티브 커먼즈 라이선스
Creative Commons License

'잡담' 카테고리의 다른 글

프로그래밍  (0) 2009/12/22
행동하지 않는 양심은 악이다.  (0) 2009/11/11
침묵  (0) 2008/11/13
6월 10일 촛불 집회 사진  (0) 2008/06/12
6월 6일 촛불집회 시청 앞 사진 모음  (0) 2008/06/06
천백만원짜리 신문광고를 샀습니다.  (1) 2008/05/26
Trackback 0 : Comment 0

행동하지 않는 양심은 악이다.

잡담 2009/11/11 13:19

해방 후 지금까지 독재적 군사통치가 판을 칠 때 많은 사람이 비판을 외면했다.

 

'나는 야당도 아니고, 여당도 아니다. 나는 정치와 관계없다.'라고 자랑스럽게 말하는 사람을 봐왔다.
그러면서 그것이 중립적이고 공정한 태도인 양 점잔을 빼는 것이다.

그러나 이런 사람들은 악을 악이라고 비판하지 않고,
선을 선이라고 격려하지 않겠다는 자들이다.
스스로는 황희 정승의 처세훈을 실천하고 있다고
자기합리화를 할지도 모른다.

물론 언뜻 보면 공평한 것처럼 보일 수도 있다. 하지만, 이런 것은 공평한 것이 아니다.
이런 것은 비판함으로써 입게 될 손실을 피하기 위해
자신의 양심을 속이는 기회주의적인 태도다.

이것이 결국 악을 조장하고 지금껏 선을 좌절시켜왔다.

 

지금까지 군사독재 체제하에서 민주주의와 정의를 위해 싸운 사람들이 이렇듯 비판을 회피하는

기회주의적인 사람들 때문에 얼마나 많은 좌절감을 느껴왔는지 모른다.

그들은 또한 자신의 의도와 관계없이 악한 자들을
가장 크게 도와준 사람이다.

행동하지 않는 양심은 악의 편이란 말이 바로 여기에 해당될 것이다.

 

-독재정권에 사형선고를 받고 죽음을 기다리던 김대중의 잠언집 中에서-


크리에이티브 커먼즈 라이선스
Creative Commons License

'잡담' 카테고리의 다른 글

프로그래밍  (0) 2009/12/22
행동하지 않는 양심은 악이다.  (0) 2009/11/11
침묵  (0) 2008/11/13
6월 10일 촛불 집회 사진  (0) 2008/06/12
6월 6일 촛불집회 시청 앞 사진 모음  (0) 2008/06/06
천백만원짜리 신문광고를 샀습니다.  (1) 2008/05/26
Trackback 0 : Comment 0

[펌] CRT 이야기

컴퓨팅/프로그래밍 2009/09/06 13:25
신입 개발자를 위한
CRT 이야기
영진 pop@jiniya.net

 
CRT
C Runtime Library 말한다. C Runtime Library 각종 C언어의 표준 함수들을 포함하고 있는 거대한 라이브러리다. printf, scanf, atoi, fgets등의 C언어를 처음 익힐 배웠던 함수들이 라이브러리에 모두 포함되어 있다. 기본적으로 Visual C++에는 가지 종류의 CRT 포함되어 있다. 단일 스레드(ML), 다중 스레드(MT), 다중 스레드 DLL(MD) 그것이다. 가지도 각각 릴리즈 버전과 디버그 버전이 존재하기 때문에 정확하게는 여섯 가지가 있는 셈이다.

동일한 함수를 구현하고 있는 라이브러리를 여섯 가지나 만들어둔 이유는 베스킨라빈스에 아이스크림이 서른 가지가 넘게 있는 이유와 동일하다. 그때그때 상황에 맞게 골라서 쓰기 위해서이다. 당연히 베스킨라빈스의 아이스크림이 모두 맛이 틀리듯이 CRT들도 종류에 따라서 미묘한 차이가 있다. < 1>에는 CRT 종류별 특징이 나와있다. 디버그 CRT 경우는 ASSERT 경고문이 포함되어 컴파일 되었다는 특징을 추가적으로 가지고 있다.
 

1 CRT 종류별 특징

CRT

라이브러리

특징

단일 스레드

libc.lib

단일 스레드 전용으로 설계된 CRT. 멀티 스레드에 비해서 빠르다. 스레드에 포함된 일부 함수들은 멀티 스레드에서는 정상적으로 동작하지 않는다. Visual Studio 2005부터는 이상 단일 스레드 CRT 지원하지 않는다.

멀티 스레드

libcmt.lib

포함된 모든 함수가 멀티 스레드 환경에서도 정상적으로 동작한다.

멀티 스레드 DLL

msvcrt.lib

멀티 스레드 CRT 동일하고 함수들이 별도의 DLL 존재한다. 따라서 CRT 공유하는 모듈이 많을 경우 용량을 줄일 있다. 별도의 DLL CRT 함수가 존재하기 때문에 프로그램을 배포할 CRT DLL 같이 배포해야 한다.


독립된
별도의 프로그램이라면 < 1> 나와있는 특징대로 프로그램의 특성에 맞는 CRT 사용하면 된다. 프로젝트의 옵션 대화상자에 있는 C/C++ 탭에서 코드 생성 부분의 런타임 라이브러리에서 적절한 CRT 선택한 다음 새로 컴파일, 링크하면 된다.

반면에 하나로 묶여서 실행되는 모듈이라면 문제는 조금 복잡해진다. 이러한 모듈의 대표적인 예로는 DLL 정적 라이브러리가 있다. DLL 실행 시간에, 정적 라이브러리는 링크 시간이 바인딩 되어서 결국은 프로그램(exe) 동일한 주소 공간에서 실행된다. 이러한 모듈의 경우 CRT 섞어서 사용하면 문제가 되는 경우가 많다.

가장 흔히 발생하는 문제는 라이브러리 충돌 문제다. 서로 다른 CRT 버전을 사용했기 때문에 링크 단계에서 라이브러리 간에 기호 충돌 문제가 발생한다. 경우에는 CRT 모두 일치하도록 라이브러리를 새로 구성한 다음 컴파일 하도록 한다. 라이브러리를 자신이 만들지 않은 경우에는 또한 여의치 않다. 경우에는 프로젝트 설정 대화상자에서 링크 부분에서 라이브러리 무시에 충돌이 나는 라이브러리를 추가한 다음 컴파일 하도록 한다. 종종 링크 순서 때문에 문제가 발생하기도 한다. 경우에는 무시 라이브러리에 모두 추가한 다음 링크 순서대로 추가 종속성에 적어두면 된다.

DLL 때문에 가장 많이 겪는 문제 중에 하나는 new/delete 문제다. DLL EXE 서로 각각 CRT 링크한 경우(싱글 스레드, 멀티 스레드)에는 서로 다른 힙을 사용한다. 따라서 DLL에서 new 것을 EXE에서 delete하거나, 반대로 EXE에서 new 것을 DLL에서 delete하는 경우에 문제가 생긴다. 경우엔 new/delete 위치가 동일하도록 프로그램 구조를 고치거나 아니면 DLL EXE 모두 멀티 스레드 DLL 사용하도록 설정해야 한다.

이러한 복잡한 문제들을 사전에 방지하기 위해서는 CRT 되도록 통일해서 사용하고, DLL 경계에서 new/delete 하지 않도록 프로그램을 작성하는 것이 좋다.

크리에이티브 커먼즈 라이선스
Creative Commons License
tags : c++, CRT
Trackback 0 : Comment 0

침묵

잡담 2008/11/13 22:56
“그들(나찌)은 처음에 꼬뮤니스트를 잡으러 왔다.

  나는 꼬뮤니티스트가 아니기 때문에 침묵했다.“

그들은 유태인을 잡으러 왔다. 나는 유태인이 아니었기 때문에 침묵했다.

그들은 카톨릭 신자를 잡으러 왔다. 나는 카톨릭 신자가 아니기 때문에 침묵했다.

그들은 노동조합원을 잡으러 왔다. 나는 노동조합원이 아니기 때문에 침묵했다.

그들이 마침내 나를 잡으러 왔다. 그러나 나를 돕기 위해 나설 이가 아무도 남지 않았다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'잡담' 카테고리의 다른 글

프로그래밍  (0) 2009/12/22
행동하지 않는 양심은 악이다.  (0) 2009/11/11
침묵  (0) 2008/11/13
6월 10일 촛불 집회 사진  (0) 2008/06/12
6월 6일 촛불집회 시청 앞 사진 모음  (0) 2008/06/06
천백만원짜리 신문광고를 샀습니다.  (1) 2008/05/26
Trackback 0 : Comment 0

XP에서 관리용 원격 데스크톱 MMC 스냅인 사용하기

컴퓨팅 2008/11/06 15:29
Windows 2003 SP2 용 원격관리도구.

MMC 스냅인을 이용하여, 다중 원격 데스크톱 접속이 가능해짐


adminpak.msi 다운로드 : http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=86b71a4f-4122-44af-be79-3f101e533d95
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

두 사람

음악 2008/08/02 22:49


지친 하루가 가고
달빛 아래 두 사람
하나의 그림자
눈 감으면
잡힐 듯 아련한 행복이
아직 저기 있는데

상처 입은 마음은
너의 꿈 마저
그늘을 드리워도 기억해줘
아프도록 사랑하는 사람이
곁에 있다는걸

때로는 이 길이 멀게만 보여도
서글픈 맘에 눈물이 흘러도
모든 일이 추억이 될 때까지
우리 두 사람 서로의 쉴곳이 되어주리

너와 함께 걸을 땐
어디로 가야할지
길이 보이지 않을 때
기억할게

너 하나만으로 눈이 부시던
그 날의 세상을

여전히 서툴고 또 부족하지만
언제까지나 네 곁에 있을게
캄캄한 밤 길을 잃고 해매도
우리 두 사람 서로의 등불이 되어주리

먼 훗날 무지개 저 너머에
우리가 찾던 꿈 거기 없다해도
그대와 나 함께 보내는
지금 이 시간들이
내겐 그 보다 더 소중한 걸
때로는 이 길이 멀게만 보여도
서글픈 맘에 눈물이 흘러도

모든 일이 추억이 될 때까지
우리 두 사람 서로의 쉴곳이 되어
서툴고 또 부족하지만
언제까지나 곁에 있을게

모진 바람 또 다시 불어 와도
우리 두 사람
저 거친 세월을 지나가리
크리에이티브 커먼즈 라이선스
Creative Commons License

'음악' 카테고리의 다른 글

두 사람  (0) 2008/08/02
한마디  (0) 2008/05/25
이승철 - 서쪽 하늘 live  (0) 2008/03/24
Trackback 0 : Comment 0

HEAP CORRUPTION DETECTED

컴퓨팅/프로그래밍 2008/07/23 10:58
HEAP CORRUPTION DETECTED!!

dbgheap.c 파일안에 다음과 같은 상수들이 선언되어있다

static unsigned char _bNoMansLandFill = 0xFD;   /* 메모리 상태 채크를 위해
                                                   쓰이는 값*/
static unsigned char _bDeadLandFill   = 0xDD;   /* 삭제된 메모리에 쓰이는 값 */
static unsigned char _bCleanLandFill  = 0xCD;   /* 새로 할당된 메모리에 쓰이는 값 */
static unsigned char _bAlignLandFill  = 0xBD;   /* fill no-man's land for
                                                   aligned routines */

힙에 메모리 할당시 디버그 모드에서는
_CrtMemBlockHeader 구조체 + _bNoMansLandFill(2바이트) + 실제 메모리( _bCleanLandFill 로 채워짐 ) + _bNoMansLandFill(2바이트) 로 구성되며
릴리즈모드에서는 널영역(2바이트) + _CrtMemBlockHeader 의 일부분 + 실제 메모리 (쓰레기 값) + 널영역(2바이트) 로 구성되며 _bNoMansLandFill 는 포함되지 않는다

디버그 모드에서 메모리 삭제시 _bNoMansLandFill 의 메모리 영역을 검사하게 되는데
여기 다른 메모리가 침범해 있을때 발생하는 에러가 바로 힙 커럽션이다
문제는 이 에러의 원인이되는 메모리침범이 당시에는 나오지 않고 delete 할때
나온다는거다

잘하자

참고 링크
http://www.docsultant.com/site2/articles/debug_codes.html
http://www.codeguru.com/Cpp/W-P/win32/tutorials/article.php/c9535
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsdebug/html/_core_Memory_Management_and_the_Debug_Heap.asp

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

델파이에서 VC++ DLL 사용시 주의사항

컴퓨팅/프로그래밍 2008/07/14 09:08
출처 : http://wwwi.tistory.com/tag/Runtime

델파이에서 VC 8.0(VS 2005)에서 작성한 DLL을 사용하는데
개발환경이 셋업되어있지않은 곳에서 사용하는데 문제가 있어서 몇일간 삽질한 내용을
정리하고자한다.

테스트 환경
  우선 Visual C++ Ver 8.0에서 DLL을 만들었다.
  그리고 그것을 Delphi 2005에서 만든 실행 파일에서 불러서 쓰려했다.

  실행파일을 실행한 OS는 Windows XP Professional SP2로
  개발환경이 전혀 깔려있지않은 상태였다.
 


첫번째 삽질
델파이라 만든 실행파일을 실행하면 아래의 메세지가 떴다.
"응용 프로그램을 제대로 초기화하지 못했습니다(0xc0150002)."

→ 문제는 Visual C++ Ver 8.0에서 DLL을 만들 때 Debug 모드로 빌드를 해서
    Debug용 DLL로 테스트를 했었다.
    Release 모드로 바꾸어서 빌드 해봤지만 에러는 뜨지 않았지만
    dll이 제대로 동작하지 않았다.

두번째 삽질
VC 8.0(VS 2005)으로 DLL을 만들면 DLL만 카피한다고 DLL이 제대로 동작하지 않는다.
자세한 내용은 옆의 링크 참조 배포(C++)
여하튼 가장 편한 방법은 아래의 패키지를 설치하는 것이 가장 편한 것같다.
Microsoft Visual C++ 2005 재배포 가능 패키지(x86)
(무엇이 좋아졌는지는 잘 모르겠지만 왜 더 불편하게 만들어졌는지가 잘 이해가 안간다.)

세번째 삽질
호출 규칙이란 것을 모르고 DLL을 작성하였다.
(아직도 제대로 이해하지 못하고 있지만...)
Visual C++ 2005의 호출규칙(컴파일 옵션) 에는 아래와 같은 것들이 있다.
    __cdecl
    __fastcall
    __stdcall  

__cdecl, __pascal, __stdcall의 차이점 (구글검색)
위 링크를 보면 자세한 내용 있는 홈페이지를 볼 수 있다.
(주로 한 글이 계속 펌되어져있다.)

가변매개인자를 꼭 사용해야만 한다면 반드시 cdecl을 사용해야된다고 한다.
이런 위의 사실들을 모르고 dll을 만들었기 때문에 제대로 dll을 인식하지 못했다.

Visual C++ 2005의 호출규칙 컴파일 옵션을 설정하는 방법은
메뉴의 프로젝트(P)에서 속성(P)[Alt+F7]을 선택하면 속성 페이지가 선택된다.

구성에서 활성(Release)를 선택하고
구성 속성 밑의 C/C++를 선택하고 그 밑의 고급을 선택한다.
그러면 호출규칙이 표시된다.

물론 델파이에서 DLL 함수 선언할 때도 Visual C++ 2005에서 선택한
호출 규칙과 동일하게 선언해야 된다.

이런 것들을 제대로 파악을 못해서 몇일동안 정말 삽질을 했다.
왜 안돌아갈까 왜 안돌아갈까?
많이 고민했다.

시간이 지나서 또 삽질할까봐 적어둔다.

크리에이티브 커먼즈 라이선스
Creative Commons License
tags : DLL, import, vc++, 델파이
Trackback 0 : Comment 0

MFC DLL 내부에서 wmemcpy 사용시 Heap 해제 에러

컴퓨팅/프로그래밍 2008/07/02 10:42
MFC DLL 작성시, DLL 파일 내부에서 Unicode 문자를 memory copy 작업을 진행하게 된다면,
후에 DLL이 Unload될때 copy된 공간을 해제하려고 할 때 Access Violation 이 발생한다.

해당 에러를 제거하려면 memory copy 보다는 string copy 류의 작업으로 대체할 것을 권고.

변경전)
wmemcpy(_Dest, (LPCTSTR)varResult.vt, 10 * sizeof(TCHAR));

변경후)
_tcsncpy(_Dest, (LPCTSTR)varResult.vt, 10 * sizeof(TCHAR));
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

박찬호, 클리블랜드전 5이닝 9삼진 !!

야구 2008/06/22 06:29
찬호횽.. 40도가 훌쩍 넘는 무더위 속에서 수고했슴니다...

한회만 더 던져주게 하지..


사바시아한테 홈런 맞은건 너무 아숩 ㅜ_ㅜ....


동영상보러가기
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

박찬호, 샌디에고전 2.2이닝 무실점 / 추신수, 3점홈런 (6월 13일)

야구 2008/06/13 06:26

찬호횽님 오늘 또 한번 일 저질렀습니다.

이젠 회춘했다고 추호도 믿어 의심치 않습니다.

2.2이닝 1피안타 1삼진 무실점

시즌 방어율은 1.96로 내려갔습니다.

1사 만루에서 등판해 병살로 마무리하는 좋은 모습도 보여줬습니다.

티비 상으로는 94,95마일의 투심성 패스트볼을 던졌지만

게임데이 상으로는 97마일 여러번, 98마일까지 찍혔군요.

횽님 싸랑합니다 ㅋㅋ

동영상보러가기

----------------------------------------------------------------

덤으로 추신수 선수가 3점 홈런을 때려냈습니다.

변화구 타이밍을 기다렸다가 번개같은 스윙을 휘둘러 오른쪽 담장을 넘기는게

인상적입니다. 약점인 변화구를 당겨쳤다는게 고무적이네요.

 

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

6월 10일 촛불 집회 사진

잡담 2008/06/12 08:15
사용자 삽입 이미지

6월 10일 집회 예상 인원 (55만)



 뉴욕 타임즈 / 워싱턴 포스트 1면 (미국현지 6/11)

사용자 삽입 이미지

사용자 삽입 이미지
크리에이티브 커먼즈 라이선스
Creative Commons License

'잡담' 카테고리의 다른 글

행동하지 않는 양심은 악이다.  (0) 2009/11/11
침묵  (0) 2008/11/13
6월 10일 촛불 집회 사진  (0) 2008/06/12
6월 6일 촛불집회 시청 앞 사진 모음  (0) 2008/06/06
천백만원짜리 신문광고를 샀습니다.  (1) 2008/05/26
메드베데프  (0) 2008/03/03
Trackback 0 : Comment 0

박찬호, 시컵스전 2이닝 무실점 (96마일)

야구 2008/06/09 13:01
오늘 (Sunday Night Baseball) 전국중계 타셨네요 찬호횽.

2이닝 1안타 1볼넷 무실점 호투하심으로,

방어율은 2점대 극초반으로 떨어지셨네요.

싸랑합니다. ㅋㅋ

동영상보러가기
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

6월 6일 촛불집회 시청 앞 사진 모음

잡담 2008/06/06 22:02
사용자 삽입 이미지


















 
 
크리에이티브 커먼즈 라이선스
Creative Commons License

'잡담' 카테고리의 다른 글

침묵  (0) 2008/11/13
6월 10일 촛불 집회 사진  (0) 2008/06/12
6월 6일 촛불집회 시청 앞 사진 모음  (0) 2008/06/06
천백만원짜리 신문광고를 샀습니다.  (1) 2008/05/26
메드베데프  (0) 2008/03/03
더위는  (0) 2007/08/14
Trackback 0 : Comment 0

박찬호 98마일 던지다

야구 2008/06/05 07:27
찬호횽님. 이게 뭡니까.
30대 중후반에 98마일이라니.

후.

존경합니다 형님 ㅜ_ㅜ

찬호형님 오늘의 성적

3IP  2H  0ER  0BB  6K


찬호형님 시즌 성적

36.2IP  34H  9ER 16BB  22K  WHIP 1.36  2.208 ERA

사용자 삽입 이미지

사용자 삽입 이미지
출처 :  MLBPARK Maze님

동영상 보러가기
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

_DRIVER_OBJECT / 심볼릭 링크로 Driver Object 얻어오기

컴퓨팅/드라이버 2008/05/28 23:32
typedef struct _DRIVER_OBJECT {
    CSHORT Type;
    CSHORT Size;

    PDEVICE_OBJECT DeviceObject;
    ULONG Flags;

    PVOID DriverStart; // 드라이버가 보관된 메모리 시작위치 포인터
    ULONG DriverSize;
    PVOID DriverSection;
    PDRIVER_EXTENSION DriverExtension; // 확장, 컴포마이징 

    UNICODE_STRING DriverName;
    PUNICODE_STRING HardwareDatabase; // 드라이버가 등록된 서비스키
    PFAST_IO_DISPATCH FastIoDispatch;

    PDRIVER_INITIALIZE DriverInit;  // DriverEntry 함수주소
    PDRIVER_STARTIO DriverStartIo;
    PDRIVER_UNLOAD DriverUnload;
    PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
// 드라이버가 처리하는 IRP 명령어를 위한 dispatch routines } DRIVER_OBJECT; typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT; // ntndis


레런스 문서 : http://www.reactos.org/generated/doxygen/d6/d72/struct__DRIVER__OBJECT.html

심볼릭 링크에 대한 드라이버 오브젝트를 구하는 함수:

PVOID SearchObject(PUNICODE_STRING pUni)
{
   NTSTATUS st;
   HANDLE Handle;
   UNICODE_STRING Uni;
   OBJECT_ATTRIBUTES ObjectAttributes;
   PVOID Object;   InitializeObjectAttributes
      (&ObjectAttributes,
      pUni,
      OBJ_CASE_INSENSITIVE,
      NULL,
      NULL);
 
   st = ObOpenObjectByName
      (&ObjectAttributes,
             0L,
             0L,
             0L,
             0L,
             0L,
             &Handle);
 
   if(st!= STATUS_SUCCESS)
   {
      DbgPrint(( "ObOpenObjectByName - ObOpenObjectByName failed \n"));
      return (PVOID)0;
   }
     
   st = ObReferenceObjectByHandle
      (Handle,
      0x80000000,
      NULL,
      0,
      &Object,
      NULL); // Handle을 object로 변환
 
   if(st != STATUS_SUCCESS)
   {
      DbgPrint(( "ObReferenceObjectByHandle - ObReferenceObjectByHandle failed \n"));
      ZwClose(Handle);
      return (PVOID)0;
   }   ZwClose(Handle);
   ObDereferenceObject(Object);

}

위 함수를 응용해 심볼릭 링크만으로 드라이버 오브젝트를 구해낼 수 있다.
그 방법은 다음과 같다:

PDRIVER_OBJECT pClass;
   UNICODE_STRING nameString;
   RtlInitUnicodeString( &nameString, L"\\Driver\\pClass" ); // pClass의 심볼릭 링크명
   pClass = (PDRIVER_OBJECT)SearchObject(&nameString);    


위와 같은 방법으로 pClass에 해당 드라이버 오브젝트를 얻어 올 수 있다.
SearchObject 함수 내의 ObOpenObjectByName() 를 사용하기 위해서는 헤더 파일에 다음과 같은 구문을 넣어줘야 한다:

extern "C"{
#include <ntddk.h>
 
NTSTATUS ObOpenObjectByName(
  IN POBJECT_ATTRIBUTES  ObjectAttributes,
 IN POBJECT_TYPE  ObjectType,
 IN OUT PVOID  ParseContext  OPTIONAL,
 IN KPROCESSOR_MODE  AccessMode,
 IN ACCESS_MASK  DesiredAccess,
 IN PACCESS_STATE  PassedAccessState,
 OUT PHANDLE  Handle);
}
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

Ring3에서 드라이버 로드를 위한 2가지 방법 - 1/2

컴퓨팅/드라이버 2008/05/28 03:38

SCM(Service Control Manager)를 이용해 드라이버를 등록하고 실행합니다.
잘알려진 InstDrv.exe도 이 방법을 이용한 것입니다.

기본적인 드라이버 로드를 위한 함수 구조

void load_driver(char* driverName) {
   ...
   SC_HANDLE openHandle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
   ...
   SC_HANDLE handle = CreateService( openHandle,
                                    driverName,
                                     driverName,
                                     SERVICE_ALL_ACCESS,
                                    SERVICE_KERNEL_DRIVER,
                                     SERVICE_DEMAND_START,
                                     SERVICE_ERROR_NORMAL,
                                     로드될 .sys파일의 path정보,
                                    NULL,
                                    NULL,
                                     NULL,
                                     NULL,
                                     NULL);
   ...
   StartService(handle, 0, NULL);
   ...
   CloseServiceHandle(openHandle);
   CloseServiceHandle(handle);
}

위와 같이 아주 간단하게 드라이버를 ring3 프로그램에서 등록시키고 실행할 수 있습니다.
정석적인 방법이기에 좀더 은밀(?)하게 드라이버를 로드하고 싶으신 분은 다른 방법을 찾아야합니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

WinDBG 디스크립터 덤프

컴퓨팅 2008/05/28 01:19
다음의 확장 DLL을 WinDBG의 폴더에 복사합니다.
C:\Program Files\Debugging Tools for Windows (x86)\winxp

첨부된 ProtMode.dll 은 윈도우XP에서 정상작동합니다.


사용방법:

사용자 삽입 이미지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

InstDrv - 드라이버 로딩 도구

컴퓨팅/드라이버 2008/05/27 19:29

한번님이 개발하신 파일다이얼로그가 포함된 InstDrv 버전입니다.
서핑하던 차에 발견해서 아주 유용하게 쓰고 있습니다.
전체경로의 귀차니즘에서 벗어나 보아요. ㅎㅎ.

사용자 삽입 이미지


다운로드

크리에이티브 커먼즈 라이선스
Creative Commons License
tags : instdrv
Trackback 0 : Comment 0

작업관리자(taskmgr) 변경하기

컴퓨팅 2008/05/27 03:31
윈도우 기본 작업관리자를 레지스트리의 Image File Execution Option을 이용해서 다른 프로그램(여기서는 Process Explorer)을 띄우는 방법입니다.

이 방법을 쓰면 기존의 작업관리자는 taskmgr.exe을 따로 실행시켜도 실행되지 않습니다.
주의하시기 바랍니다.

사용자 삽입 이미지

여기서는 procexp.exe를 c:\windows\system32에 복사한 상태입니다.

이 레지스트리 항목을 이용해서 윈도우에서 제공되는 여러 시스템 프로그램을 다른 프로그램으로 Mapping하는 것이 가능해집니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

Visual Studio 2008 / WDK 연동

컴퓨팅/드라이버 2008/05/27 02:58
연동환경
Visual Studio 2008 Prefessional
Windows Driver Kit 6001.18001 Build
Windows XP SP2



우선, 다음의 작업을 수행합니다.

1. VS2008 실행
2. 도구->옵션->프로젝트 및 솔루션->VC++ 디렉터리
3. 오른쪽 위의 "다음 파일의 디렉터리 표시(S):"에서 "포함 파일" 선택
4. {WDK Installation Path}\{Build Number}\inc 을 추가합니다.
5. {WDK Installation Path}\{Build Number}\lib 을 추가합니다.


사용자 삽입 이미지


이제 VC++에서 드라이버 개발에 관련된 인텔리전스 기능을 사용할 수 있게 되었습니다.

하지만 드라이버 제작을 위해서는
makefile
sources
2가지의 파일이 더 필요합니다.

makefile은 다음과 같이 만들면 됩니다. Windows 98이상의 환경이라면 모두 같은 형태의 makefile을 써야합니다.

# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
# file to this component. This file merely indirect to the real make file
# that is shared by all the driver components of the Windows NT DDK
!INCLUDE $(NTMAKEENV)\makefile.def

sources 파일은 일반적으로 드라이버를 제작할 때와 마찬가지로 만들면 됩니다.
sources의 기본 형태는 다음과 같습니다.

TARGETNAME=Wdm1
TARGETTYPE=DRIVER
DRIVERTYPE=WDM
TARGETPATH=OBJ
BROWSER_INFO=1

INCLUDES=..\inc       // include 디렉터리 설정
LIBS=..\lib            // lib 디렉터리 설정

SOURCES=main.c    
         send.c        
         recv.c  
         ...

위의 sources 파일은,
드라이버의 목적명이 Wdm1.sys 라는 것,
Wdm1.sys가 WDM드라이버 라는 것,
OBJ 서브디렉터리에 구성할 것,
소스 브라우저 정보를 생성할 것등의 정보를 가지고 있습니다.
그리고 INCLUDES, LIBS는 각각의 디렉터리를 설정하면 됩니다.
SOURCES=에는 컴파일 할 파일 목록을 지정합니다.
그리고 sources 매크로와 등호(=)사이에 공간이 들어가면 안됩니다.


그 외에 DDKBuild를 이용한 연동이나 더 많은 정보를 원하면 다음의 링크를 참조하세요
보러가기
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

천백만원짜리 신문광고를 샀습니다.

잡담 2008/05/26 04:38
사용자 삽입 이미지

MLBPARK 불펜.
영원히 사랑합니다. ^^;

원문 링크 :
http://mlbpark.donga.com/bbs/view.php?bbs=mpark_bbs_bullpen&idx=12556&cpage=1
크리에이티브 커먼즈 라이선스
Creative Commons License

'잡담' 카테고리의 다른 글

6월 10일 촛불 집회 사진  (0) 2008/06/12
6월 6일 촛불집회 시청 앞 사진 모음  (0) 2008/06/06
천백만원짜리 신문광고를 샀습니다.  (1) 2008/05/26
메드베데프  (0) 2008/03/03
더위는  (0) 2007/08/14
후.. 인생 참  (0) 2007/06/30
Trackback 0 : Comment 1

후킹관련서적 (도서관일련번호)

컴퓨팅/후킹 2008/05/25 15:21
MICROSOFT WINDOWS INTERNALS 제4판 상세보기
MARK E. RUSSINOVICH 지음 | 정보문화사 펴냄
WINDOWS 내부 안내 전문번역서. 이 책은 마이크로소프트 WINDOWS 제품 개발팀과 공동으로 개발한 안내서로 64비트 확장을 포함하여 WINDOWS Server 2003, WINDOWS XP, 그리고 WINDOWS 2000의 운영체제 아키텍처와 내부를 설명한다. 또한 WINDOWS를 구성하고 제어하는 핵심 메커니즘 이해액세스, WINDOWS 보안 모델 탐구커널 디버거와 알고리즘검사Windo ws 가상 메모리와 물리 메모리 관리 방법NTFS의 동작 및 포맷의 이해와 파일

651.26 R969mKg


루트킷: 윈도우 커널 조작의 미학(에이콘 해킹 보안 시리즈 15) 상세보기
그렉 호글런드 지음 | 에이콘출판 펴냄
윈도우 커널 조작의 미학! '에이콘 해킹ㆍ보안' 시리즈, 제15권 『루트킷』. 해커들이 공격하고자 하는 시스템에 지속적이면서도 탐색되지 않은 채로 교묘히 접근할 수 있는 최고의 백도어인 '루트킷(ROOTKITS)'에 대한 전문서다. 이 책은 '루트킷'에 대해 세세하게 설명하면서, 그것을 제작하는 방법, 작동하는 방법 등에 대해 가르쳐준다. '루트킷'에 관한 최고의 전문가라고 할 수 있는 두 저자가 현재까지 쌓아온 기술을

  006 H716rKy


WDF: 윈도우를 위한 차세대 통합 드라이버 개발 모델 상세보기
PENNY ORWICK 지음 | 에이콘출판 펴냄
윈도우를 위한 차세대 통합 드라이버 개발 모델! 윈도우를 위한 차세대 통합 드라이버 개발 모델인 윈도우 드라이버 파운데이션(WDF) 안내서. WDF를 개발자들이 직접 저술한 것이다. 짧은 시간 안에 고품질의 드라이버를 개발할 수 있도록 도와준다. 이 책은 WDF를 사용한 커널 모드나 유저 모드 드라이버를 개발할 수 있도록 구성되어 있다. 최소의 코드로 플러그 앤 플레이 등이 가능한 드라이버를 만들고, I/O 핸들링 코드

 651.26 C229wKb
크리에이티브 커먼즈 라이선스
Creative Commons License

'컴퓨팅 > 후킹' 카테고리의 다른 글

후킹관련서적 (도서관일련번호)  (2) 2008/05/25
API 후킹 간략한 정리  (0) 2008/05/25
Trackback 0 : Comments 2

Photoshop에서 ICO파일로 저장하는 법

컴퓨팅 2008/05/25 15:05

간단히 서핑하면서 얻은 정보.
Photoshop에서 파일 -> 다른이름으로 저장에 가면 아래와 같이 ICO 파일이 추가된다.

사용자 삽입 이미지


해당 플러그인 다운로드 (무료)
http://www.telegraphics.com.au/sw/#icoformat

해당 플러그인 저장위치
포토샵설치폴더\플러그인\파일 형식
(CS3기준)
크리에이티브 커먼즈 라이선스
Creative Commons License
tags : ICO, 포토샵
Trackback 0 : Comment 0

한마디

음악 2008/05/25 03:46

 
지우고 또 지우려해도 만져질 듯한 너의 따뜻한 미소 이제는 잊어야지
그래야만 하지 모두 끝났으니까 내가 떠났으니까
난 시간이 흐르고 흘러 지금쯤이면 괜찮을거라 생각했어
아무리 사랑했어도 다시는 울지 않기로 다짐해왔었는데
아픈만큼 슬픈만큼 널 위해 흘린 눈물만큼 해주고 싶은 말
너무나도 많은데 이렇게 잊지 못한 채 하루하루 널 생각해
지울수 없는 나의 마지막 이별의 기억

지금은 어떻게 지내고 있니 모두 잊고서 다른 사람 만나고 있니
아니면 너도 나처럼 지우지 못해서 매일 울고 또 울어 지쳤니
아직도 그때 우리 함께 했던 행복한 순간 내게 너무나 소중해 기억하나봐
아픈만큼 널 위해 흘린 눈물만큼 나 사랑하는데
기다려왔었는데 잘지내란 말 한마디 행복하란 말 한마디
하지 못한 채 너를 떠나야만했던 나~
단 한번만 딱 한번만 널 만날수만 있다면
해주고 싶은 말 너무나도 많은데 아직도 잊지 못한 채 하루하루 널~ 생각해
지울수 없는 나의 마지막
이별의 기억~@

크리에이티브 커먼즈 라이선스
Creative Commons License

'음악' 카테고리의 다른 글

두 사람  (0) 2008/08/02
한마디  (0) 2008/05/25
이승철 - 서쪽 하늘 live  (0) 2008/03/24
tags : Ayn, 한마디
Trackback 0 : Comment 0

API 후킹 간략한 정리

컴퓨팅/후킹 2008/05/25 01:16

API Hooking은 크게 유저모드와 커널모드 두가지로 나뉜다.

User-Mode Hooking

  • IAT(Import Address Table) Hooking: IAT 에 적혀있는 API 의 주소를 자신의 함수주소로 바꾸고 자신의 함수 끝에 다시 원래 API 주소로 돌려주는 방식. 가장 일반적으로 바이러스에서 사용하는 기법.

  • Inline Function Hooking (Detour Hooking): 사용할 API 의 첫 5바이트를 자신의 함수주소로 Jmp 하는 코드로 바꾸고 자신의 코드에서 다시 원래 API 의 바뀐 코드를 수정해주고 API 시작위치로 돌려주는 방식. IAT 후킹보다 지능적이여서 찾아내기가 쉽지 않다. 요새 많이 등장한다.


Kernel-Mode Hooking (루트킷)

  • SSDT(System Service Descriptor Table Modification): SSDT 가 가리키는 주소를 후킹 함수의 주소로 바꾸고 그 함수 호출후 다시 원래 커널 API 의 주소로 돌려주는 기법. 50% 이상의 루트킷이 사용하는 기법. 이런 기법은 프로세스, 파일의 은폐에 많이 사용됨.

  • DKOM(Direct Kernel Object Modification): 커널 Object 를 직접 조작해서 실행되는 프로세스, 스레드, 서비스, 포트, 드라이버 및 핸들의 Entry 를 실행리스트(PsActiveProcessHead, PsActiveModuleHead....)에서 감추는 기법.

  • SYSENTER: 유저모드에서 시스템 호출로 넘어갈때 INT 2E(for Windows 2000)/ SYSENTER 를 사용하게 되는데 호출후 시스템 서비스의 핸들러는 IA32_SYSENTER_EIP 라는 레지스터리에 저장된다. 커널 드라이버를 설치하여 해당 값을 수정하여 루트킷을 호출하고 다시 원래 값으로 돌려주는 기법.

  • Filter Device Drivers: 시큐리티 제품의 하단에 filter device driver 로 등록하는 기법이다. 부트 타임에 로드됨으로써 다른 어떤 안티바이러스 제품보다 먼저 실행된다.

  • Runtime Detour Patching: 커널 메모리를 직접 조작함으로써 그 메모리의 포인터가 루트킷을 가르키게 함으로써 커널 함수들을 후킹하는 기법. 예를 들면 Exception 을 일으키고 Exception Handle 을 컨트롤하는 IDT 레지스터를 자신을 가리키는 주소로 써줌으로써 후킹목적을 달성한다.

  • IRP table Modification: 디바이스 드라이버가 네트웍 패킷을 처리하거나 파일을 쓸때 사용하는 I/O Request Packets 을 제어하는 Dispatch Routine 은 DEVICE_OBJECT 구조체에 저장된다. 바이러스에서 사용하는 루트킷은 IoGetDeviceObjectPointer 란 API를 사용하여 DEVICE_OBJECT 구조체에서 DRIVER_OBJECT 의 위치를 선정해줄수 있다.
    즉 다른 Original Driver Call 이 일어나기 전에 자신의 루트킷을 먼저 실행하여 Call 결과를 조작한다.

     

크리에이티브 커먼즈 라이선스
Creative Commons License

'컴퓨팅 > 후킹' 카테고리의 다른 글

후킹관련서적 (도서관일련번호)  (2) 2008/05/25
API 후킹 간략한 정리  (0) 2008/05/25
tags : 후킹
Trackback 0 : Comment 0

Tommy Emmanuel - Angelina

음악/어쿠스틱기타 2008/05/24 00:13
크리에이티브 커먼즈 라이선스
Creative Commons License

'음악 > 어쿠스틱기타' 카테고리의 다른 글

Tommy Emmanuel - Angelina  (0) 2008/05/24
Those who wait  (0) 2007/06/10
Tommy Emmanuel - Since We Met  (0) 2007/05/15
Trackback 0 : Comment 0

VMware를 이용한 커널 디버깅 설정법

컴퓨팅 2008/05/23 23:31

커널 디버깅 하기

 

 

디버깅을 당하는 PC를 타겟 PC 또는 디버기(debuggee)라고 하고 디버깅을 행하는 PC를 호스트 PC 또는 디버거(debugger)라고 합니다

windbg1.png


TARGET컴퓨터 구성하기

먼저 TARGET가 디버그 모드로 부팅할수 있도록 C:\에 위치한 boot.ini파일에 아래 내용을 추가 하도록하지요

multi(0)disk(0)rdisk(0)partition(1)₩WINDOWS="Windows Server 2003 (COM1)" /fastdetect /debug /debugport=COM1 /baudrate=115200

주의 : 위의 내용 그대로 치면 부팅 시 hal.dll에서 에러가 생길 확률이 높다. 가장 안전한 방법은 이미 설정되어 있는 위의 내용을 그대로 복사한뒤 /debug /debugport=COM1 /baudrate=115200 부분만 추가한다.



커널 디버깅을 위해 COM1 포트를 사용하고, 속도는 115200 을 사용한다는 것을 나타냄 한줄

windbg2.png


boot.ini 파일의 속성을 지정해 주도록하자 (시스템 파일이기 때문에 읽기 전용이고 시스템 속성이 설정되어 있다.보통 저장하면 기존 설정을 유지하고 있다, 않해줘도 문제는 없음)

c:₩>attrib +s +h +r boot.ini

이제 부팅시 TARGET 컴퓨터가 디버그 모드로 부팅할 수 있도록 설정을 완료

windbg3.png


 

HOST컴퓨터 준비하기

먼저 WinDbg를 설치하여야 겠지요?

다운로드 경로 Windbg 32Bit

http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.8.4.0.msi

 

다운로드 경로 Windbg 64Bit

http://msdl.microsoft.com/download/symbols/debuggers/dbg_ia64_6.8.4.0.msi

 

그리고 File->Symbol Path(심볼 경로)를 경로를 지정하도록 합시다~

windbg4.png


Symbol Search Path에 심볼 경로를 아래와 같이 입력해 주세요

windbg5.png


심볼 경로

srv*c:\symbols.pub*http://msdl.microsoft.com/download/symbols

 

이렇게 설정을 하면 WinDbg는 먼저 c:\symbols.pub 에 타겟 PC의 운영 체제에 맞는 심볼 파일이 있는지 검사하고 없으면 심볼 서버에서 다운받아 c:\symbols.pub 에 보관해 놓습니다.

 

주의 : c:\symbols.pub 디렉토리는 WinDbg가 만들어 주지 않습니다.

 

 

이제 File -> Kernel Debug를 선택합니다.

windbg6.png

 

 

TARGET과 연결된 Null Modem CableCOM Port와 설정한 속도를 확인후 아래 확인을 누릅니다.

windbg7.png


그럼 아래와 같이 대기 상태가 되며, 이제 HOST 컴퓨터의 준비 단계는 끝입니다.

 주의 : HOST 컴퓨터를 먼저 대기 시키고 TARGET컴퓨터을 디버그 모드로 부팅하셔야 합니다.

 

windbg8.png

TARGET컴퓨터를 재부팅하고 boot.ini에 만들어둔 Windows Server 2003 (COM1)모드로 TARGET컴퓨터를 부팅하면 커널 디버깅 화면을 보실수 있습니다. 수고하셨습니다 ^^

 

VM (Virtual Machine)으로 구성 하기

커널 모드 디버깅을 실제 머신으로 한다면 얼마나 불편할지 귀차니즘이 하늘을 찌르네요

다행이 VM 머신으로 구성할수 있는 방법이 존재합니다.

 

TEST할 하나의 Virtual Machine을 선택 후 마우스 오른쪽을 눌려 구성(setting) 선택합니다.

 

그리고 COM1 Named pipe로 설정후 원하시는 이름을 지정하여 줍니다.
 
여기서는 \\.\pipe\vm_com으로 하였어요

 

 

windbg9.png

 

다음 TARGET 컴퓨터도 boot.ini 파일을 수정후 재부팅하여 아래와 같은 부팅 메뉴에서 엔터를 누르지말고 그대로 두고, 이제 HOST 컴퓨터를 설정합니다.

 

windbg10.png

 

파이프로 연결되기 위해서는 WinDbg에 단축아이콘을 하나 만들어 실행시 아래 옵션을 붙여 주도록 합시다.

-k com:pipe,port=\\.\pipe\vm_com

 

windbg11.png

 

위와 같이 단축아이콘을 설정후 실행하면 아래와 같은 화면이 나오며 대기하게 됩니다.

이제 VM머신을 디버그 모드로 부팅을 해보도록 합시다. (모드 선택에서 [디버거 사용 가능] 확인)

windbg12.png


 

부팅을 하게 되면 아래와 같은 메시지가 나오며 TARGET 컴퓨터에 연결이 됩니다.

Ctrl+Break 키를 누르면 TARGET 컴퓨터가 정지하며 TARGET 컴퓨터를 커널 디버깅을 할수 있습니다.

몇가지 명령을 실행해 보로록 하겠습니다. 

windbg13.png


 

.sympath를 설정된 심볼경로를 보여주는데, 로컬경로인 C:\symbols.pub 디렉토리는 수동으로 만들어 주서야 합니다. 만들어 주지 않으시면 아래와 같은 메시지를 확인할수 있습니다.

WARNING: Whitespace at end of path element

windbg14.png


 

lm명령을 통해 로드된 심볼이 무언인지 확인해 보도록 하죠, 여기서 다른 모듈들이 (deferred)라고 나오는데요, 이것은 모듈은 로드되었지만 그에 해당하는 심볼은 로드되지 않았다는 것을 뜻합니다. 사용자가 필요한 심볼이 있다면 ld 명령을 통해 로드 시킬수 있습니다.

windbg15.png


 

 

Srv를 로드해 봅시다

정상적으로 잘 로드가 되었네요

 

windbg16.png


windbg17.png


어떤 심볼이 들어있는지 x 명령을 통해 확인해 보도록 하죠

 

windbg18.png

이정도로 여기서는 마치도록 하겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

찬호횽

야구 2008/05/07 05:09

멋져..ㅜㅜ

사용자 삽입 이미지


사용자 삽입 이미지

사용자 삽입 이미지
크리에이티브 커먼즈 라이선스
Creative Commons License
tags : 박찬호
Trackback 0 : Comment 0

이승철 - 서쪽 하늘 live

음악 2008/03/24 15:58

서쪽하늘로 노을은 지고 이젠 슬픔이 되버린 그대를 다시 부를수 없을 것 같아 또 한번 불러보네
소리쳐 불러도 늘 허공에 부서져 돌아오는 너의 이름 이젠 더 견딜 힘조차 없게 날 버려두고 가지
사랑하는 날 떠나가는 날 하늘도 슬퍼서 울어준날 빗속에 떠날 나였음을 넌  알고 있는듯이

*

비가오는 날엔 난 항상 널 그리워해 언젠간 널 다시 만나는 그날을 기다리며
비내린 하늘은 왜 그리 날 슬프게해 흩어진 내 눈물로 널 잊고 싶은데

**

가고싶어 널 보고싶어 꼭 찾고싶었어 하지만 너의 모습은 아직도 그 자리에

하지만 난 널 사랑해

크리에이티브 커먼즈 라이선스
Creative Commons License

'음악' 카테고리의 다른 글

두 사람  (0) 2008/08/02
한마디  (0) 2008/05/25
이승철 - 서쪽 하늘 live  (0) 2008/03/24
Trackback 0 : Comment 0