Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- appbar
- scroll
- livedata
- CustomScrollView
- 계측
- Coroutines
- data
- tabbar
- TEST
- textview
- activity
- 앱
- viewmodel
- Flutter
- drift
- 앱바
- binding
- android
- 테스트
- ScrollView
- textfield
- intent
- Button
- 안드로이드
- LifeCycle
- Navigation
- DART
- Compose
- Dialog
- Kotlin
Archives
- Today
- Total
Study Record
[리버싱 기초개념] 공유메모리 본문
728x90
공유 메모리 관련 함수
☞ shmget()
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, int size, int shmflg);
/*
공유 메모리를 생성하거나 공유 메모리를 사용할 수 있는 함수이다.
리턴값 : 성공시 공유 메모리 ID(공유 메모리 식별자), 실패시 -1
key_t key : 공유 메모리를 읽기 위한 key 변수
int size : 공유 메모리의 크기
shmflg : 공유 메모리 생성이나 사용 옵션을 지정
- IPC_CREAT : 공유 메모리 생성
- 0666 : 공유 메모리 사용 권한
*/
int shm_id = shmget((key_t)7530, 1024, IPC_CREAT|0666);
☞ shmat()
#include <sys/types.h>
#include <sys/shm.h>
void *shmat(int shmid, const void *shmaddr, int shmflg);
/*
이미 할당된 공유 메모리 공간을 다른 프로세스에서 사용할 수 있게 권한을 부여하는 함수이다.
생성된 공유 메모리를 프로세스에 연결(Attach)한다.
리턴값 : 실패시 (void *)-1, 성공시 프로세스 공유 메모리 접근 주소
shmid : 공유 메모리를 생성할 때 만들어진 공유 메모리 ID - shmget()에서 얻은 shm_id
shmaddr : 공유 메모리가 할당된 주소
shmflg : 공유 메모리 사용 옵션을 지정
- SHM_RND : 공유 메모리 주소를 프로세스에 맞게 따로 할당
- SHM_RDONLY : 공유 메모리를 읽기 전용으로 설정
*/
int shm_id = shmget((key_t)7530, 1024, IPC_CREAT|0666);
void *shm_addr=(void * )0;
// 이미 메모리에 떠있으니 shmaddr은 0으로 설정해도 된다. 반환값으로 공유메모리 접근 주소를 받는다.
shm_addr = shmat(shm_id, (void *)0, 0);
if (shm_addr == (void * )-1) 실패;
else 성공;
☞ shmdt()
#include <sys/types.h>
#include <sys/shm.h>
int shmdt(const void *shmaddr);
/*
프로세스에 연결된 공유 메모리 공간의 사용을 끝낸 후 프로세스와 공유 메모리 공간의 연결을 끊는다.
프로세스에 연결된 공유 메모리를 분리(Detach)
리턴값 : 실패시 -1
shmaddr : 공유 메모리가 할당된 주소 - shmat() 반환값
*/
int shm_id = shmget((key_t)7530, 1024, IPC_CREAT|0666);
void *shm_addr = shmat(shm_id, (void *)0, 0);
shmdt(shm_addr);
728x90
'리버싱 > 기초 개념' 카테고리의 다른 글
[리버싱 기초개념] 쉘 코드 만들기 - 경량 쉘 코드 (0) | 2021.11.18 |
---|---|
[리버싱 기초개념] 메모리 보호기법 (0) | 2021.11.18 |
[리버싱 기초개념] 포맷 스트링 공격 구문 (0) | 2021.11.17 |
[리버싱 기초개념] 버퍼 오버플로우 (0) | 2021.11.16 |
[리버싱 기초개념] 진법 전환/John the ripper(암호 크랙) (0) | 2021.11.16 |