[Anti-Virus] 검사 속도

SMONGS·2024년 4월 3일

백신

목록 보기
2/4

검사 속도가 느려진 이유 파악

기존에 파일을 읽기 위해

fp = open(fname, 'rb') # 바이너리 모드로 읽기
buf = fp.read()
fp.close()

이러한 방식으로 진행했다.

여기서 속도가 느려진 원인

  • 파일의 open()을 최대한 자제
  • read() 사용을 피해야 함 ( 파일의 전체 내용을 읽기 때문 )
  • 악성코드 DB와의 비교 횟수는 최대한 줄여야 함

파일 크기 활용

바이러스 파일은 MD5 해시를 이용해 악성코드를 검사하고 있다.
1Byte만 크기가 달라도 MD5 해시 값은 달라지기에 악성 코드 파일의 크기가 악성코드 DB에 등록된 것과 일치하는 것이 없다면 굳이 악성코드를 검사할 필요가 없다.

파일의 크기를 구하는 함수 : os.path.getsize

이렇게 하면 백신의 검사 속도에 민감한 open 함수와 read 함수가 자주 실행 되지 않으므로 백신이 느려지는 것을 막을 수 있다.

정리

다양한 악성코드를 진단하기 위해 악성코드 패턴과 비교를 빈번하게 하면 백신의 검사 속도는 느려진다.
따라서 최소한의 비교를 할 수 있도록 노력해야 한다.

이번에 해본 방식으로는 MD5 해시를 악성코드 패턴으로 사용하기 때문에 악성코드 파일 크기를 패턴으로 추가했다. 검사 대상 파일 크기를 미리 악성코드 파일 크기와 비교만 해도 검사 속도는 빨라진다.

profile
반갑습니당~😄

0개의 댓글