아아 이거 또 실패했습니다. ㅜ_ㅜ ln 까지는 갔으나... crti.o를 자꾸 찾는 바람에.... ㅜ_ㅜ cygwin에서 컴파일하는데 저 파일을 찾는 걸 보니 --target=x86_64-linux 옵션으로 줘서 그런 것 같습니다.

사용자 삽입 이미지

 크윽... 왜 Cygwin Package에는 64bit로 크로스 컴파일하는 옵션이 없을까요... ㅜ_ㅜ --target=x86_64-cygwin 요런거라도 있으면 좋을 텐데 말입니다. ㅜ_ㅜ

 당체 이 삽질을 언제 끝낼 수 있을지... 크윽... ㅜ_ㅜ 눈물이 앞을 가립니다. 흑흑...



 아아~ 이거 주말을 다 날렸습니다. 결국 cygwin으로 옮겨타고 나서야 binutil을 컴파일 할 수 있었는데... gcc를 컴파일 하려니 이것 저것 문제가 많아서 결국 실패했습니다. ㅜ_ㅜ

 컴파일을 한참 진행하다보니 거의 마지막 단계인 nm을 사용하는 부분과 ar을 사용하는 부분이 문제인것 같던데... makefile 안에 있는 아래와 같은 부분이 정상적으로 동작하지 않는 것 같습니다.

AR_FOR_TARGET = ` \
  if [ -f $(objdir)/../binutils/ar ] ; then \
    echo $(objdir)/../binutils/ar ; \
  else \
    if [ "$(host)" = "$(target)" ] ; then \
      echo ar; \
    else \
       t='$(program_transform_name)'; echo ar | sed -e $$t ; \
    fi; \
  fi`
AR_FLAGS_FOR_TARGET =
AR_CREATE_FOR_TARGET = $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) rc
AR_EXTRACT_FOR_TARGET = $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) x

RANLIB_FOR_TARGET = ` \
  if [ -f $(objdir)/../binutils/ranlib ] ; then \
    echo $(objdir)/../binutils/ranlib ; \
  else \
    if [ "$(host)" = "$(target)" ] ; then \
      echo $(RANLIB); \
    else \
       t='$(program_transform_name)'; echo ranlib | sed -e $$t ; \
    fi; \
  fi`

NM_FOR_TARGET = ` \
  if [ -f ./nm ] ; then \
    echo ./nm ; \
  elif [ -f $(objdir)/../binutils/nm-new ] ; then \
    echo $(objdir)/../binutils/nm-new ; \
  else \
    if [ "$(host)" = "$(target)" ] ; then \
      echo nm; \
    else \
       t='$(program_transform_name)'; echo nm | sed -e $$t ; \
    fi; \
  fi`

 원래의 의도대로라면 if else에 의해서 x86_64-linux-nm 이나 x86_64-linux-ar과 같이 치환되어야할 것들이 그대로 쉘에 출력되어 난데없는 rc.exe가 실행되는 안습인 상황이 벌어지더군요. ㅡ_ㅡa... 쉘이 문제인지 makefile이 문제인지 확실하게 모르겠습니다만... 정상적으로 실행이 안되는 것은 사실인 것 같습니다. ㅎㅎ

 아아~ 이거 주말을 다 날렸네요. ㅜ_ㅜ 내일은 꼭 성공해야할텐데... 큰일입니다. ㅜ_ㅜ
 그럼 좋은 밤 되세요 ;)

ps) cygwin에서 x86_64로 크로스 컴파일 해보신 분 있으시면 팁 좀 부탁 드립니다. (_ _)


 32bit 윈도우라서 64bit 코드를 생성하는게 상당히 힘들군요. ㅜ_ㅜ 되도록이면 Open Source를 사용하려고 MinGW나 Cygwin을 보고 있습니다만... 다들 m64 옵션이 먹지 않는 것 같네요. ㅜ_ㅜ

 MinGW에 GCC 소스를 받아서 컴파일 해보니 이것도 에러가 발생... ㅜ_ㅜ... 아놔 천지 쉬운게 없군요. 이거 하루종일했는데, 결국 실패했습니다.

 어디 m64 옵션 먹게 컴파일된 GCC 없나요? ㅜ_ㅜ


 크윽... 이럴수가... 64bit 코드를 생성할 일이 있어서 MinGW를 설치했는데, m64 옵션이 먹지 않더군요. ㅜ_ㅜ 구글을 뒤져보니 디폴트로 컴파일되서 32bit 만 지원하나 봅니다. ㅜ_ㅜ

 결국 한 2시간을 찾아 해매다가... 결국 gcc 소스를 받아서 새로 컴파일하기로 했습니다. 어휴... 이거 초장부터 쉽지 않습니다. ㅜ_ㅜ... 아흑... 오늘 하루종일하겠군요.

 일단 컴파일되서 테스트까지 끝나면 포스팅하겠습니다. ;)
 다들 즐거운 주말 되시길 ^^)/~



 저도 언능 신청해봐야겠습니다. 상품도 푸짐하던데 다른 분들도 한번 신청해보심이 ;)
 그럼 좋은 하루 되세요 ;)
 블로그를 티스토리로 옮기고 애드센스를 설치한지 약 9개월 정도 지났습니다. 그동안 많은 분들이 클릭을 해주셔서 돈이 조금씩 모이기 시작하더니, 드디어 지난달에 100달러를 넘었습니다. ㅜ_ㅜ

 오늘 집에 오는 길에 우편함을 보니 구글에서 수표가 와있더군요. 그것도 무려 118.24 달러나... ㅜ_ㅜ
사용자 삽입 이미지
사용자 삽입 이미지

 열심히 하라는 뜻인 줄 알고 이 돈으로 피로 회복제를 사겠습니다. 그리고 날마다 하나씩 먹으면서 투혼을 불살라 열심히 분석하고 기록하겠습니다. ㅜ_ㅜ)-b

 다시 한번 여러분의 후원에 감사드립니다. (_ _)
 열심히 하겠습니다. >ㅁ<)-b

 거의 4일 동안 문서를 뒤지고 직접 테스트를 수행한 결과, IO APIC와 APIC간의 관계와 8259A(PIC) 칩간의 관계에 대해서 알아냈습니다. 더불어 BIOS에 존재하는 MP 관련 정보와 IO APIC의 Redirection Table, CPU의 APIC의 레지스터에 의미에 대해서도 대충 알아냈습니다. ㅜ_ㅜ)-b

 어떻게 테스트 했는지는 나중에 올리겠습니다. 나름 복잡한 내용을 포함하고 있고, 또 시간이 너무 늦은지라 ㅎㅎ 대신 아래의 스샷을 첨부합니다. 제가 만든 OS(KKAMAGUI OS)에서 IO APIC를 통해 BSP(Bootstrap Processor)에 키보드와 타이머 이벤트를 밀어넣는 화면입니다. 볼품없지만 이게 4일 동안 작업한 것이라는... OTL....
사용자 삽입 이미지

 그래도 IO APIC와 Local APIC에 대해 잘 모르면 Sysmmetric I/O로 갈 수 없기 때문에 어쩔 수 없었습니다. ㅜ_ㅜ)-b 결국 하긴 했군요. 흑흑.... 8259A(PIC) 컨트롤러의 타이머/키보드 인터럽트를 발생 못하도록 mask 했는데도 인터럽트 방식으로 잘 동작하는 화면을 보니 신기하군요. ^^;;;;

 그럼 이만 자야겠습니다. 좋은 밤 되시길~ ;)
 요 며칠째 계속 VMWare하고 Multiple Processor 스펙, 그리고 IO APIC 스펙을 함께 보며 삽질을 하고 있습니다. 그런데 아무리봐도 뭔가 이상하군요.

 Multiple Processor 스펙에 보면 MP Floating Pointer Structure의 Feature 2 정보에 IMCRP 비트가 셋팅되어있지 않으면 IMCR 레지스터가 존재하지 않는 것이고...이런 경우 기본 모드는 Virtual Wire 모드라고 되어있습니다.

 앞서 http://kkamagui.tistory.com/497 에서 설명 드렸듯이 Vritual Wire 모드는 2가지 모드가 존재하고, 테스트해본 결과 Local APIC는 다 Enable 되어있고 IO APIC의 Redirect Table이 모두 Default 값으로 Disable 되어 있으므로 Virtual Wire mode with Local APIC 라고 볼 수 있습니다(아래 그림 참조).

사용자 삽입 이미지

 그런데 웃긴건, BIOS가 MP를 초기화하고 그 정보를 저장해놓는 MP Configuration Table의 I/O Interrupt Assignment Entries 정보를 보면 IO APIC가 활성화 되어있으며 8259 컨트롤러가 IO APIC의 첫번째 pin에 연결되어 있다고 나옵니다. 나머지 타이머나 키보드 등등도 다 IO APIC에 연결된 것으로 설정되있습니다. ㅡ_ㅡa...

 만약 그렇게 연결되어있다면 IO APIC의 Redirect Table에도 동일한 설정으로 저장되어있어야 맞는 것 같은데... IO APIC의 Redirect Table에는 아무것도 안들어있으니... ㅡ_ㅡa... 이게 당체 어디가 맞는 건지 알 수가 없군요. ^^;;;; Redirect Table에 아무런 값이나 막 넣어봐도 별 에러없이 동작하던데... VMWare의 BIOS가 신경을 안쓰는 건지... 아니면 원래 그런 것인지 모르겠습니다. ㅜ_ㅜ

 그리고 Symmetric I/O는 당체 어떻게 ON 하는 것인지... ㅡ_ㅡa... 그냥 Local APIC를 다 활성화 시키고 I/O APIC의 Redirect Table에서 Destination을 손보면 되는 것인지... 이것 참... Redirect Table의 비밀이 풀려야 다음 진도를 나갈 수 있을 것 같은데... 이게 쉽지 않군요. ^^;;;;

 에혀... 죽겠습니다. 혹시 아시는 분 계시면 제보 부탁드립니다. ^^)/~
 그럼 좋은 밤 되시길~ ;)


 예비군 내내 Intel Architecture Volume 3을 봤습니다. 그리고 고향에 내려오는 도중에 PSP로 Multile Processor(MP) Spec을 계속 봤었는데... 뭔가 좀 이상하더군요. Intel 문서에는 I/O APIC에 대해서 아주 조금 언급하고 있습니다. 그냥 APIC와 연결되있다는 정도로 말이지요. ^^;;;;
 
 그런데 MP Spec에 보면 PIC, Virtual PIC, Symmetric I/O의 각 방식에 대해 아래와 같이 자세히 그려놓고 있습니다.
사용자 삽입 이미지
<PIC 모드>
사용자 삽입 이미지
<Virtual Wire Mode With Local APIC>
사용자 삽입 이미지
<Virtual Wire Mode With IO APIC>
사용자 삽입 이미지
<Symmetric IO Mode>

  보시면 아시겠지만 CPU의 Boundary 안쪽에 IO APIC가 있는지 바깥쪽에 있는지 좀 불분명합니다. 어렴풋이 버스 배열 상태나 위치를 봐서 바깥쪽에 있다고 추측합니다만... 이것만 봐서는 확실히 알수가 없었습니다. 그래서 이것 저것 뒤지다보니 intel-82093-apic 문서를 찾았습니다. IO APIC 컨트롤러에 대한 문서더군요. ^^;;; 거의 바깥쪽에 있는게 확실한 것 같습니다. 그런데 이게 왜 중요했던건지... ㅡ_ㅡa;;;;

 생각난 김에 VMWare의 부팅했을때 모드가 위의 그림 중에 어떤 것인지 확인을 좀 해봤습니다. 몇가지 테스트가 있는데... 테스트 과정은 좀 복잡해서 생략하고 결론만 이야기하면 Virtual Wire Mode With Local APIC 인 것 같습니다. 왜냐하면 I/O APIC쪽에 Interrupt Remapping Table인가 하는 녀셕이 Default 값으로 되어있거든요. 즉 안쓴다는 이야기지요. ^^;;; 그동안 다른쪽 코어에는 인터럽트쪽 설정을 안했기 때문에 별 신경을 안쓰고 있었는데, 이제 다른 코어에 인터럽트를 활성화하려면 이것이 중요한 단서가 되서 한번 읽어봤습니다.

 음... 이제 몇가지 코딩을해서 Symmetric IO Mode 로 전환하고 테스트를 좀 더 진행해볼 생각인데... 이것 참... 할일이 많네요. ^^;;; 언제쯤 또 할 수 있을지... 요즘 들어 시간이 부쩍 부족한 것 같습니다. ㅎㅎ 그래도 잘 쪼개서 이것 저것 해봐야겠지요 ;)

 그럼 다음에 또 테스트해서 결과가 나오면 올리겠습니다. ㅎㅎ 다들 좋은 하루 되세요 ;)

ps) APIC 관련 자료가 참 없더군요. 참 불모지(?)스럽다는.... ㅡ_ㅡa...


 그동안 OS를 여러번 만들어봤습니다만, 2002년에 시작한 KKAMAOS 외에는 그렇게 디테일한 레벨까지는 만들지 않았습니다. 프로그래머라면 다들 그렇겠지만 "했던" 일을 다시 한다는 것 자체가 고통이어서 다시 하려니 손이 안가더군요. 그래서 CPU를 ARM이나 DSP 같은 걸로 살살 바꿔가면서 "부팅 -> OS 로딩 -> 멀티태스킹" 정도 구현하고 끝냈습니다.

 그런데 이런 저런 사정으로 한번 더 만들게 됬는데... 이번에는 좀 색다르게 64bit로 만들게 될 것 같습니다. 사실 64bit에 대해서는 대충 알고 있었던지라 한번 볼 필요도 있고 해서 과감히 결정했습니다. 한 며칠동안은 스터디만 죽어라고 할 것 같군요. ^^;;;;

 오늘 예비군 훈련 받으면서 Intel 문서 좀 보려고 PSP에 넣어갔었는데... 바보같이 보안 검색대에서 걸려서 PSP를 압수당했다는.... ㅜ_ㅜ... 결국 예비군 훈련 시간을 거의 다 날려버렸습니다. ㅜ_ㅜ 오늘 좀 봤으면 저녁에 코딩을 어느 정도 할 수 있었을텐데.... 많이 아쉽군요. ㅜ_ㅜ...

 일단 진행 중간 중간에 팁이나 스크린샷 위주로 포스팅 할 예정입니다. 갑자기 또 불이 붙기 시작하는군요. ;)
 다들 기대해 주세요 >ㅁ<)/~


 아아... 거의 목차만 4일째 쓰고 있습니다. 뭐 단순히 목차만 적는게 뭐 그리 힘드냐고 말씀하실지 모르지만... "목차"만 적는 것이 아니라 그 안에 들어갈 내용도 개요 형식으로 적어야 하니 시간이 굉장히 많이 걸립니다.

 개요를 적는 다는 것 자체가 이미 내용을 쓰고 있는 것과 비슷한 레벨이더군요. 굳이 비유하자면 뼈대를 만들고 있다랄까요? 살만 붙이면 완성될 수 있도록... ^^;;; 처음에는 간단하게 시작했습니다만, 다루는 범위가 점점 불어나서 이제는 챕터(Chapter) 50개가 넘습니다. @0@ 이걸 다 구현할 수 있을지... 이젠 저도 모르겠습니다. 쿨럭..;;; ㅜ_ㅜ

 그래도 내일이나 모레쯤되면 목차를 완성할 수 있을 것 같습니다. 각 항목당 분량도 적어달라고 요청이 왔지만... 아무래도 각 세부 항목에 분량을 예측하기는 힘들 것 같고 대략 5페이지 정도 설명에 3페이지 정도 소스코드를 할당한다고 치면 400쪽이 넘는... ㅡ_ㅡa... 일단 뭐... 전체 분량만 대략 예측해서 보내야겠습니다.

 아우~ 목차가 끝나고 나면 인텔 메뉴얼을 들고 살아야 할 듯한데... PSP에 인텔 메뉴얼 파일이나 넣어 다니며 읽어야겠네요. ^^)/~

 역시 전 개발할때가 제일 좋다는... ㅎㅎ 빨리 끝나고 개발 들어갔으면 좋겠습니다. ;)
 그럼 다들 좋은 밤 되세요~ ^^)/~


 PSP로 동영상을 보려고 인코딩 프로그램을 찾다가 꽤나 괜찮은 놈을 발견했습니다. XviD4PSP라는 녀석인데, 고화질로 인코딩 해주고, 파일 포맷 또한 PSP에서 바로 재생가능한 .mp4 파일로 만들어 줍니다.^^)/~

실행 파일은 http://pspmini.mud4u.com/bbs/board.php?bo_table=Pspmini_Homebrew&wr_id=28379 에서 다운 받을 수 있습니다. 아래에 파일로도 첨부했습니다.

사실 더 높은 버전의 XviD4PSP도 있지만 자막 크기를 조절하는 옵션이 사라진 듯(?)하더군요. 그래서 4.114 버전을 사용하게 됬습니다.

 자막 조절 방법은 http://pspmini.mud4u.com/bbs/board.php?bo_table=Pspmini_Tip&wr_id=2273&page=&sfl=wr_subject&stx=XVID4PSP&sop=and 에서 보실 수 있습니다. 포인트는 동영상의 Advance Option에 가장 아래에 있는 Auto Load Subtitles 옵션을 해제하는 것입니다. ^^;;; 안그러면 자막이 겹쳐서 나옵니다.

 이거 PSP를 쓰는 재미가 또 하나 늘었군요. ^^)/~
 그럼 다들 좋은 밤 되시길~ ;)


 블로그를 돌다가 스크랩 해놓은지 꽤나 됐는데, 이제서야 포스팅하는군요. ^^;;; 워낙 정신없이 살다보니 ㅎㅎㅎ
 
 자신만의 Network Set-Top Box를 만드는 방법에 대해서 설명해 놓은 자료입니다. YBox2 라는 이름을 가지고 있고 PAL과 NTSC 2가지 방식의 출력을 지원한다는 군요. 원문은 http://ladyada.net/make/ybox2/index.html 에서 보실 수 있습니다.

 아래는 원문에 포함된 스크린샷의 일부입니다. 아주 멋집니다~!! ;)
 







 시간나면 한번 만들어봐야겠군요. ^^
 그럼 좋은 하루 되세요. ;)

 어제 야근을 너무 늦게까지했더니 오늘 완전 몸이 녹아 내렸습니다. 집에와서 그냥 쉴려고 했는데... 취미로 하는 일이 너무 밀려있어서 꾸역꾸했더니 더 몸이 않좋네요. ㅎㅎ;;

 에혀... 일찍 자야하는데... 이거 원 쉽지가 않군요. 목차 쓰는 일이 생각보다 빡셔서...^^;;;; 구현할 것은 많고, 순서는 뒤죽박죽이고... 다시 읽어보니 이게 뭔말인지 모르겠고... ㅡ_ㅡa... 크윽... 역시 글쓰기에는 소질이 없는 것 같습니다.

 그래도 일단 저지른 일이니, 끝까지 한번 해볼겁니다. ^^;;;;
 정 아니다 싶으면 누군가(?)가 도와주겠지요 ㅎㅎ

 피곤해서 언능 자야겠습니다. ^^
 다들 좋은 밤 되세요 ;)


 요즘 계속 컴퓨터 앞에만 앉아 있어서 뭔가 특단의 조치가 필요하다고 느꼈습니다. 뭘할까 굉장히 고민했는데, 갑자기 예전에 추던 춤을 다시 춰볼까 하는 생각이 들더군요. 제 스타일이 생각하면 바로 지르는 것이라... 오늘 다짜고짜 사내 힙합 동호회로 출동했습니다.

 당연히 처음부터 몸을 실컷 돌리고(??) 올 생각이었기 때문에, 가서 바닥부터 살폈습니다. 맨질 맨질한게 아주 잘돌겠더군요. ㅎㅎ 아유 좋구로... ㅋㅋㅋ

 잠깐 눈치를 보다가 그냥 바닥에 몸을 내던졌습니다. 간만에 하는거라 힘이 무지 들었습니다. 이거 원... 연수때만 생각하다가 손목도 다칠뻔하고... 몸무게가 장난 아니게 늘었더군요(사실 원상 복구 된겁니다만... ㅡ_ㅡa...).

 한참 혼자 돌리고 있는데 갑자기 힙합 동호회 사람들이 주변에 몰려들더니만, 가입시키자고.... ㅡ_ㅡa...  알고 봤더니 스탠딩 댄스(Standing Dance) 위주의 동호회라서 B-Boy가 별로 없더군요. 있어도 다 같이 이제 배우는 분들이라 같이 연습할 사람이 필요했던 듯... ㅡ_ㅜ...

 간만에 했더니 허리도 아프고 손목도 아프고... 몸이 아주 난립니다. 그래도 땀 흘리고나니 기분은 좋네요. ;) 앞으로 자주 나갈까 생각하고 있습니다. 이 참에 확 연습해서 소시적에도 못해본 토마스 + 나인틴 로빈 + 윈드밀 + 토마스 + 윈드밀 + 에어트랙 콤보를 콱~!!! 잘되면 나중에 찍어서 한번 올리겠습니다. ;)

 아아... 이거... 오늘도 목차를 못쓰겠군요. ㅡ_ㅡ.... 큰일이네요. 빨리 써서 보내야하는데... 으윽.... 내일은 꼭 일찍와서 써야겠습니다.
 
 그럼 다들 좋은 밤 되시길 ;)
 한 2년 전에 Xnote LW20-35WK라는 모델을 약 200만원이라는 거금을 주고 샀습니다. CPU가 2.13GHz에 램이 2GByte 달린 괴물같은 녀석이었지요. ^^;;;; 그때는 노트북 램이 아무리 커도 느린 HDD 때문에 별로 안빠르다는 사실을 몰랐습니다. ㅜ_ㅜ (결국 스펙 오버....)

 세월이 흘러 프로그램들은 점점 더 무거워졌고,  HDD가 느린 LW20으로 버티기엔 무리더군요. 결국 데스크탑으로 갈아타고 노트북은 저쪽 책꽂이 한켠에 던져놨었습니다. 그런데... 다들 아시겠지만 데스트탑이 열이 장난이 아닙니다. ^^;;; 모니터도 24인치짜리를 쓰고있으니 아래에서 위에서 열이 펄펄.... 결국 견디다 못해 노트북을 집었습니다.

 역시나 노트북이 상당히 느리군요. 예전에 어떻게 사용했는지 모르겠습니다. 데스크탑과 비교하면 이건... 뭐... ㅡ_ㅜ... 그래도 열은 안나니 좋긴한데.... ^^;;;;; 어차피 웹 작업 위주니 작업에는 큰 문제가 없지만... 워드나 기타 개발 툴을 실행할때는 죽을 것 같네요. ㅎㅎ

 그래도 열이 확 줄어들어서 좋습니다. ;) 앞으로 글쓸 일이 좀 많아질 듯 한데... 글쓰는 일과 같이 로드가 적게 걸리는 일은 노트북을 쓰고, 큰 로드가 걸리는 부분은 데스크탑을 켜서 원격으로 하는 방법으로 해야겠습니다. 이렇게 되니 안팔기를 잘한 것 같네요. ^^)/~ 사람 마음이란게 참... ㅎㅎ

 아아~ 오늘부로 가상 HID(Virtual HID)관련 작업이 거의 마무리되서, 앞으로 다른 일을 좀 할 수 있을 것 같습니다. 날아갈것 같군요. 앞으로 더 재미난걸 해볼 생각입니다. ;)
 그럼 다들 좋은 밤 보내시길~ ㅎㅎ

 Immunity Debugger를 만드는 Immunity 사에서 Kernel Exploit 관련 자료들을 공유하고 있습니다. ^^)/~ 원문은 http://immunityinc.com/resources-papers.shtml 에서 보실 수 있습니다.

 아직 보지 않아서 무슨 자료인지는 정확히 알 수 없지만, 제목만 훓어봐도 꽤 괜찮겠다 싶은 내용이 있더군요. 아래는 위 사이트에서 소개한 목차와 내용입니다.
June 11, 2008: Exploiting Kernel Pool Overflows (Kostya Kortchinsky)
ODP

June 11, 2008: The I2OMGMT Driver Impersonation Attack (Justin Seitz)
PDF
ODT

March 28, 2008: The Hacker Strategy (updated for Harvard ABCD meeting)
PDF

February 29, 2008: IO Immunity Style (Sinan Eren)
PDF

January 26, 2008: The Hacker Strategy (S4 SCADA conference keynote)
PDF

January 22, 2008: Going Against The Gradient
PDF
OpenOffice

December 14, 2007: Beyond Fast Flux
OpenOffice (presentation)
PDF

November 23, 2007: Exploit Development with Immunity Debugger
OpenOffice (presentation)

August 10, 2007: Damian Gomez - Intelligent Debugging
PDF (presentation)
Openoffice (presentation)

July 6, 2007: Nicolas Waisman - Understanding and Bypassing Windows Heap Protection
PDF (presentation)
Openoffice (presentation)

July 6, 2007: Justine Aitel - The IPO of 0days
PDF (presentation)
Openoffice (presentation)

April 8, 2007: Dave Aitel - CANVAS Command Line Executer
Openoffice (paper)

April 8, 2007: Kostya Kortchinsky - Macro-Reliability in Win32 Exploits
Openoffice (presentation)

December 6, 2006: Dave Aitel - Remote Language Detection
Openoffice (paper)

August 30, 2006: Dave Aitel - MSRPC Fuzzing
OpenOffice (paper)
OpenOffice (presentation)

February 13, 2006: Dave Aitel - Resilience
PDF
OpenDocument
TGZ source

January 26, 2006: Dave Aitel - Nematodes (updated)
PDF
OpenDocument
VisualSploit Preliminary Flash Demo

September 29, 2005 Dave Aitel - Nematodes
OpenOffice PDF

May 9th, 2005 Dave Aitel - Practical IDS Evasion
OpenOffice

Feb, 28th, 2005 Bas Alberts - Exploiting the PHP_Limit bug
PDF

Jan 29, 2005 Dave Aitel - 0days: How hacking really works
Open Office PDF HTML

Oct 12, 2004 Dave Aitel - The CANVAS Reference Implementation
Open Office

Oct 12, 2004 Dave Aitel - Advanced Ordnance 2
Open Office PDF

August 12, 2004 Dave Aitel - Microsoft Windows, a lower Total Cost of Ownership
Open Office    |   PDF

June 21, 2004 Dave Aitel - Beyond Best Practices (Given at OWASP AppSec 2004)
Open Office

May 19, 2004 Dave Aitel - Rapid Application Development in Linux using pyGTK
Open Office

March 1, 2004 Dave Aitel - Enterprise Secific Software Security Issues:
Open Office

Feb 4, 2003 The Advantages of Block-Based Protocol Analysis for Security Testing:
Open Office   |    HTML   |    Text   |    Post Script   |    PDF

July 29, 2002 Using SPIKE 101
Power Point   |    Real Media

Feb 24, 2003 - Vivisection of an Exploit Development Process
Power Point   |    Real Media

May 1, 2003 - Windows Exploitation for Unix Hackers
Power Point

Sep 29, 2003 - MOSDEF
Power Point

Jan 27, 2004 - Advanced MOSDEF
Open Office

March 1, 2003 Nicolas Waisman - Linux Heap Overflow Techniques
Power Point

Sep 12, 2003 Microsoft Heap Overflows I/II
PDF    |   Open Office

Sep 12, 2003 Microsoft Heap Overflows II/II
PDF    |   Open Office

 완전 득템이군요. ^^;;; 그럼 즐거운 주말 보내시길~ ;)


몇시간 삽질 끝에 드디어 가상 HID(Virtual HID)를 완성했습니다. ^^)/~ 약간 문제가 있긴 하지만 그래도 동작은 하니... ^^;;;;; 하나의 드라이버로 동작하게 할 생각이었습니다만은 보안 프로그램에 따라 특색이 조금씩 달라서 결국 포기했습니다.

이게 희한한게... 하나는 완전히 내렸다가 새로 올리고 다른 하나는 아예 그냥 잘라버립니다. ㅡ_ㅡa... 이것 참... 그래서 한쪽에 맞춰두면 다른 한쪽에서 문제가 발생하더군요. 결국 두가지 버전으로 구성했습니다. 이렇게 되면 버전관리가 힘든데... 흑흑.... ㅜ_ㅜ 어쩔수 없지요 ㅜ_ㅜ...

대충 키보드/마우스 이벤트를 넣어보고 정리하려고 키보드 쪽을 유심히 봤더니, HID 키보드의 값과 전통적으로 사용하는 스캔 코드(Scan Code)의 값이 서로 다르더군요. @0@)/

결국 기존의 LIbrary가 스캔 코드 값을 받도록 되어있었기에, 호환성 유지를 위해 HID 값으로 바꿔줘야 했습니다. 결국 Mapping Table을 만들어야 한다는 이야기!!! 그래도 구글신이 도와주셔서 괜찮은 문서를 구했고, 삽질 끝에 맵핑 테이블을 완성했습니다. ^^)/~

아아~ 일단 만들었으니 내일 테스트 해야겠습니다. ^^)/~ 다들 좋은 밤 되시길~

translate.pdf
0.13MB

문서와 Mapping Table 첨부합니다. ^^)/~

/*Key Name        PS/2 Set 1 Make*        HID Usage ID */    
{/*    DO NOT USE    0x00    */    0x00    ,
/*    Escape    0x01    */    0x29    ,
/*    1 !    0x02    */    0x1E    ,
/*    2 @    0x03    */    0x1F    ,
/*    3 #    0x04    */    0x20    ,
/*    4 $    0x05    */    0x21    ,
/*    0.05    0x06    */    0x22    ,
/*    6 ^    0x07    */    0x23    ,
/*    7 &    0x08    */    0x24    ,
/*    8 *    0x09    */    0x25    ,
/*    9 (    0x0A    */    0x26    ,
/*    0 )    0x0B    */    0x27    ,
/*    - _    0x0C    */    0x2D    ,
/*    = +    0x0D    */    0x2E    ,
/*    Backspace    0x0E    */    0x2A    ,
/*    Tab    0x0F    */    0x2B    ,
/*    q Q    0x10    */    0x14    ,
/*    w W    0x11    */    0x1A    ,
/*    e E    0x12    */    0x08    ,
/*    r R    0x13    */    0x15    ,
/*    t T    0x14    */    0x17    ,
/*    y Y    0x15    */    0x1C    ,
/*    u U    0x16    */    0x18    ,
/*    i I    0x17    */    0x0C    ,
/*    o O    0x18    */    0x12    ,
/*    p P    0x19    */    0x13    ,
/*    [ {    0x1A    */    0x2F    ,
/*    ] }    0x1B    */    0x30    ,
/*    Return    0x1C    */    0x28    ,
/*    Left Control    0x1D    */    0xE0    ,
/*    a A    0x1E    */    0x04    ,
/*    s S    0x1F    */    0x16    ,
/*    d D    0x20    */    0x07    ,
/*    f F    0x21    */    0x09    ,
/*    g G    0x22    */    0x0A    ,
/*    h H    0x23    */    0x0B    ,
/*    j J    0x24    */    0x0D    ,
/*    k K    0x25    */    0x0E    ,
/*    l L    0x26    */    0x0F    ,
/*    ; :    0x27    */    0x33    ,
/*    ' "    0x28    */    0x34    ,
/*    ` ~    0x29    */    0x35    ,
/*    Left Shift    0x2A    */    0xE1    ,
/*    \ |    0x2B    */    0x31    ,
/*    Europe 1 (Note    0x2B    */    0x32    ,
/*    z Z    0x2C    */    0x1D    ,
/*    x X    0x2D    */    0x1B    ,
/*    c C    0x2E    */    0x06    ,
/*    v V    0x2F    */    0x19    ,
/*    b B    0x30    */    0x05    ,
/*    n N    0x31    */    0x11    ,
/*    m M    0x32    */    0x10    ,
/*    , <    0x33    */    0x36    ,
/*    . >    0x34    */    0x37    ,
/*    / ?    0x35    */    0x38    ,
/*    Right Shift    0x36    */    0xE5    ,
/*    Keypad *    0x37    */    0x55    ,
/*    Left Alt    0x38    */    0xE2    ,
/*    Space    0x39    */    0x2C    ,
/*    Caps Lock    0x3A    */    0x39    ,
/*    F1    0x3B    */    0x3A    ,
/*    F2    0x3C    */    0x3B    ,
/*    F3    0x3D    */    0x3C    ,
/*    F4    0x3E    */    0x3D    ,
/*    F5    0x3F    */    0x3E    ,
/*    F6    0x40    */    0x3F    ,
/*    F7    0x41    */    0x40    ,
/*    F8    0x42    */    0x41    ,
/*    F9    0x43    */    0x42    ,
/*    F10    0x44    */    0x43    ,
/*    Num Lock    0x45    */    0x53    ,
/*    Scroll Lock    0x46    */    0x47    ,
/*    Keypad 7 Home    0x47    */    0x5F    ,
/*    Keypad 8 Up    0x48    */    0x60    ,
/*    Keypad 9 PageUp    0x49    */    0x61    ,
/*    Keypad -    0x4A    */    0x56    ,
/*    Keypad 4 Left    0x4B    */    0x5C    ,
/*    Keypad 5    0x4C    */    0x5D    ,
/*    Keypad 6 Right    0x4D    */    0x5E    ,
/*    Keypad +    0x4E    */    0x57    ,
/*    Keypad 1 End    0x4F    */    0x59    ,
/*    Keypad 2 Down    0x50    */    0x5A    ,
/*    Keypad 3 PageDn    0x51    */    0x5B    ,
/*    Keypad 0 Insert    0x52    */    0x62    ,
/*    Keypad . Delete    0x53    */    0x63    ,
/*    UNASSIGNED    0x54    */    0x00    ,
/*    UNASSIGNED    0x55    */    0x00    ,
/*    Europe 2 (Note    0x56    */    0x64    ,
/*    F11    0x57    */    0x44    ,
/*    F12    0x58    */    0x45    ,
/*    Keypad =    0x59    */    0x67    ,
/*    UNASSIGNED    0x5A    */    0x00    ,
/*    UNASSIGNED    0x5B    */    0x00    ,
/*    Keyboard Int'l 6    0x5C    */    0x8C    ,
/*    UNASSIGNED    0x5D    */    0x00    ,
/*    UNASSIGNED    0x5E    */    0x00    ,
/*    UNASSIGNED    0x5F    */    0x00    ,
/*    DO NOT USE    0x60    */    0x00    ,
/*    DO NOT USE    0x61    */    0x00    ,
/*    UNASSIGNED    0x62    */    0x00    ,
/*    UNASSIGNED    0x63    */    0x00    ,
/*    F13    0x64    */    0x68    ,
/*    F14    0x65    */    0x69    ,
/*    F15    0x66    */    0x6A    ,
/*    F16    0x67    */    0x6B    ,
/*    F17    0x68    */    0x6C    ,
/*    F18    0x69    */    0x6D    ,
/*    F19    0x6A    */    0x6E    ,
/*    F20    0x6B    */    0x6F    ,
/*    F21    0x6C    */    0x70    ,
/*    F22    0x6D    */    0x71    ,
/*    F23    0x6E    */    0x72    ,
/*    UNASSIGNED    0x6F    */    0x00    ,
/*    Keyboard Intl'2    0x70    */    0x88    ,
/*    UNASSIGNED    0x71    */    0x00    ,
/*    UNASSIGNED    0x72    */    0x00    ,
/*    Keyboard Int'l    0x73    */    0x87    ,
/*    UNASSIGNED    0x74    */    0x00    ,
/*    UNASSIGNED    0x75    */    0x00    ,
/*    F24    0x76    */    0x73    ,
/*    Keyboard Lang 4    0x77    */    0x93    ,
/*    Keyboard Lang 3    0x78    */    0x92    ,
/*    Keyboard Int'l4    0x79    */    0x8A    ,
/*    DO NOT USE    0x7A    */    0x00    ,
/*    Keyboard Int'l5    0x7B    */    0x8B    ,
/*    DO NOT USE    0x7C    */    0x00    ,
/*    Keyboard Int'l2    0x7D    */    0x89    ,
/*    Keypad ,Brazilian Keypad    0x7E    */    0x85    ,
/*    DO NOT USE    0x7F    */    0x00    }

 아우~ 죽는 줄 알았습니다. 화요일부터해서 어제 금요일까지 완전 계속 노가다하고 땀흘리고... ^^;;;; 아우... 가만히 있어도 땀이 줄줄 흘러내리는 체질인데... 몸이 그냥 아주 녹아내리는 줄 알았습니다. ^^;;;

 그나저나 연수 도중에 깨닳은 건데... 저한테 슈퍼 히어로가 되고싶어하는 "끼"가 있나 봅니다. 이상하게 지원하라고 이야기할 때는 아무 생각이 없다가, 남들이 하는 것 보고 있으면 뭔가 끓어 올라 같이 한바탕 하고 싶은 그런 기분이 드는 것이...

 왜 그런거 있지 않습니까? 남들 틈에 조용히 지내다가 위급한 상황이 생기면 갑자기 나타나서 정리(?)해주고 가는... ㅎㅎ 이번 연수때도 갑자기 정리하고 싶은 충동이 마구 일어나는 장면이 있어서 뛰쳐나갈 뻔 했습니다. ^^;;;;

 에혀... 이제 월요일부터는 다시 출근해야 하는군요. 살짝 눈물이.... 놀때가 좋았습니다. ㅜ_ㅜ)/~
 다들 주말 잘 보내시길~ ;)

 ps) 아아~ 다시 가상 HID(Virtual HID) 분석을 해야한다는.... ㅜㅜ
 오늘 무슨 행사를 한다길래 그냥 앉아 있으면 되는 줄 알고 어제 2시까지 코드를 만지다가 잤습니다. ㅡ_ㅡa... 아 이거 원... 거의 다 됬는데 진짜 한끗 차이로 모 보안 프로그램에 걸리더군요. ^^;;; 사실 걸린다는 표현보다는 이녀석이 HID Keyboard Driver를 내려버린다는 말이 더 맞는 것 같습니다. 그래서 키보드 입력이 안되는 문제가.... ^^;;;;

 그래서 이걸 해결하려고 이것 저것 손보다보니 2시 넘어서 잤습니다. 그래도 일은 안하니까 좀 편한 마음으로 잤지요. 그런데 이게 왠일입니까? 노가다를 시키는 것이 아니겠습니까? ㅜ_ㅜ)/~ 아흑... 잠도 별로 못잤는데 땀 뻘뻘 흘리면서 이상한 걸 했더니 나중에는 머리가 다 아프더군요. 지금도 지끈 거리는 상탭니다. ㅜ_ㅜ....

 불행은 이 상태에서 다시 코드를 보고 있다는 것이고, 그나마 다행인 점은 칼퇴근을 해서 좀 쉬었다는 겁니다. ㅎㅎ 아유... 진짜 머리 아프네요. ^^;;; 당췌 어떻게 해야 해결할 수 있을지....

 오늘도 열심히 한번 파봐야겠습니다. 뭐라도 나오겠지요 ^^)/~
 그럼 다들 좋은 밤 되시길~


 흑흑... 이게 얼마만인지 모르겠습니다. ㅜ_ㅜ)-b 쌩판 모르는 상태로 HID 드라이버를 손보기 시작해서 키보드와 마우스를 생성하기까지 한참 걸렸고, 보안 프로그램에 걸려서 이걸 피해 가는데 또 한참 걸렸네요.

 ㅜ_ㅜ 아아~ 진짜 ㅡ_ㅡa... 간단히 쓸 수 있는 API를 막아놔서 다른 방법을 찾는다고 고생했습니다.  ㅜ_ㅜ 제가 아는 범위에서 테스트 안해본 케이스가 거의 없을 정도로 오만가지를 다 썼는데... 결국 간단한 아이디어로 해결... ^^;;; 그것도 놀다가 깜짝 떠올라서... ㅎㅎㅎ(역시 인생은 타이밍~!!!). 아이디어는 어쩔 수 없이 비공개... 왠지 하면 큰일날듯해서 ^^;;;;;

 가상 HID 드라이버가 HID miniport 드라이버이다 보니 이것저것 제약사항이 많더군요. 뭐 하나 제대로 할 수 있는 것도 없고... 툭하면 재부팅되기 일수이고... 평일 저녁시간과 주말 일부를 올인해서 겨우 해결했습니다. 방금 테스트했는데 큰 문제가 없는 것 같네요. ^^)/~~~

 이제 더러워진 드라이버 코드를 좀 정리하고, 약간 테스트만 더하면 끝날 것 같습니다. 어휴~ 이번 주는 따로 스케줄이 있어서 내일 말고는 시간이 없을 듯한데, 내일 저녁에 완전히 끝내 놓야겠군요. ^^;;;; 어휴... 죽는 줄 알았습니다. 어휴~ 진짜... @0@)/~!!!

 덕분에 HID에 대해서 공부 한번 제대로 했습니다(정말? ㅡ_ㅡa..). 역시 DDK만한게 없군요. 최고입니다. ㅎㅎ DDK 만세~~
 그럼 다들 좋은 밤 되세요 ;)

ps) 이런... ㅡ_ㅡa... 한쪽은 또 다른 수를 써놓았군요. ㅡ_ㅡ;;; 좀 더 파봐야 할 것 같습니다. ㅜ_ㅜ 아우~ 진짜... ㅜ_ㅜ)/~

 간만에 고향집에 왔는데, 이것저것 할게 많군요. ^^;;;; 오후에 바닥에 놓을 타일을 좀 나르고 나니 아래집 PC 업그레이드가.... 두둥... @0@)/~ 예전부터 조금씩 조금씩 업그레이드를 진행했는데, 뭔가 인연이 안맞는지 계속 실패했었습니다. 오늘도 일이 잘 풀리지 않더군요. 그래도 오늘은 끝장을 보겠다는 마음으로 열심히해서 완료했습니다. @0@)/~!!!!

 이게 참 희한한게... 히스토리를 좀 이야기 하자면....
 첫번째는 컴퓨터가 너무 느리다고해서 손을 좀 봐주러 갔습니다. 그런데 왠걸... PC가 느릴만 한 겁니다. ㅡ_ㅡa.. XP를 쓰고 있는데 1G CPU와 256M의 램에 비디오 카드는 메모리 공유... ㅡ_ㅡa... 그래서 결국 바탕화면이랑 불필요한 프로그램만 제거해줬습니다.

 두번째는 메인 보드와 CPU가 붙은 좋은 보드가 있다고 해서 옮겨달라고 하더군요. 그런데 이게 왠일입니까? 원래 쓰던 PC가 너무 구형이라 건질 부품은 달랑 HDD와 FDD 정도... ㅜ_ㅜ... 그래서 일단 부품 견적서를 주고 주문을 하라고 했습니다.

 세번째는 바로 오늘인데... 이제 부품도 다 왔겠다 한번 옮겨보자 했더니... @0@)/~!!! 메인 보드가 VGA 통합이 아니었던겁니다. @0@)~!!!! 이거 완전 낭패... 그래서 다음에 하자고 말을 할려니 초롱 초롱한 아이들의 눈망울이... ㅜ_ㅜ 그래서 늦은 밤 중고 부품을 겨우 구하여 PC를 완성하고 Window XP를 깔았습니다. 다 하고나니 2시군요. ^^;;;; 완성하고나니 다행이도 구해온 보드가 듀얼 1.8G라서 많이 빠르군요. 나름 갓빠(?)가 좀 섰습니다. ㅎㅎ

 어휴... 힘은 듭니다만은 애들이 좋아하는 걸 보니 뿌듯합니다. ㅎㅎ 그나저나 이거 할 일이 태산인데, 하나도 못했네요. ㅜ_ㅜ 아아~ 내일 일찍가서 마무리해야겠습니다. ^^;;;;

 다들 좋은 밤 되시길~ ;)


 아아~ 역시 이거 USB가 만만치 않군요. ㅜ_ㅜ... 잘 모르는 상태에서 시작했던 USB 개발이라... 막히니 해결하는데 시간이 많이 걸리네요. ㅜ_ㅜ...

 가상 USB의 특성상(Bus 드라이버 같은거다보니... ^^;;;) USB API로 드라이버를 찾게되면 맨 상단에 위치한 드라이버가 나오게 되는데... 이걸 직접 찾아서 Open 하려니 드라이버가 또 필요할 것 같고...

 지금 고민에 빠져있는 상태입니다. 일단 간단히 메시지를 보낼 방법을 찾았지만 생각보다 문제가 많더군요. ㅡ_ㅡa... 그래서 결국 다른 방법을 찾아야겠는데... 아아... 이거 원... ^^;;; 결국 드라이버를 하나 더 써야할지...
 
 어찌하면 좋을까요? ㅜ_ㅜ
 좋은 생각 있으신 분 계시나요?


 과로로 며칠 쉬다가 겨우 다시 작업 중입니다. 가상 HID(Virtual HID) 드라이버는 대충 완성됬는데... 글쎄 또 보안 프로그램이 문제군요. ㅡ_ㅡa... 이것 참.... 답답하네요. ㅎㅎ

 다시 오늘부터 열혈 디버깅 들어갑니다. 삽질하다보면 삽이 부러지던지 바닥을 뚫던지 결판이 나겠지요. ;) 아우~ 이거 신경질이 살살 납니다. 이래서야 원... 뭘 할수가 있어야.... 다 만들어 놓고도 써먹질 못하니... ^^;;;;

 이제 또 누가 이기나 해봐야겠군요. ㅎㅎ >ㅁ<)-b

 분석해서 나중에 또 올리겠습니다.

 그럼 다들 좋은 밤 되시길~ ;)


 어제 갑자기 책 한권 써보는게 어떨까하는 생각이 들었습니다. 뭐 미치지 않고서야 이런 생각을 하겠냐만, 마이크로소프트웨어에 올리기에는 좀 복잡하고 양이 많다고 생각하고 있던 주제라서... ^^;;;; 해당 주제에 관한 자료가 인터넷에서 찾기 힘들 뿐더러, 실제로 구현된 사례도 그리 많지 않은 것 같더라구요. ^^;;;;

 일단 될지 안될지는 모르겠지만 한번 출판사에 연락을 취해볼 생각입니다. 기획쪽이나 그런 곳에 연락을 취하면 되겠지요. ㅎㅎ 주제나 자세한 내용은 일단 결정이 나면 올리겠습니다. ^^;;;;

 아아~ 이거 오늘은 작업을 하나도 못하고 그냥 자겠군요. 빨리 가상 HID 드라이버도 완성해야하는데... ㅎㅎ 내일 해야겠습니다. ^^)/~

 그럼 다들 좋은 밤 되세요 ^^)/~
 아우~ 지난주와 이번주, 완전 피곤합니다. ㅜ_ㅜ 만들어 놓았던 필터 드라이버가 특정 상황에서 동작하지 않는 문제가 있어서 디버깅한다고 거의 날밤을 샜습니다. 거짓말 조금 보태서 설치하고 재부팅하고 하는 과정을 거의 200번 정도 한 것 같습니다. ㅜ_ㅜ

 증상 또한 다양했는데... 재부팅이 일어나질 않나, 갑자기 필터 드라이버가 사라지질 않나... 처음에는 프로그램을 잘 못 짠줄 알고 코드를 열심히 수정했습니다. 그런데 가만히 보니 코드의 문제가 아닌 것 같은 느낌이 들어서 다시 커널쪽으로 방향을 틀었습니다.

 역시나... 보안 프로그램이 필터 드라이버의 함수를 수정하거나,  필터 드라이버를 언로딩하고 다시 로딩하는 작업을 수행하더군요. ㅡ_ㅡ;;;; 필터 드라이버가 언로딩 되는 경우는 윈도우가 종료될 때라고 한정하고 있었기때문에 속수무책으로 당했습니다. ㅡ_ㅜ..

 그래서 부랴부랴 언로딩 루틴에 처리하는 부분을 보완하고, 수정된 필터 함수를 좀 손봤더니 잘 되는군요. 내가 쓰겠다는데 왜 내 드라이버를 손보는 것인지... 살짝 기분이 않좋습니다. ㅡ_ㅡa...

 그래도 해결했으니 기분은 좋네요. ^^)/~
 비록 하는 일은 이쪽과 거리가 있지만, 그래도 아직 죽지 않았습니다. @0@)/~!!!


 요즘 필터 드라이버 수정하랴 Virtual HID 드라이버 수정하랴 정신이 없습니다. ^^;;; 뭐랄까요... 필터 드라이버 같은 경우는 완성되긴 했지만... V3가 설치된 PC에서는 제대로 수행되지 않는 문제가 있었습니다.

 일단 수정을 위해서 V3 Internet Security 평가판을 설치하고 부랴부랴 테스트에 돌입했습니다. 결과가 어찌나올지는 모르겠지만 영향을 아주 안주는 것은 아닌 것 같군요. ^^;;;

 아휴... 이거 오늘도 피곤하게 생겼습니다. 그려... ^^;;; 뭔가 알아내면 제보(??) 날리겠습니다. ^^
 그럼 다들 좋은 밤 되시길~ ^^)/~
 아흑... 요즘 뜨는 대세가 가상 HID(Virtual HID)라고 해서 잘 모르는 USB Spec을 뒤지면서 작업을 하고 있습니다. 어휴... 이것 참 진짜 어렵네요. ㅜ_ㅜ...

 그래도 어떻게 어떻게 진행해서 키보드와 마우스로 인식시킨 다음 마우스 데이터를 밀어넣는데 성공했습니다. >ㅁ<)/~ ㅎㅎ 신나는 군요. ;)

 HID Report 구조체를 보면서 발견한건데, Mouse의 좌표 값이 상대값이네요. 하긴... 절대값으로 들어올려면 마우스가 지금 어디에 있었고 얼마만큼 움직였는지 알아야하니까 당연히 상대값으로 가는게 맞겠지요. ^^;;;;

 아휴~ 머리를 썼더니 골치가 다 아픕니다. ^^;;; 이거 원... 취미생활은 하나도 못하고 계속 작업만 하고 있군요. ㅜ_ㅜ)/~ 빨리 마무리해야겠습니다.

 그럼 다들 좋은 밤 되시길~ ;)

위모트(Wii Remote) 설정방법

원문 : http://www.wiili.org/index.php/How_To:_BlueSoleil

 

This tutorial will show you how to set up and connect to your Wiimote with BlueSoleil.

The version of BlueSoleil used in this tutorial (and has been tested on) is 1.6.2.1

 

Download BlueSoleil

 

  • You can download the latest BlueSoleil drivers from their website.
  • Or you can find different versions of it on FileMirrors.

 

BlueSoleil Tutorial

 

  • First, start up the BlueSoleil software and activate your Bluetooth adapters if needed.

 

Image:bs2.jpg

 

  • Then hit the 1+2 buttons on your Wiimote and click the center orange circle. It will take a few seconds and then find it.
  • Note: Make sure that the 4 LEDs on the bottom of the Wiimote are blinking during this whole process. Since the Wiimotes only stay on discover mode for several seconds, you can either hold down the 1+2 buttons the whole time or press them every few seconds.

 

  • If BlueSoleil does not detect your Wiimote, Unplug your bluetooth device and plug it back in. Then press the center orange circle and try again.

 


Image:bs3.jpg

 

  • Right click the Wiimote (NINTENDO-RVT-CNT-01) that shows up and click Refresh Services.
  • Should this not work, press 1+2 on the Wiimote and simply click on the Wiimote's icon in BlueSoleil

 


Image:bs4.jpg

 

  • Click the Bluetooth HID button that shows up at the top and you are done! Now you can use your Wiimote with programs such as GlovePIE and WiinRemote.

 


Image:bs5.jpg

 

Alternative Solution

 

This is with bluesoleil installed, and this is how you can make your wiimote work without opening or launching bluesoleil! Make sure Bluesoleil is closed before doing this.

1.) Go to your computer's control panel, and open the bluetooth device cp..(see icon)

2.) A dialogue will come up, click on "add device" button. (see image)

3.) Click the checkbox as seen on this image.

4.) Click next, and hold your Wiimote's 1 & 2 buttons together... or better, open up the back of your wiimote and press the sync button and hold it..and the device will appear as here.

5.) Select the new device and click next, DONT LET go of the 1 & 2 buttons or the sync buttons yet! Click the "no passcode" selection and press next..while NOT letting go of the buttons. If you're confused, look at this image.

6.) Your computer will now add the device accordingly, do not let go of the buttons until everything is set up.. no, you dont let go of it until you are back in the window where it says "add devices". If you successfully performed this, your Wiimote will register as "connected" and you are able to use it with GlovePie.

Note: If you are unable to use it, even though the control panel says your device is connected - make sure that the "bluetooth fix" is selected in glovepie.


이 글은 스프링노트에서 작성되었습니다.

 간단히 시작했던 작업이 어느새 필터 드라이버를 동적 로딩하는 단계까지 발전했습니다. ㅜ_ㅜ)/~ 이게 어찌된 영문인가 모르겠습니다. ^^;;;;

 기존의 드라이버가 DDK의 소스를 기반으로 만들어졌는데, 정적으로 로딩되서 실행되는 방식이었습니다. 그런데 갑자기 동적 로딩으로 할 수 있게 해달라는 요청이 있어서 소스를 손보기 시작했습니다. 참고로 동적 로딩과 정적 로딩은 아래와 같은 차이가 있습니다. ^^

  • 정적 로딩 : 윈도우 레지스트리에 등록하여 윈도우 시작 시에 자동으로 로드되는 방식
  • 동적 로딩 : 사용자가 요청하면 로딩하는 방식, 일반적으로 시스템 초기화가 완료된 이후에 로딩됨

 처음에는 간단히 동적 로드만 되면 되겠거니 생각했는데, 이게 일이 점점 많아지는 겁니다. ㅜ_ㅜ 키를 입력하게 하는 주요 루틴을 다른 쪽으로 옮겨야 하더군요. 이때부터 작업 로드가 심하게 걸리기 시작했습니다. 잠도 못자고 분석하고 테스트하고... 후덜덜덜...

 정적 로딩하는 버전은 PNP 메시지를 받아서 드라이버가 등록될 때 상위 Driver의 Callback 함수를 가지고 있다가 그걸 강제로 호출해서 값을 넣도록 하는 방식이었는데, 동적 로딩할 때는 PNP 메시지를 받지 못한 상태로 로딩되기 때문에 MJ_READ 에서 이를 처리하도록 해야했습니다. 삽질 끝에 알았습니다. 이런... ㅜ_ㅜ 더불어 IRP를 Cancel해야 다시 읽는 다는 것두요. ^^;;;

 노트북이 없었더라면 작업 시간이 두배 정도 더 걸릴뻔 했습니다. 어휴... 끔찍하네요. ^^;;;;
 방금 테스트를 해봤는데, 정상적으로 동작하는 것 같습니다.
 신나는 주말입니다. ^^)/~

+ Recent posts