STACK
Posts
12 posts[SW][에세이] 해킹: Heap(힙) Protection으로 해커 공격 원천 봉쇄
스택 오버플로우혹시 스택 오버플로우란 용어를 들어본 적이 있나요?소프트웨어에서 스택 오버플로우란 지역 변수를 너무 크게 잡아 프로세스가 쓰고 있는 스택 메모리를 깨는 것을 의미합니다. 그런데 해커들은 스택 오버플로우를 써서 해킹을 합니다. 말 그대로 함수 인자 값 및 각종 local/auto 변수들이 있는 스택에 **일부러** 정해진 크기 보다 더 많은 데이터를 써서 컴퓨터를 해킹하는 것입니다. 여기서 해킹이라는 용어의 의미는: 1> 해커가 실행하고자하는 악성 코드를 실행할 수 있도록 컴퓨터의 제어권을 탈취하거나 2> 제어권의 탈취가 아니더라도 프로그램에서 매우 중요한 데이터를 조작하는 것 을 뜻합니다. 하지만 해커가 2 번째 방식으로 중요한 데이터를 획득하는 것은 어렵습니다. 그 이유
[c++] stack 개념과 예제
백준의 알고리즘 오프라인 강의를 들으면서 지금까지 배웠던 내용들을 간단하게 정리하려고 한다. 스택 -한쪽 끝에서만 자료를 넣고 뺄 수 있는 자료구조이다. 마지막으로 넣은 것이 가장 먼저나오기 때문에 LIFO(Last In First Out)이라고 한다. 스택은 두가지 연산으로 이루어져있는데 -push함수 : 스택에 자료를 넣는 연산 -pop 함수 : 스택에서 자료를 빼는 연산 -top 함수 : 스택의 가장 위에 있는 자료를 보는 연산 (가끔 인덱스와 혼동할 수 있다.) -size 함수 : 스택에 저장되어있는 자료의 개수 이다. (size이므로 스택의 크기를 생각 할 수 있으나 개수임을 명심하자) 사실 스택 같은경우 자료구조에서 배열이나 연결리스트로 많이들 구현하고는 하는데 문제를
[c++]10799번 쇠막대기 / stack
문제는 굉장히 어려워 보이나 규칙성을 찾는다면 스택을 이용해 간단하게 해결할 수 있는 문제이다. 입력받은 string을 순차적으로 검사해괄호 ( 가 있다면 스택에 추가하고,괄호 ) 가 있다면 레이저에 의한 ')'인지 쇠막대기에 의한 ')'인지확인하여 각각의 경우를 처리해주면 된다. 레이저에의한 ) 괄호 같은 경우엔 겹쳐져있는 막대기를 한번에 자르는 것이므로 스택에 남아있는 ' ( ' 의 수를 추가하면 될 것 같다.또한 레이저가 끝났으므로 pop을 하여 앞에 남아있는 레이저의 ( 괄호 또한 삭제해준다. 쇠막대기에 의햔 ) 괄호는 쇠막대기가 끝났다는 것을 의미하므로 결과에 +1을 추가해주고, 쇠막대기의 시작을 알려주는 ( 괄호를 pop해준다. 결과값 출력을 해주면 정답을 얻어낼 수 있다. 1
[라즈베리파이] 인터럽트 핸들러에서 스택 덤프 저장
아래 패치를 적용하면 해당 프로세스의 스택 메모리 덤프를 stack_dump 배열에 저장합니다.인터럽트 처리가 마무리 된 후 프로세스 레벨에서 stack_dump 배열에 저장된 메모리 덤프를 커널 로그로 출력하면,인터럽트 벡터 심볼 __irq_svc과 스택에 푸쉬한 레지스터 정보를 모두 볼 수 있습니다.diff --git a/drivers/video/fbdev/bcm2708_fb.c b/drivers/video/fbdev/bcm2708_fb.cindex 612293c..2623e0d 100644--- a/drivers/video/fbdev/bcm2708_fb.c+++ b/drivers/video/fbdev/bcm2708_fb.c@@ -713,9 +713,28 @@ static void bcm2708_fb_i




