이 문서의 내용은 출처가 분명하지 않습니다. 이 문서를 편집하여, 신뢰할 수 있는 출처를 표기해 주세요. 검증되지 않은 내용은 삭제될 수 있습니다. 내용에 대한 의견은 토론 문서에서 나누어 주세요. (2013년 1월)
악성 소프트웨어,유해한 소프트웨어(惡性-) 또는 맬웨어(malware)는 컴퓨터에 악영향을 끼칠 수 있는 모든 소프트웨어의 총칭이다. 예전에는 단순히 컴퓨터 바이러스만이 활동하였으나, 1990년대 말 들어서 감염 방법과 증상들이 다양해지면서 자세히 분류를 나누기 시작했다. 과거에는 디스크 복제 등 저장매체를 따라 전파되었으나 네트워크가 발달하면서 이메일이나 웹으로 감염되는 경우가 훨씬 많아졌다.
악성코드의 분석 방법은 크게 코드 정적 분석 (Static code analysis)과 코드 동적 분석 (Dynamic code analysis) 두 종류로 나눌 수 있다. 코드 정적 분석의 경우는 프로그램을 디스어셈블하는 디버깅프로그램 들을 이용하는 방법으로 Immunity Debugger, 올리디버거, IDA 프로, GDB 등의 프로그램을 사용한다. 위의 프로그램들을 사용하여 디스어셈블된 프로그램의 코드를 실행시키지 않고 분석하는 기법이다. 코드 동적 분석 (Dynamic code analysis)의 경우는 런타임 디버깅기법을 이용하여 통제된 상황 하에서 악성코드를 직접 실행시키며 이후에 발생하는 변화들을 분석하는 형태로 이루어진다. 런타임 디버거로는 앞서 언급한 Immunity Debugger, 올리 디버거 등이 있으며 프로그램의 프로세스에 붙어서 제어하는 역할을 한다. 통제된 상황에서 변화를 살펴보는 툴로는 파일의 입출력을 감시하는 Filemon, 레지스트리 정보 변화를 감시하는 Regmon, TCP/UDP 통신에 대한 입출력을 감시하는 TDImon, 실행 중인 프로세스의 DLL 정보 등을 감시하는 프로세스 익스플로러 등이 있다.