분류 전체보기(140)
-
[STUDY] 어셈블리어 - 4
1. 과제 목표 > 어셈블리어로 재귀함수를 이용한 팩토리얼 코드 구현하기 2. 조건 1. 스택을 활용할 것. 2. system V x86_64 abi를 사용 할 것. 3. 아래의 C언어 코드를 참고할 것. int fact(int n){ if(1
2023.02.25 -
[STUDY] 어셈블리어 - 3 (rip,rsp,rbp,스택프레임)
오늘은 스택프레임과 rip,rsp,rbp 등을 복습하였다. 우선 정리를 시작하기에 앞서, cpu가 연산하는 방법과 이에 대한 간단한 설명을 하고 넘어가겠다. 1. CPU 구조 cpu의 모습을 간단하게 그림으로 그려보았다. cpu에는 연산들을 처리하는 동안 자료들을 임시 저장하는 작지만 매우 빠른 초고속 저장장치인 레지스터가 존재한다. 그 레지스터에도 종류가 다양하다. 그중 먼저 알아볼 것은 RIP레지스터이다. 1. RIP 레지스터 rip에서 ip는 무슨 뜻일까? 바로 (instruction pointer) 이다. 여기서 instruction이란, CPU가 처리하는 기계어 명령어를 의미한다. CPU의 역할을 매우 단순화 시켜서 이해해보면 (명령어를 실행하고 그 다음 명령어를 실행한다) 정도 이다. 그럼, ..
2023.02.23 -
[STUDY] 어셈블리어 - 2
1. 과제 목표 > 파일을 생성하여 Hello world!을 작성하고 저장하기 section .data filename db "example.txt", 0 text db "Hello, world!", 10, 0 section .text global _start _start: mov rax, 2 mov rdi, filename mov rsi, 0101o mov rdx, 0644o syscall mov rbx, rax mov rax, 1 mov rdi, rbx mov rsi, text mov rdx, 14 syscall mov rax, 3 mov rdi, 0 syscall mov rax, 60 mov rdi, 0 syscall 결과 > 정상적으로 example.txt 가 생성이 되고, Hello world!..
2023.02.23 -
[STUDY] 어셈블리어 - 1
시작하기에 앞서, 본 글은 제가 공부를 하고 나서 정리하기 위해서 작성 된 글입니다. 내가 12월 말 부터 1월 말까지 약 1개월이란 시간동안 드림핵에서 리버싱과 포너블을 공부하며, 문제를 풀고 다시 웹해킹으로 넘어가서 문제를 풀다보니 리버싱,포너블 공백기가 좀 생겼다. 기본적인 부분들을 다시 복습하고 싶은 마음에 복습한 내용들을 정리 하는 글을 쓰게 되었다. 1. 어셈블리어란? 이 부분은 위키를 찾아보면 너무 잘 나와있기 때문에 내가 어느정도 알고있는지 파악하기 위해서 생각을 좀 해보았다. 고수준 언어는 컴퓨터에 명령이 불가능하다. 왜냐하면 컴퓨터는 0과 1로된 기계어밖에 모르기 때문이다. 따라서 인간은 기계어로 컴퓨터에 명령을 내려야 했는데, 기계어는 인간이 공부하고 응용하기 너무 난해했다. 이때 나..
2023.02.22 -
백준 [ALGORITHM] - 첫 글자를 대문자로 (4458)
n = int(input()) for i in range(n): x = str(input()) print(x.title()) upper로 해도 되는데 title이라는 좋은 내장 함수가 있다 ㅋㅋ.. (공백 포함해서 첫 글자만 대문자 처리) https://www.acmicpc.net/problem/4458
2023.02.05 -
백준 [ALGORITHM] - 조합 (2407)
n,m = map(int,input().split(" ")) un = 1 up = 1 for i in range(m,0,-1): un *= i for j in range(n,n-m,-1): up *= j print(int(up//un)) https://www.acmicpc.net/problem/2407
2023.02.04