바이너리? 텍스트? 일반적으로 바이너리와 텍스트는 ASCII 값으로 구분할 수 있다. 바이너리의 경우 0x00 ~ 0xFF 값을 모두 말하는 반면 텍스트는 0x00 ~ 0x7F의 값을 말한다. 쉽게 말하면, 메모장으로 파일을 열었을 때 사람이 대부분 읽을 수 있고 이해할 수 있다면 텍스트이고, 그렇지 않으면 파일을 바이너리로 정의하면 된다. 악성코드 ...
검사 속도가 느려진 이유 파악 기존에 파일을 읽기 위해 이러한 방식으로 진행했다. 여기서 속도가 느려진 원인 파일의 open()을 최대한 자제 read() 사용을 피해야 함 ( 파일의 전체 내용을 읽기 때문 ) 악성코드 DB와의 비교 횟수는 최대한 줄여야 함 파일 크기 활용 바이러스 파일은 MD5 해시를 이용해 악성코드를 검사하고 있다. 1Byte만 ...
악성코드 패턴 분리 악성코드 패턴 로딩 virus.kmd 라는 DB파일을 암호화해서 만들어준 파일이다. 그 파일을 읽어서 검사하는 파일과 비교할 수 있도록 VirusDB 리스트에 추가해 준다. 악성코드 패턴 파일 암호화 zlib.compress() 함수로 압축된 데이터는 바이트 배열이므로 각 요소는 정수형이 된다. 그렇기에 이 정수 값을 XOR 연산...
백신 프로그램 배포 Pyinstaller 파이썬으로 작성된 소스코드를 윈도우 실행 파일인 exe로 변환하는 도구로 Pyinstaller가 있다. Pyinstaller는 파이썬으로 작성한 소스코드를 하나의 실행 파일로 만들어준다. 설치 Github 링크 해당 링크에서 확인해 보면 된다. 필자는 vscode에서 바로 사용하기 위해 하단의 명령어를 사...