티스토리 툴바


2012/05/16 10:50

chromium embedded


http://code.google.com/p/chromiumembedded/


위 사이트에 가서 다운 받으면 chromium embedded 버전 을 받아서 앱에 

chrome browser 를 탑재 할수가 있다 

zip 이나 xml parser 등 탑재 되어있는것도 많고 성능도 좋은거 같다.


맘에 걸리는 단점 한가지는 ... 같이 배포해야 하는 libcef.dll 파일이 19mb 정도 된다..

용량이 좀 마이 크다 ..ㅋ 

배포 파일 용량이 좀 많이 커지는 단점은 있지만 그에 비해서 얻는 좋은점도 많다 ... 


우선 추후에 쓸일이 많을거같으니 ... 스터디할 소스도 있겠다 ... 이참에 써봐야겠다.

저작자 표시

'Developer > C++' 카테고리의 다른 글

chromiumembedded  (0) 2012/05/16
NPAPI, NPRuntime  (0) 2012/04/01
mutable  (0) 2011/05/17
가변인자 (va_list , va_start , va_end)  (0) 2011/01/11
[C] URLencode/ URLdecode  (0) 2010/12/19
내장 매크로  (0) 2010/12/03
Posted by 희남

이 프로그램을 한번 실행시켜 보세요.
제가 컴파일한 것으로, 자기자신을 지우는 것 말고는 아무것도 안합니다. ㅎㅎ 리버싱하시고 따지셔도 좋습니다^^


실행하면 자기자신을 삭제합니다.


이 기법은 많이 알려져 있는 기법으로, batch파일을 써서 exe를 삭제하게 합니다.

exe실행
exe를 삭제하는 batch 제작
batch 실행 + 무한루프 (아직은 exe가 실행중이라 삭제 거부됨)
    프로세스 종료-> exe삭제 허가 
    exe 삭제됨.
    batch 삭제됨.
>끗<

흔히 dropper가 쓰는 기법입니다.
malware를 시스템에 설치하고 자기자신은 흔적을 없애고 사라지죠.

소스입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <windows.h>
#include <stdio.h>

 
int main( int argc, char **argv )
{
	FILE *fp;
 
	fp = fopen( "deleteme.bat", "wt" );
 
 
	fprintf( fp, "\
:AAA\ndel \"%s\"\n\
IF exist \"%s\" GOTO AAA\n\
:BBB\n\
del deleteme.bat\n\
IF exist deleteme.bat GOTO BBB\n", argv[0], argv[0] );
 
	fclose( fp );
	ShellExecute( NULL, "open", "deleteme.bat", NULL, NULL, SW_HIDE );
 
	return 0;
 
}




단순히 batch 파일 하나 만들어서 실행(ShellExecute)하고 종료합니다.
참고할점은 system함수 로는 안된다는 겁니다. system함수는 셸의 종료를 기다리니까요.
batch 파일이 도는동안 process가 종료되어야 하니까 ShellExecute로 해야합니다.

batch script를 보시면, 뭘하는지 잘 보일겁니다.
파일이 없어질때까지 루프를 돌면서 exe를 지우려고 하죠.
끝나고 batch파일 자신도 지우고요.

아 물론 순서는 상관없습니다.
batch는 메모리에 로드돼서 bat파일은 삭제가 되거든요.



win32 콘솔 프로젝트로 만든지라 콘솔창이 잠깐 보입니다.
win32 프로젝트로 재컴파일하면 아무것도 안보이고 파일만 삭제되겠죠.^^


관련 CodeProject 입니다.

http://www.codeproject.com/KB/files/cpselfdestruct2.aspx


저작자 표시
Posted by 희남

윈도우에서만 가능한 편법입니다..

업데이트가 필요할 경우에는 자기 자신을 임의의 파일명으로 변경합니다. 또는 다운로드 하는 파일의 이름을 임의의 파일명으로 변경해서 다운로드합니다.

다운로드가 완료되면 kim05005님이 말씀하신대로 새로운 실행파일에게 자신의 프로세스 아이디를 넘겨주고 실행을 합니다.

실행이 된 새롭게 다운로드 된 프로그램은 넘겨진 프로세스 아이디를 가지고 WaitForSingleObject를 이용하여 프로세스가 종료되기를 기다립니다.

종료가 확인되면 구 버전 실행파일을 삭제하고 자신의 이름을 원래 실행파일 이름으로 변경합니다.

그리고 고고싱..

이런게 가능한건 윈도우에서는 실행중인 바이너리를 삭제하는게 아니라면 이름변경은 허용이 되기 때문입니다.

저작자 표시
Posted by 희남
이전버튼 1 2 3 4 5 ... 83 이전버튼