니시노미야(하루히) 성지순례 & 고베 유람선과 야경보긔
스즈미야 하루히의 소실 보긔 & 나라여행
켄신이 시시오랑 싸우던 교토로 가자
하루히의 팬으로써 이제껏 성지순례를 하지 못했다는게 부끄러웠으나
이제 성지순례 & 극장판까지 보고온지라 뿌듯함요~!!!
돼지쐉뇬들아 부럽긔? ^-')b
모션포트레이트
액션스크립트 3.0에서 flash.geom 네임스페이스가 추가되었다.
(http://help.adobe.com/ko_KR/AS3LCR/Flash_10.0/flash/geom/package-detail.html)
아, 정말 플래시 너무하는구나. 이것으로 본격 3D 개발툴이 되었다. GPU까지 직접 쓸수 있게 되면... 우~~ 놀라워라~~!
현재로는 소프트웨어 렌더러라고 생각되지만 아뭏든 플래시의 행보는 무섭다.
비단 플래시 뿐만 아니라 포토샵 CS4 역시 Dimension이 번들되면서 GPU 지원까지 하고 있는데 플래시도 조만간 GPU를 적극 활용할 것 같다.
WPF도 Direct3D를 불러쓰고있지만 WPF가 보여주는 아웃풋은 플래시의 그것과는 자뭇 달라서 실망감이 컸던게 사실이었다. 물론 가장 필요한 킬러 타이틀이 없어서 그렇기도 하지만, 현재로 보기에 WPF는 처량해보이는게 사실이다. 차라리 Silverlight에게 희망을 걸어보고 싶지만... 수많은 디자이너들이 액션스크립트에서 C#으로 넘어가는 것도 결코 쉽지 않을 것이라 HD 스트리밍을 제외하면 플래시가 앞으로도 우위를 지킬 것 같다.
...또 말이 꽤나 빗나갔군. 모션 포트레이트, 다시 한번 더 봅니다.
우리 단장님.
소니(Sony-Kihara Research Center)에서 개발한 모션 포트레이트(motion portrait)는 이제 꽤나 알려진 기술이 되었다.
또다른 데모들은 모션 포트레이트 사의 홈페이지에서도 볼수 있다.
http://www.motionportrait.com/about/demo_others_01.html
하지만 실제 게임에서 적용된 것은 반다이-남코의 "스즈미야 하루히의 약속"과 "토라도라 P"일 것이다.
(홈페이지를 보면 실제 모션 포트레이트는 모션 포트레이트 사에서 가져온 기술이라고 적혀있다.)
SWF로 약간의 데모가 공개되어 있어서, 염치불구하고 이곳으로 모셔보았다.
닥치고 우리 단장님 찬양하시죠.
숏다리임에도 모에가 느껴지는 타이가
본론으로 돌아가봅시다.
함수가 가장 먼저 눈에 뜁니다.
CreateToolhelp32Snapshot()은 지정한 프로세스들이 사용하고 있는 힙(heap)과 모듈, 그리고 쓰레드의 현재 모습을 얻어오는 API 라고 MSDN께서 말씀해 주십니다. ^^ (http://msdn.microsoft.com/en-us/library/ms682489(VS.85).aspx)
프로세스 상태를 구하는 것은 후킹과 리버스 엔지니어링의 시작!
이를 통해 나가토는 후킹을 이용해 자신들의 PC에 설치된 (컴연을 검색하는 루틴이 빠진)게임을 수정할려고 하는 것이라고 유추할수 있습니다.
(http://msdn.microsoft.com/en-us/library/ms684320(VS.85).aspx)
OpenProcess() 함수가 반겨주네요. OpenProcess()는
아마도 현재 자신들의 게임에 무언가 작업을 걸려고 준비 중인가 봅니다.
짤방에는 나오진 않지만 그전에 살짝
(http://msdn.microsoft.com/en-us/library/ms684834(VS.85).aspx)
이란게 지나가는데 프로세스 스냅샵으로 얻은 현재 프로세스의 핸들을 구해 OpenProcess()로 강제로 열려는가 봅니다.
또한 코드를 아무리 봐도 socket이나 pipe 같은 네트워크 함수는 찾을 수 없었습니다.
순수히 로컬의 프로세스를 변형시켜 TCP 패킷을 짜맞추려는가 봅니다.
이것은 전형적인 프로세스 변형을 통한 온라인 게임 공격방식!! 게임의 TCP 패킷 프로토콜을 몰라도 변형과 서버 공격이 가능하다는 장점이 있고 여전히 서버 개발자를 괴롭히는 악질 해킹기법입니다.
이제까지 만든 함수는 결국 GetProcessList() 라는 녀석이군요.
함수 이름 참 민망합니다.
프로세스 리스트를 보여줌과 동시에 프로그램 변형을 함께 시도하는군요.
어이, 나가토~ 함수를 둘로 쪼게시게.
나라면,
으로 할 것이네.
그런데 여기서 주목해야 할 것은 MessageBox()가 MB_YESNO 가 아니라 MB_OK란 사실입니다.
리턴값도 체크하지 않아요.
결국 이 프로그램은 쿈의 의사와 관계없이 무조건 실행시켜버리겠다는 나가토의 무서운 의지가 담겨져 있습니다.
ESC를 누르건, Enter를 누르건, 클릭질을 하던 무조건 프로그램은 실행됩니다.
멈출 방법은 오직 작업관리자에서 프로세스 강제로 끝내는 수밖에 없습니다.
점심시간에 SOS단 홈페이지(http://www.haruhi.tv/) 를 뚝딱 만든 쿈이지만,
역시 바이너리 프로그래밍은 전혀 알지 못하는 프맹이란 사실이 만천하에 드러났습니다.
단장님과 그 추종자들은 기분이 좋아 덩실덩실 춤을 추십니다. 응?
안돼, 나가토... 미래를 위해 프밍 따윈 잊고 너도 수능 목표를 공대말고 의약대 & 사법고시를 목표로... .
거봐, 프로세스 인젝션을 하던 뭘 하던 앞에 나설수 있는건 개발자가 아니라니까! 흐흐흑
아뭏든 사수좌의 날을 재분석 함으로써 우리는 다음과 같은 사실을 알수 있었습니다.
그리고 추가로 하루히 위키(http://wiki.sos-dan.com/wiki/The_Day_of_Sagittarius)에서 다음과 같은 사실을 알 수 있었습니다.
1) VC++ 이 아닌 볼랜드 C (Borland C)였다는군요.
2) 소스코드를 분석한 덕후가 일본에 있었습니다!!! 아마 블루레이였기에 소스 분석이 더 쉽게 가능했을리라 생각됩니다.
(http://blog.proj.jp/ituki/data/2006/20060615.SimInject.org.cc)
저도 프로세스 인젝션 소스 분석과 공부를 위해서
어쩔수 없이 하루히 블루레이를 사야겠습니다.
아 그리고 절대로 밝히고 싶은데,