반응형

기타 12

Attack Lab(어택랩) 풀이 (ctarget 1~3, rtarget touch 2~3) (시스템프로그래밍)

이 포스트에서는 시스템 프로그래밍(system programming)의 실습 과제 중 하나인 Attack Lab(어택 랩)의 풀이를 다룬다. Attack Lab은 버퍼 오버플로우를 활용하여 문제의 의도대로 프로그램을 조작하여 원하는 데이터를 얻는 등의 처리를 하는 과제이다. 프로그램은 ctarget과 rtarget의 2개가 존재하며, ctarget은 touch1, touch2, touch3의 3개의 함수가 존재하고 rtarget은 touch2, touch3의 2개의 함수가 존재한다. (편의상 이들을 Phase 1 ~ 5로 칭하기도 한다.) ctarget은 code injection attack을 이용하여 attack하고 rtarget은 return-oriented programming을 이용하여 atta..

기타 2022.07.09

Bomb Lab(밤랩) Phase 1 ~ Phase 6 + Secret Phase 풀이 (시스템프로그래밍)

이 포스트는 시스템 프로그래밍(System programming)에서 다루는 과제인 bomb lab(밤랩)의 풀이를 다루고 있다. 대표적인 원서인 컴퓨터 시스템(Computer Systems)에서도 다루고 있으며, 카네기멜론 대학(CMU)에서 만들어진 과제이다. 만약 이 글을 검색을 통해 들어왔다면 과제를 도움받기 위해 들어왔을 것이지만, 혹여나 자발적으로 풀어보고 싶은 사람이 있다면 아래의 링크에서 다운해볼 수 있다. http://csapp.cs.cmu.edu/3e/labs.html 그 중에서도 Bomb Lab(밤랩)은 어셈블리 코드 내에 있는 폭탄에 해당하는 코드를 찾아서 해체시키는 컨셉의 과제이다. 쉽게 말해서 어셈블리 코드를 해석하는 것을 연습해볼 수 있는 과제이다. 그럼 바로 풀이와 해설을 정리..

기타 2022.07.09

[C/C++] int 범위 초과 걱정 없이 코딩하는 방법 (int를 long long처럼 사용)

C 언어나 C++로 BOJ와 같은 Online Judge 사이트의 문제를 풀다보면 가끔 int 범위를 초과하는 입력 데이터 때문에 틀리는 경우가 있다. 이런 경우 int를 모두 long long으로 바꿔주는 것도 귀찮고 문제 풀 때마다 int 범위를 초과하는지 일일이 신경쓰는 시간이 아깝다. 그렇다고 항상 long long을 사용하자니 코드가 너무 더러워지고 typedef로 ll과 같은 자료형을 사용하자니 가독성이 떨어진다. 따라서 여기서는 평소와 같이 int로 코드를 작성하면서도 long long 범위로 정수 변수를 사용하는 방법을 소개하고자 한다. ** 참고로 내가 떠올린 방법이고, 최소한 BOJ에서는 제대로 동작하는 것을 확인했다. int를 long long처럼 사용하는 방법 #include #de..

기타 2022.05.13

코드포스 Educational Codeforces Round 127 풀이 (A ~ C)

코드포스의 모든 Contest에는 에디토리얼이 따로 존재하지만 제가 공부하기 위해서 문제를 풀어보거나 에디토리얼을 번역하면서 이해하고, 그 내용을 정리해서 올립니다. 1671A. String Building 주어진 문자열을 aa, aaa, bb, bbb만으로 조합하여 만들 수 있는지의 여부를 구하는 문제입니다. 동일한 문자가 2개 이상 반복되는 경우 2와 3의 조합으로 언제나 만들 수 있기 때문에, 조합이 불가능한 경우는 하나의 "독립된" 문자가 존재하는 경우뿐입니다. (ex : aaaaa"b"aaaa) 따라서 고립된 하나의 단일 문자가 존재하는지를 검사하여 그러한 문자가 없다면 YES, 아니면 NO를 출력해주면 됩니다. #include using namespace std; int main() { ios..

기타 2022.04.24

코드포스 Educational Codeforces Round 126 풀이 (A ~ C)

오늘 Codeforces에서 contest가 있길래 잠깐 풀어봤습니다. Contest명은 Educational Codeforces Round 126 (Div 2)이고, 문제는 C번까지만 풀었습니다. Div 2 대회라서 D~E 정도까지는 풀었어야 된다고 생각을 하는데 시간이 난다면 뒤의 문제들까지도 풀어보고 정리해보겠습니다. A. Array Balancing 수열 a와 b가 있을 때, a_i와 b_i는 서로 교체가 가능하다고 할 때 주어진 수식의 최솟값을 구하는 문제입니다. 이 때 주어진 수식이란 a는 a끼리, b는 b끼리 서로 인접한 항의 차의 절댓값들의 합을 말합니다. 조금 생각해보면 수열에서 어떤 규칙을 발견할 필요없이 첫 항부터 뒤로 가면서 a_i와 b_i를 swap한 것과 하지 않은 것 중 절댓값..

기타 2022.04.10

[웹 사이트 만들기] 코드 작성하고 웹 프로젝트 배포해서 사이트 만들어보기

이 포스트는 개발환경 이클립스(Eclipse)를 활용하여 웹 프로그래밍을 간단하게 수행해보고 프로젝트를 배포해서 사이트에 돌아가는지까지 확인해보는 과정을 다루고 있습니다. [웹 사이트 만들기] 웹 호스팅하기, 도메인(내 주소) 생성, 페이지 만들기 이 포스트에서는 웹 사이트를 만들고(페이지 생성 및 도메인 생성 과정), 기초적인 페이지를 만들어 문구를 출력해보는 작업까지 진행하는 방법을 다루고 있습니다. 이 포스트에서 중점을 두는 restudycafe.tistory.com ↑ 먼저 이전 포스트에서 웹 호스팅을 받아서 페이지를 간단하게 파보는 과정까지를 거쳐보았기 때문에, 해당 과정에 대한 지식이 전무하신 분들은 해당 포스트를 참고해주시기 바랍니다. 이제 코딩을 할 수 있도록 이클립스를 설치하는 방법을 안..

기타 2022.03.14

[백준/BOJ] 백준 "맞았습니다" 정답 코드 추출, 저장하는 법 (코드 모음 만드는 법)

이 포스트에서는 프로그래밍 문제 사이트 백준 Online Judge(BOJ)의 "맞았습니다" 또는 정답 코드를 추출하여 따로 저장하는, 정답 코드 모음 만드는 방법을 다루고 있습니다. 깃허브에 자신의 코드를 정리해서 올리고 싶거나 또는 정답 코드만 따로 모아두고 싶을 때 Python 코드를 이용하여 이를 자동화시키는 방법이 있습니다. 다른 분이 깃허브에 크롤링 하는 프로그램을 간단하게 작성하여 올리신 것이 있어 이를 공유하고, 사용 방법을 알리고자 합니다. GitHub - pgh268400/BaekJoon-Code-Extractor: 지금까지 제출한 백준 "맞았습니다" 코드를 추출하는 프로그램 지금까지 제출한 백준 "맞았습니다" 코드를 추출하는 프로그램 입니다. Contribute to pgh268400..

기타 2021.12.29

[Zoom] 줌 회의 40분 제한 무료로 푸는 법 (G-Suite 아님 / 2021.12.09 작동 확인)

이 포스트는 화상 수업 프로그램 Zoom의 40분 회의 시간 제한을 무료로 푸는 방법을 다루고 있습니다. Zoom으로 수업을 들어본 사람들이 많을 것 같은데, Zoom 호스트를 해본 적이 있는 사람이라면 알겠지만 줌에는 3인 이상 회의를 진행할 시 40분이라는 시간 제한이 걸려있습니다. 이것은 Zoom을 유료 버전으로 업그레이드 하도록 유도하기 위한 일종의 마케팅 방법이라고 생각되는데요, 유료 버전을 구매하지 않고 짧은 시간에 간단히 회의 시간 제한을 푸는 방법에 대해 알려드리도록 하겠습니다. Zoom 40분 회의 시간 제한 푸는 방법 요약 우선 시간이 없으신 분들을 위해 방법만 짧게 정리해드리고, 그 자세한 과정은 아래에 다시 정리해드리도록 하겠습니다. 1. 네이트(nate) 계정 생성 (이미 있다면 ..

기타 2021.12.09

[토익 Voca Test 프로그램] 모르는 단어만 랜덤 반복 초간편 암기 프로그램 (TOEIC 필수 단어 2000개 포함)

안녕하세요. 오늘은 제가 토익 공부를 하며 단어를 편하게 암기하기 위해 몇 시간정도 들여서 직접 제작한 초간편 토익 단어 암기 프로그램을 공유하려고 합니다. 프로그램은 C언어로 작성되었으며, 기본 터미널 하에서 돌아가기 때문에 별도의 다른 프로그램의 설치가 필요하지 않습니다. 토익 필수 영단어 리스트들이 기본으로 포함되어 있으며, 원하는 단어만 직접 정리하여 반복 암기가 가능합니다. ** 단어의 저작권과 관련하여 추후 문제 발생시 즉시 게시물을 삭제 조치하도록 하겠습니다. ** 다만 저작권 관련 이슈 발생 우려에도 이 글을 게시하는 이유는, 영단어 자체에 별도의 저작권이 있을 거라고 생각하지 않기 때문입니다. (문제가 없어 보이긴 하나 혹시라도 문제가 발생 시 게시글을 삭제하도록 하겠습니다.) Restu..

기타 2021.10.25

C언어 반복문 사각형, 삼각형, 평행사변형, 마름모 출력하기 (Codeup)

이번 포스트에서는 C언어 반복문을 응용하여 출력할 수 있는 각종 문제들을 풀어보면서, 어떻게 반복문을 활용할 수 있는지에 대해서 다루어보도록 하겠습니다. 문제는 가장 간단한 문제들을 다루고 있는 온라인 저지 사이트인 Codeup을 이용하여 문제를 풀이하겠습니다. 사각형 출력하기 - Codeup 1352 길이 n이 입력되었을 때 크기에 맞는 정사각형을 별 문자(asterisk, *)로 출력하는 문제입니다. #include int main() { int n; scanf("%d", &n); for(int i=1; i

기타 2021.01.13
반응형