본문 바로가기

C++12

화이트리스트 기반 프로세스 검사 프로그램도 만들긴 했는데요... 원래 스터디그룹 프로젝트의 목표였던 새로운 프로세스가 인식되면 멈춘 후 바이러스 검사해서 검사 결과에 따른 각각의 행동을 한다 라는 프로그램을 대충 완성하긴 했네요. 문제는 이 화이트리스트라는 걸 어떻게 해야할지.. 지금은 우선 실행중인 프로세스로 만들고, 검사할지 물어본 다음 프로세스들을 검사하게 했습니다. 원래는 윈도우 기본 프로그램을 제외하고 하나하나 검사해서 넣으려고 했지만 우선 윈도우 기본 경로로 인식하는 거랑 현재 개인용 API를 써서 파일 하나당 검사하는 시간이 너무 길어서 못 했습니다.. 저 두 개가 해결돼도 서비스 등록후 계속 돌아가게 하고 싶은데 생각처럼 될지, 사용자에게 물어보는 부분은 어떻게 구현할지가 걱정이네요..ㅋㅋ 2022. 6. 8.
스터디그룹 프로젝트 - 화이트리스트 기반 파일 검사 프로그램 개발 완료 후... 이름이 자꾸 바뀌고, 조금조금씩 올라오네요. 먼저 원래 스터디그룹을 할 때 이 프로젝트의 목표는 '집단지성을 이용한 화이트리스트 기반 안티 바이러스 프로그램' 이였습니다. 그런데 프로그래밍과 관련된 공부와 같이 진행하다보니 기간도 짧았고, 이제 막 배우는 사람들한테는 너무 어려워서 프로젝트 목표의 5%도 안 돼서 끝나버렸습니다(SHA256 검사조차 못 함). 그래서 완전 초기 단계에서 멈췄다가 사회복무요원 근무를 시작하면서 업무를 안 하는 시간에 다시 시작하게 되었고, 저 혼자 작업하게 되었습니다(..). 처음엔 기능을 완성하는데 목표를 잡았고 그 후에는 GUI까지 만드는 것으로 변경하였고, 그러다보니 생각보다 많이 어려워서 이것저것 바꾸다보니 이렇게 됐네요. 일단 원래 목표대로라면 프로세스 관.. 2022. 6. 2.
스터디그룹 프로젝트 - 화이트리스트 기반 안티 바이러스 프로그램 개발 근황 안티 바이러스 프로그램으로 게시글 쓰는 건 되게 오랜만이네요.. 그동안 단순 CLI로는 안 되겠다 싶어서 GUI도 만들고 있었습니다. 그 과정중에 JAVA로 만들어 JNI로 연결해보려고 하기도 했고, Python을 이용할까해서 ctypes도 해봤습니다. 그런데 JAVA는 GUI까지 만들고 Python은 C++과 연결까지는 해봤지만 둘 다 C++에서 구현한 함수들을 불러오는데 꽤 어려움이 있어서 다른 방법을 찾아보게 되었습니다.. 그러다 원래 Python에서 하려고 했던 QT가 C++에서도 지원하길래 해봤고 결과는 성공적이네요. QT 덕분에 GUI를 되게 손쉽게 만들고 함수로 복잡하게 구현했던 기능도 짧은 코드로 대체되었습니다. 다만 이벤트 처리 방식이 원하는 방식으로 진행되진 않아 출력하는 문자열을 바꾸.. 2022. 5. 18.
스터디그룹 프로젝트 - 화이트리스트 기반 안티 바이러스 프로그램 2차 완성 1. (요약)경로 입력 후 하위 폴더 검색 비활성화 후 나오는 결과 & 초기 실행 결과 insert-> D:\Develop\ICT\TEST search low? => 1.yes 2.no 2 . .. Dir ->D:\Develop\ICT\TEST\1 Dir ->D:\Develop\ICT\TEST\2 Dir ->D:\Develop\ICT\TEST\3 Dir ->D:\Develop\ICT\TEST\4 Dir ->D:\Develop\ICT\TEST\5 File->D:\Develop\ICT\TEST\6.txt 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969 Save SHA256 to WhiteList -------------------------.. 2022. 3. 15.
[C++] Memory Mapped File / 메모리 매핑 파일 void MMF(WCHAR* szPath) { HANDLE hFile = INVALID_HANDLE_VALUE; HANDLE hMap = INVALID_HANDLE_VALUE; LPVOID pBuf; hFile = CreateFile( szPath, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hFile == INVALID_HANDLE_VALUE) { printf("CreateFile Fail : %d\n\n", GetLastError()); return; } hMap = CreateFileMapping( hFile, NULL, PAGE_READWRITE, 0, 0, NULL ); if (h.. 2022. 3. 14.
스터디그룹 프로젝트 - 화이트리스트 안티 바이러스 프로그램 1차 완성 [사용한 언어] C++ MYSQL Python [구현된 기능] 1. 원하는 경로 입력시 해당 경로에 존재하는 파일 목록 열거 2. 각 파일에 대한 SHA256 값 계산 3. 파일의 경로, SHA256 값 DB에 저장 4. VirusTotal API를 사용하여 각 SHA256 값 검사 5. VirusTotal API에서 바이러스 검출 시 해당 파일의 SHA256 DB에서 삭제 및 파일 삭제 (3, 5번으로 인해 화이트리스트 DB가 만들어진다.) [부족한 점] 1. 개인 VirusTotal API를 사용해서 할당량 문제로 각 파일당 검사하는데 20초 소모 2. .db 파일은 SHA256 값 계산이 제대로 안 됨 3. 같은 파일이 여러 경로에 존재할 시 DB에서는 삭제되지만 실제 파일은 코드 오류로 인해 하나.. 2022. 3. 7.
[C++ & Java] 99병의 맥주 #include "stdio.h" void main() { printf("99 bottles of beer on the wall, 99 bottles of beer. Take one down and pass it around, 98 bottles of beer on the wall.\n"); for (int i = 98; i > 1; i--) { if (i == 2) { printf("2 bottles of beer on the wall, 2 bottles of beer. Take one down and pass it around, 1 bottle of beer on the wall.\n"); } else { printf("%d bottles of beer on the wall, %d bottles of.. 2022. 1. 21.
프로젝트 진행 근황(?) 프로젝트 코드를 지금은 두 개로 분리해서 진행하고 있습니다. 1. 모든 파일 확장자에 대한 올바른 sha256 값 구하기 2. 특정 프로세스에 대한 sha256 값 구하기 1번은 원래 썼던 코드가 텍스트 기반(txt, html, php, py 등) 파일만 제대로 나오고 그 나머지는 이상하게 나와서 다른 방법들도 더 알아보다 fopen을 사용하여 mp3, jpg과 같은 다른 파일에 대한 해시값 구하는 것도 성공했습니다. 다만 파일 열거하는 코드에서 wchar로 경로를 받아서 char를 사용하는 fopen에는 오류가 나네요.. 그리고 exe 파일은 기존 코드나 fopen 둘 다 정상적으로는 나오지 않아 일단 certutil을 사용해서 표기하는 정도만 구현했습니다(그마저도 해시값만 출력하는 건 실패). 2번 .. 2021. 10. 20.
오늘 코딩 진행된 내용들 1. Python에서 VirusTotal API를 사용하여 파일의 md5값 검사 2. C++ 프로젝트에 .py 파일 연동 3. sha256도 VirusTotal API를 사용하여 검사 1에서 파이썬 코드들이 python2거나 오류가 뜨는 부분들이 많아서 애를 조금 먹었네요.. 원래 계획한대로 db 파일에 있는 값들을 검사하고 싶었으나 안 되네요ㅠㅠ 2021. 9. 29.