본문 바로가기
Study/리버싱

Stub Code

by 꼬부기가우는소리 2016. 6. 8.
728x90


참고 도서 : [리버싱 핵심원리 : 악성 코드 분석가의 리버싱 이야기]

저자 : 이승원

출판사 : 인사이트


침고 사이트 : 

[위키백과] 메소드 스텁

[SecurityFactory] [개념 이해] Stub 코드

[SecurityFactory] [PE File] Compiler에 따른 실행파일 분석 방법


 

OllyDbg를 통해 디버깅을 하다보면 Stub Code가 섞여 있는 것을 알 수 있다. Visual C++, Delphi 등의 개발툴로 제작된 실행 파일들은 대개 이와 같은 형식으로 이루어져 있다. 따라서 이런 Stub Code를 눈에 잘 익혀 두면 항후 디버깅할 때 이런 부분은 빨리 건너뛸 수 있다. 또한 Stub Code는 개발도구에 따라 달라지며, 각개발도구끼리도 버전에 따라 달라진다. 따라서 각종 개발도구로 생성된 파일을 많이 접해보는 것이 좋다.


반면, 어셈블리 언어로 작성하면 어셈 코드가 곧 디스어셈 코드가 된다. 군더더기 없는 직관적인 코드 (EP에 main 함수가 바로 나타난다)가 나타난다.



Method Stub

소프트웨어 개발에서 메소드 스텁 (method stub) 혹은 간단히 스텁은 다른 프로그래밍 기능을 대리하는 코드이다. 스텁은 기존 코드 (예를 들어 원격 머신의 프로시저)를 흉내내거나 아직 개발되지 않은 코드를 임시로 대치하는 역할을 수행한다. 따라서 스텁은 일반 소프트웨어 개발과 테스팅을 포함하여 특히 이식과 분산 컴퓨팅에 유용하다.



Stub Code

컴파일러가 프로그램을 만들 때 집어넣는 코드이다. 악성 코드 분석을 빠르게 잘 분석하기 위해서는 Stub Code를 보는 법이 중요하다.


Stub Code는 실행 정보를 가져오고 Image Base Address 값을 구하는 등, 프로그램 실행에 필요한 정보를 얻어오는 코드로 구성되어 있다. 때문에 Stub Code는 넘기고 Main 함수 코드를 찾을 줄 알아야 한다.




728x90

'Study > 리버싱' 카테고리의 다른 글

Register  (1) 2016.06.08
Endianness  (0) 2016.06.08
OllyDbg (1)  (0) 2016.06.05
Assembler  (0) 2016.06.05
Debugger  (0) 2016.06.05

댓글