페이로드 저장하기
악성코드가 악성 행위를 하기 위해선, 명령 코드인 페이로드가 필요하다
이 페이로드를 어디에 저장할 수 있는지 봐보자.
.data에 저장하기
.data: 초기화된 전역변수, 정적 변수를 저장하는 공간
.data는 read, write가 가능하므로, 암호화된 페이로드를 작성하기에 적합하다!
단, excute 권한은 없어서 여기서 바로 코드를 실행하면 DEP에 의해 죽는다...
페이로드를 전역/지역 변수로 둘 경우 저장할 수 있다!
#include <Windows.h>
#include <stdio.h>
// msfvenom calc shellcode
// msfvenom -p windows/x64/exec CMD=calc.exe -f c
// .data saved payload
unsigned char Data_RawData[] = {
<대충 msfvenom으로 생성한 페이로드>
};
int main() {
printf("[i] Data_RawData var : 0x%p \n", Data_RawData);
printf("[#] Press <Enter> To Quit ...");
system("pause");
return 0;
}
.rdata에 저장하기
.rdata: 읽기 전용인 데이터 (상수) 저장 공간
오로지 read 권한만 있다...
-> 여기서 읽어서 다른 곳에서 해독하거나, 실행하는 방식으로 사용하자
.data 섹션에 전역변수로 페이로드를 두어 저장했다면,
.rdata에 넣기 위해선 const 키워드를 통해 상수로 바꿔주면 된다!
#include <Windows.h>
#include <stdio.h>
// msfvenom calc shellcode
// msfvenom -p windows/x64/exec CMD=calc.exe -f c
// .rdata saved payload
const unsigned char Rdata_RawData[] = {
<대충 msfvenom으로 생성한 페이로드>
};
int main() {
printf("[i] Data_RawData var : 0x%p \n", Rdata_RawData);
printf("[#] Press <Enter> To Quit ...");
system("pause");
return 0;
}
.text에 저장하기
.text: 컴파일된 프로그램의 기계어 코드를 저장하는 공간
.text는 read, excute가 가능하므로, 여기서 바로 실행이 가능하다!
이전과 달리 컴파일러에게 직접 .text 섹션에 저장해달라고 요청해야 한다
보통 10byte 미만의 작은 페이로드를 사용할 때 유용하다.
#include <Windows.h>
#include <stdio.h>
# pregma section(".text")
// msfvenom calc shellcode
// msfvenom -p windows/x64/exec CMD=calc.exe -f c
// .text saved payload
__declspec(allocate(".text")) const unsigned char Text_RawData[] = {
<대충 msfvenom으로 생성한 페이로드>
};
int main() {
printf("[i] Data_RawData var : 0x%p \n", Text_RawData);
printf("[#] Press <Enter> To Quit ...");
system("pause");
return 0;
}
.rsrc에 저장하기
.rsrc: 리소스 저장 공간
.data, .rdata, .text에는 큰 페이로드를 집어넣을 수 없다.
따라서 .rsrc에 페이로드를 저장하기도 한다

반응형
'악성코드와 백신 > 악성코드 개발일지' 카테고리의 다른 글
| [악성코드 개발](8)[페이로드 난독화] (0) | 2026.03.10 |
|---|---|
| [악성코드 개발](7)[metasploit] (0) | 2026.03.09 |
| [악성코드 개발](5)[Windows process & thread] (0) | 2026.03.02 |
| [악성코드 개발](4)[DLL] (0) | 2026.02.27 |
| [악성코드 개발](3)[Windows API] (1) | 2026.02.26 |