Adobe AIR가 SQLite및 File 함수를 지원하지만 정작 파일 실행은 하지 못한다.
예제로 배우는 Flex3 책에는 AIRConnect라는 AIR와 MFC를 연동한 부분이 있지만, 그 프로그램은 같은 파일을 반복적으로 쓰고,
또 검사해야하야 하기때문에, 빠른 응답을 기대할 수 없어서 소켓을 이용하여 Win32 어플리케이션과 통신을 하는 방법을 이용했다.
서버가 Socket Accepct를 하는 부분은 다음과 같다.
Win32
while(true) {
//접속을 기다림
hClntSock = accept(hServSock,(SOCKADDR*)&clntAddr,&clntAddrSize);
if(hClntSock == INVALID_SOCKET) {
MessageBox(m_hWnd,"ACCEPT 에러.","에러",NULL);
}
memset(message,0,BUFSIZE);
// 클라이언트와 통신
while((strLen = recv(hClntSock,message,BUFSIZE,0)) != 0) {
int rs = (int)ShellExecute(NULL, "open", message,
NULL,NULL, SW_SHOW);
sprintf_s(retMsg, "%d", rs);
send(hClntSock,retMsg,3,0);
}
closesocket(hClntSock);
}
여기서는 AIR에서 파일명을 던지면, Win32어플리케이션에서 무조건 실행을 시키도록 했다.
전체 파일은 첨부파일을 참고면 된다.
Win32 어플리케이션 (여기서는 WTL이용) 에서 서버소켓을 생성하고 AIR에서 이제 이벤트가 발생할때마다 Win32어플리케이션으로 통지를 한다.
AIR
var socket:Socket = new flash.net.Socket();
socket.addEventListener(Event.CONNECT, function(event:Event) :void {
socket.writeMultiByte(temp.label,"euc-kr");
socket.flush();
});
socket.addEventListener(IOErrorEvent.IO_ERROR,
function(event:Event) : void {
mx.controls.Alert.show(event.toString());
socket.close();
});
socket.addEventListener(ProgressEvent.SOCKET_DATA,
function(event:ProgressEvent) : void {
var str:String = socket.readMultiByte(3, "euc-kr");
if(int(str) < 32) {
mx.controls.Alert.show("파일 실행 에러 입니다. 에러 : " + str);
}
socket.close();
});
socket.connect("127.0.0.1",8000);
AIR 에서는 소켓으로 로컬로 접속하여 메세지를 보내고 결과값을 받는다. 여기서는 ShellExecute의 리턴값을 받는다.
에러처리를 AIR에서 하기위해서 이다. ( ShellExecute가 32보다 작은값을 리턴하면 에러이다. )
readMultiByte 일반 MultiByte String을 읽어와서 UTF-8로 변경해서 리턴한다. 이함수는 읽어올 데이터의 길이를 정해주어야 하는데, 틀릴경우 익셉션이 발생하므로 미리 프로토콜을 지정하는 것이 좋다.
댓글을 달아 주세요
감사합니다..ㅜ 저도 이 트로이잔 gthook.sys가 계속뜨고 해서 server.exe가 remotestorage로 인해 자꾸 방해 했었군요...^^ V3도 잘 못잡군요..ㅠㅜ
2009.03.10 00:04 [ ADDR : EDIT/ DEL : REPLY ]도움이 되셨다니 다행입니다. ^^
2009.03.10 00:13 [ ADDR : EDIT/ DEL ]이놈 어떻게지우나여ㅠㅠ 자꾸 system32 - drivers 에 GTHOOK 생성해내던데 ㅠㅠ
2009.06.05 22:30 [ ADDR : EDIT/ DEL : REPLY ]어떻게지워욤 ㅠㅠㅠㅠ
windows 방안에 server.exe라는 파일이 있습니다.
2009.06.08 20:39 신고 [ ADDR : EDIT/ DEL ]그 파일을 지우고 gthook.sys를 지워보세요.
윈도우방안에 server.exe이런파일이있나여? 없던것같은대 ㅠㅠ 아 맨날 블루스크린떠서 돌아버리겟어요 ㅠㅠ
2009.08.04 18:03 [ ADDR : EDIT/ DEL : REPLY ]도와주세요
켁 정확한 증상을 제가 안봐서 모르겠네요 ㅜ.ㅜ
2009.08.07 15:42 신고 [ ADDR : EDIT/ DEL ]윈도우즈 방이나 시스템 방안에서 날짜순으로 정렬해서 최근에 생성된걸 지워보시구요
레지스트리 에디터에서 gthook.sys로 검색하셔서 다 지워보세요.
윈도우방안에 찾아봣더니PF파일로 server.exe가 잇더군요 이걸지우면되는건가요 ㅜ?
2009.08.11 09:50 [ ADDR : EDIT/ DEL : REPLY ]네 그걸 지우고 gthook.sys를 지우시면 됩니다. ^^
2009.08.11 13:27 신고 [ ADDR : EDIT/ DEL ]레지스트리에서도 gthook.sys를 검색해서 지우시면 되구요 ^^
이놈 진짜 개악질이더군요..; 이놈때문에 2틀동안 안전모드로 켜서 V3lite로 찾아서 지우고 했는데 계속생겨서 또 찾고지우고 하다가 얼마나 해댔는지; 나중에 v3로 검색하니까 아예 검색조차 안돼더군요.; 그래서 카스퍼스키를 한번 써봤는데 v3에서 안잡히던 바이러스 160몇개가 쫘르륵..역시 세계1위와 무료백신의 차이가;; 그리고 이놈은 그래도 리붓하니까 계속생기던데 직접 경로로 들어가서 잡으니까 잡히더군요; 얼마나 악질인지; 그리고 제경우는 system32방에 있었어요 근데 찾기 검색으로는 안잡히던데 숨어있어서 그런건지; 어쩄든 지금은 다 완치됐구요 ㅠㅠ 님의 정보와 카스퍼스키의힘 ㅎㅎ; 한가지 저처럼 초보자들은 위한 팁을 알았는데 부팅하고나서 1분정도 켜져있을때 바로 경로로 들어가서 gthook.sys 이놈을 빨리 지우면 리붓돼는일은 없더군요; 모체를 안잡아서 계속생겨나긴하지만 어쨌든 빠르게 지우고나서 카스퍼스키같은백신으로 잡으면 될것같네요.. 저같은 아픔을 겪으실분이 안생기길..ㄷㄷ
2009.09.13 20:59 [ ADDR : EDIT/ DEL : REPLY ]ㅠ.ㅠ 꿍스님 맨날 블루스크린떠서 V3로 치료해도 개속 생기더니 제가 카스퍼스키 체험판을 받아서 치료를햇는대욤
2009.09.24 19:57 [ ADDR : EDIT/ DEL : REPLY ]gthook.sys가 떳어요 그리고 server.exe도 떳는대 그냥 모두치료 눌르니까 '치료불가능한파일입니다'
이런거뜨고 그다음에 잘못봤지만 어떤파일이 개속 gthook를 생성해내고 있습니다<<이말이떳어요 ㅠ
그래서 맨날 컴퓨터 킨다음에 시스템32 들어가서 드라이버? 들어간다음에 gthook를 지우고 다음날 또지우고
반복했는대요 본거지를 안잡아서 그런지 맨날 생성해내 더군요;,. 근대 제가 본거지를 찾는방법을 모르겟어요
꿍스님말로는 server.exe를 지우고 gthook를 지우면 완치된다구 하셧잖아요 그런대 제가 검색을 해봣더니
server.exe가 없더라구요 윗분말대루 숨어있는거같은데 윈도우 방안에 있다고 하셧잖아요 윈도우 방안이 윈도우에있는 모든 파일,풀더인가요 아니면 그냥 윈도우풀더 안에있는건가요? 제가 윈도우폴더랑 시스템 폴더에서
S를 클릭 하니까 server.exe는 안보이구 다른것만보이던대 어떻개 찾는지 정확히 답변 해주시면 정말 감사하겠습니다.
카스퍼스키 3개월 체험판을받아서 치료를하면 server.exe GTHOOK.sys이놈 두마리 잡히는대 처음에는
2009.09.28 14:27 [ ADDR : EDIT/ DEL : REPLY ]치료안된다고 떳다가 개속 제부팅하구 치료하면 완치 됩니다 윗분 저도 처음엔 안됬는대 개속치료하니까 이제
완치 됬슴 ㅎ