본문 바로가기

악성코드 분석

(2)
악성코드 분석을 위한 함수 호출 규약 함수를 호출하기 위한 과정인 함수 프롤로그와 함수를 호출 후 원래주소로 돌아가기 위한 함수 에필로그가 있다 함수 호출규약은 어셈블리어에서 함수를 호출하는 방법이며 약속이다. 함수에는 함수 stack 영역이 따로 존재한다. 함수 프롤로그 함수를 호출하기 위해 stack에 사전 작업이 필요하다.이걸 함수 프롤로그라고 부른다 새로운 함수가 사용할 stack공간을 할당해 줘야한다. 기존에 사용하던 stack의 ebp 주소를 push로 스택 위에 넣고 ebp에는 현재 esp 주소로 변경한다. push ebp mov ebp,esp 호출 함수 스택 SFP(new ebp) ret(old ebp) 2 1 함수 에필로그 함수를 실행 한 후 함수가 호출되기 전 주소로 돌아가기 위한 과정이다. 이과정에서 esp의 주소를 eb..
악성코드 분석을 위한 어셈블리어(1) 악성코드 분석을 위해 어셈블리어를 많이 알수록 좋지만 처음 배우는 입장에서 힘들고 지치기 쉽다. 그래서 악성코드 분석을 위해 가장 중요하고 기초적인 내용만 다룰려고 한다. 악성코드를 분석하기 전에 어셈블리어가 무엇인지, 명령어,스택, 함수 호출규약을 최소한 알아야한다. 1. 어셈블리어란? 어셈블리어는 기계어와 1대1 대응이 되는 프로그래밍 언어이다. 사람이 알아보기 힘들고 사람의 언어와 매우 달라 저급 프로그래밍 언어라고도 한다. 고급언어인 c언어로 된 파일을 컴파일 하면 어셈블리어가 되고 어셈블리어는 기계어로 번역되어 동작한다. 2.x86 레지스터 여기서 모든 레지스터를 다루지는 않을것이다. 일단 이것만큰은 반드시 알아야한다고 생각되는것만 넣었다. eax,ebx,ecx,edx : 범용 레지스터로 32b..