그림 01. ZAV_InducA 실행화면 #1
그림 01. ZAV_InducA 실행화면 #2
대략 2년 전이군요...
델파이 라이브러리를 감염시키는 바이러스(Win32/Induc.A)에 대해서 포스팅을 한 적이 있습니다.
2009/08/23 - [Security/Virus / Malcode] - 델파이 라이브러리 감염 바이러스 Win32.induc.a
그 당시 연습삼아서 치료용 백신을 만들었는데~
부끄럽지만(*-_-*) 정보 공유 차원에서 살포시 공개를 해봅니다~~
그 바이러스 자체가 워낙에 특별한게(?) 없던 탓에... 백신 역시 특별한 것은 없습니다.
디스크의 파일을 하나씩 하나씩 스캔하면서~~
바이러스 코드가 있는지 확인을 하고, 있는 경우는 '치료대상' 으로 추가... 없으면 패스...
'치료대상' 파일에 대해서는 바이러스 코드를 제거하고, 바이러스 코드를 호출하는 명령어를 무력화...
뭐... 요런 동작입니다. ( 심플하게... 기본 원리 구현에 충실한~? )
악성코드/바이러스를 어떻게 감지하는지...? 어떻게 치료하는지...?
요런 질문에 아주~~~~ 조금이나마 도움이 될까 싶어 ㅋ 소스도 공개를 해봅니다.
( 사실 상용화된 백신 제품의 경우는 더욱 고난도의 검사/치료 방법이 사용되는거죠... )
지극히 개인적인 취향으로 C++ Builder 로 작업을 했기에~ Visual C++ 에서는 컴파일이 안됩니다.ㅋ
컴파일은 안된다고 하더라도~ 대략 코드를 보면 원리는 알 수 있을테니깐요~ : )
---------------------------------------------------------------------------
[ 실행파일 ]
[ 소스코드 ]
---------------------------------------------------------------------------
ps.. 좀 더 깊숙하고... 복잡한 소스를 원하신다면~~ ClamAV 소스를 추천해드립니다. ㅋㅋ
'My Portfolio' 카테고리의 다른 글
[Python] pefile-1.2.10-139 ( for Python3 ) (2) | 2014.02.01 |
---|---|
[PLUGIN] Attach Helper v0.1 (OllyDbg Plugin) (9) | 2011.12.20 |
[APP] ZAV_InducA (Win32/Induc.A 전용 백신) 소스 (18) | 2011.08.03 |
[APP] GInjector (Gundam Injector) (2) | 2011.07.31 |
[APP] DLL Injector ~ ! (4) | 2009.02.25 |
C++로 GUI구현 가능해요?
네~ 뭐...ㅎ 가능합니다.
Visual C++ 이라면 MFC 를 이용하거나~~
C++ Builder 라면 VCL 을 이용하거나 하면~~
조금 더 손쉽게 UI 구현이 가능합니다.
오오오,,,혹시 혼자서 직접 만드신 건가요?
네... ^^;;;;
HANDLE hFile = CreateFile(ustrFile.t_str(), FILE_ALL_ACCESS, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
이부분에서 오류가 2개가 나오는데 어떻게 해야 하나요 ㅠㅠㅠㅠ
c++ builder xe6 으로 돌린 결과 입니다.. 해결좀 해주세요 ㅠㅠ
해당 부분에서 오류가 날만한 건 CreateFile 의 첫번째 인자 정도일 것 같은데요...
프로젝트에서 유니코드를 기본으로 사용하는 경우는 ustrFile.c_str() 를 해주셔야 될겁니다.. ^^;;;
실제로 제 소스코드에서는...
HANDLE hFile = CreateFileW(ustrFile.c_str(), FILE_GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
이런식으로 W 함수를 명시적으로 사용했고~ c_str() 을 사용했습니다.
정말 감사합니다. ㅠㅠㅠㅠ
바꿧더니
;
OutputDebugString(DbgMsg.t_str());
NameThreadForDebugging("ScanThread"
이거 두 부분에서 오류가 나요 ㅠㅠ
저기 이모티콘은 괄호에요 ;; 이상하게 나오네요
음... 어떤 에러메시지가 나오는건가요..?
( 컴파일시 발생하는 오류는 에러 메시지를 보면 대부분 해결이 가능합니다. )
좀있다가 집에 가서 알려드릴게요. 그런데 그 소스 파일을 보내주시면 안되나요? ㅎㅎ;;
좀 무리인가요?
소스파일은 이 포스팅 본문에 첨부되어 있습니다...
"ZAV_InducA_src.zip" 으로...;;;
이프로그램 사고싶네요
음..? 연습용으로 만든거라 별거 없습니다...^^;;;;
Win32/Induc.A 전용으로 만들어진거라 다른 바이러스는 감지못하구요..
흔히 알려진 다른 제품과는 비교할 수 없을 정도로 부족합니다..^^;;;
안드로이드 백신을 개발하고 있는데요.
위에 올린 소스는.. 약간 HTML 같아서... 소스를 봐도 어떻게 했는지 잘 짐작이 안가는데요..
악성코드를 어떻게 감지하죠?.. 저 같은 경우에는 악성코드명을 DB에 저장해서 지정된 경로에 그 악성코드명이 검출되면 악성코드+1 이런식으로 하려고했거든요.. 감지 방법에 대해서 자세히 설명좀 부탁드릴게요.ㅜㅜㅜ
그리고 치료방법은 그냥 생각조차 못하겠네요..하하하 ㅋㅋㅋㅋ
개발 도구는 DB , 안드로이드 두개만으로도 가능한가요?.. 웹서버용 PHP, JSP같은 것도 필요한가요..?
악성코드 감지 방법은 선택하기 나름입니다.
언급하신 것처럼 '특정위치에 특정이름의 파일' 이라는
외형적인 요소를 감지 조건으로 사용할 수도 있고...
악성코드 파일을 직접 분석해서 '파일 내부의 특정 패턴' 을
감지 조건으로 사용할 수도 있습니다.
이 포스팅에 올려둔 백신에서 사용한 방법은 두번째 방법이구요..
개발도구에 대한 질문은...
어떤 부분을 궁금해하시는 건지 제대로 파악을 못해서...
답변드리기가 어렵네요.. ^^;;
악성코드 분석방법이 궁금한겁니다.. 악성코드의 이름을 어떻게알죠?... 2진수아닌가요?
악성코드 분석은...
디스어셈블러, 디버거 등의 도구로 코드 분석을 하거나..
직접 실행시켜서 실제 행위등을 분석하구요..
악성코드 이름의 경우...
다른 백신 프로그램에서 진단하는 경우엔 그 이름을 사용하기도 하고...
새로 발견된 악성코드의 경우 업체마다 정해둔 명명법에 따라..
이름을 정하기도 합니다.
( 명명법에 대한건 인터넷 검색을 하시면 확인할 수 있습니다. )