본문 바로가기

CS/악성코드분석

(3)
[ 윈도우 악성코드를 위한 기초 지식 ] 2 . 윈도우 프로그래밍 소스 코드 분석 윈도우 프로그래밍 소스 코드 분석 1.헤더 파일 #include #include //standard input, output = 입출력에 관한 헤더파일 1행 windows.h에는 (1) 함수 원형 = 수 많은 윈도우 API들이 선언되어 있다. (2) 기본적인 데이터 타입이 선언되어 있다. (HWMD, MSG, LPARAM 등이 있다) (3) 매크로 상수 등을 정의되어 있다. (4) 윈도우 프로그래밍에 필요한 보조 헤더 파일을 포함한다. ex) windows.h안에 winmem.h가 있어서 메모리 관련 된 헤더 파일이 안에 있다. 윈도우에서는 하나의 헤더 파일에 모든 API 함수들의 원형과 사용하는 상수들이 정의 특별한 경우에는 해당하는 헤더 파일을 포함(외부의 헤더파일 ) *표기법 = 헝가리언 표기법 2..
[ 윈도우 악성코드 분석을 위한 기초 지식 ] 1. 윈도우의 이해 먼저 간단하게 윈도우의 역사를 살펴보고 윈도우에 대한 특징을 살펴볼 것이다. [ 윈도우의 역사 ] 윈도우 1.0 • MS 1983년 11월 개발 시작 • 1985년 11월에 첫 버전 완성 (2년간 개발) • 멀티테스킹 및 GUI 지원 이전에 있던 MS DOS는 싱글 테스킹이었다. 윈도우 2.0 • 1987년 1.1 버전이 나온 뒤 같은 해 11월에 발표 • 윈도우 Overlapped 지원 (기존은 tiled) Overlapped = 창을 늘렸다가 줄였다가 할 수 있다. • 진정한 멀티테스킹 구현 (대신 많이 느려짐) 윈도우 3.0 • 1990년 3월 발표 (진정한 윈도우로 알려진 버전) • 매킨토시(화려한 GUI)를 많이 참조(거의 유사) 윈도우 3.1 • 1992년에 업데이트 (윈도우의 실질적인 첫 버..
[어셈블리어] 어셈블리어_범용 레지스터 어셈블리 언어 배우는 이유 예전에는 악성코드들이 어셈블리 언어로 작성되었다. 지금은 어셈블리어로 작성되지 않는다. 하지만 어셈블리 언어를 배우는 이유는 악성코드의 동작원리를 명확하게 알 수 있기 때문이다. 예를 들어, 씨언어로 바이러스를 만든다고 하자, 정상적인 파일에 바이러스를 붙인다. 하지만 그냥 둔다면 정상적인 프로그램만 돌고 끝난다. 그렇기 때문에 흐름을 바꿔야한다. os는 바이러스를 먼저 실행하게 해야 한다 하지만 씨언어는 이러한 흐름을 바꿀 수 없다. 어셈블리 언어는 이것이 가능하다 씨언어로는 분석이 어렵다. ⇒ 바이러스들을 분석하기 위한 기초 작업 바이러스는 다양한 언어(파이썬, 오랑지 등)으로 만들었다. 이에 기반이 되는 것이 어셈블리 언어이다. 진수 변환 어셈블리 언어 → 진수 변환 잘해..