일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- exchange student
- Programming
- 벨기에비자
- 벨기에
- 리눅스
- 파운드리 #TSMC #팹리스 #삼성파운드리 #DB하이텍
- KU leuven
- 교환학생
- 코딩
- 건강진단서
- 우분투
- eramus student
- 비자
- 명령어
- 아포스티유
- ARM #ARMtrustzone #trustzone #TEE #secureOS
- Linux
- 벨기에 교환학생
- 어셈블리어
- 유럽비자
- 루벤대학교
- 윈도우프로그래밍 #cmd #명령프롬프트 #윈도우ls #윈도우echo #윈도우export
- Today
- Total
목록컴퓨터 프로그래밍 (11)
더 나은 세상

이 게시글은 http://bits-please.blogspot.com/2015/08/full-trustzone-exploit-for-msm8974.html Full TrustZone exploit for MSM8974 A security blog focusing on Android, the Linux Kernel and everything nice. bits-please.blogspot.com 위 글의 해석을 포함하고 있습니다. 우선 ARM의 trustzone을 이해할 필요가 있습니다. 따라서 ARM의 trustzone을 설명하고 exploit을 하는 방법으로 넘어가겠습니다. trustzone이란 ARM에서 발표한 architecture로 하나의 os로 이루어진 sw 계층구조를 2개로 나누어 normal..
윈도우 프로그래밍 CMD 사용법 윈도우키 + cmd 검색 -> 명령 프롬프트 창이 뜹니다. 윈도우 명령 프롬프트의 명령어는 리눅스와 다르기 때문에 매번 헷갈리기는 하지만 익숙해지면 둘다 자유롭게 쓰실 수 있습니다. 리눅스/윈도우 명령어 비교 ls / dir echo / echo export / SET

ARM은 2가지 타입의 descriptor가 있다 : block, table (정확히는 page를 가리키는 descriptor도 있다.) page size : 4KB, 16KB, 64KB page table에 있는 descriptor(entry)는 다음 level page table뿐만 아니라 access attribute(속성)도 가지고 있다. XN bit : 그 메모리가 실행될 수 있는지 PXN bit : 메모리의 코드가 커넒모드에서 실행될 수 있는지 AP 2bits : read/write permission결정 AP가 01이면 커널모드와 유저모드에서 모두 접근가능하다. 그 메모리 영역은 커널영역일 수도 있고 유저영역일 수도 있다. 그래서 01이면 모든 app이 커널 address에 접근가능하다. 원..

The first exploit stub struct sigevent을 구글링했더니 이게 나왔다. 참고하면서 하면 될듯 mq_notify는 0이 되어야한다. 이 함수를 집중적으로 파고들어야 할것 같다. http://man7.org/linux/man-pages/man3/mq_notify.3.html mq_notify(3) - Linux manual page MQ_NOTIFY(3) Linux Programmer's Manual MQ_NOTIFY(3) NAME top mq_notify - register for notification when a message is available SYNOPSIS top #include int mq_notify(mqd_t mqdes, const struct sigevent ..

Public information mq_norify() : syscall인데 asynchronous notification을 등록/등록해제 하는데 쓰인다. 문제가 생기는 부분은 retry logic으로 들어갈 때, sock pointer를 mq_notify가 null로 만들지 않아서 인듯 하다. mq_notify에 문제가 있고, retry logic, sock variable refcounting이 use after free를 만든다. closed fd에 race condition이 존재한다. netlink_attachskb() : struct sk_buff(nc)를 struct sock receive queue에 넣는 명령어 정상적으로 되었다면 ret값이 0이 되어 5-c로 넘어가야 한다. 5-a : ..

처음 써보는 debian 사실 우분투 외의 리눅스는 써보지 않았는데 GUI가 없으니 확실히 어려운 것 같다. 1. core concept struct task_struct : task 마다 이걸 하나씩 가지고 있다. multi thread의 경우 thread마다 1개씩 가지고 있다. 7개의 파일 종류 : regular, directory, link, character device, block device, fifo, socket 파일 종류는 file descriptor로(정수로) 표현된다. file descriptor 당 struct file이 있다. (thread는 더 큰 범위) 이 fiile object를 가리키는 포인터를 filp 혹은 file pointer라고 한다. file descriptor를..
우리가 게임을 하거나 다른 프로그램을 사용할 때 hello.exe라는 파일을 보게 됩니다. 이 파일을 더블클릭하면 프로그램이 실행되게 되는데 그렇다면 이 exe 파일을 어떻게 만들 수 있는지 알아봅시다. 모든 프로그램은 기본 언어가 필요해요. 그래서 프로그래밍을 배울 때 가장 먼저 하는게 언어를 배우는 일이죠.python, java, c, c++같은 언어로 프로그래밍을 가장 먼저 배우는데 c를 기준으로 진행할게요.hello world라는 것을 출력하는 코드를 만들면 보통 visual studio에서 가장 먼저 처음 시작하게 되는데 이거는 프로그램이라고 부를 수 없어요.그냥 코드죠. 이 코드를 이용하여 exe를 만들때 프로그램이라고 할 수 있어요.우선 컴파일러를 이용하여 object파일을 만들어서 컴퓨터가..
이번에 게시할 내용은 compiler를 공부하면서 그동안 몰랐었던 내용과 헷갈렸던 부분을 다시 확인하기 위해서에요. compiler를 처음 알았던건 대학교 1학년 첫 수업시간에 visual studio라는 프로그램을 교수님이 설명을 하면서 들었어요compiler는 넓게 이야기하면 한 언어에서 다른 언어로 바꿔주는 것을 말하고프로그램의 실행에 관해서 이야기할 때는 c나 java같은 high level언어에서 assembly언어로 바꿔주는 것을 말해요우리의 눈에는 cout이나 printf같은 함수가 출력을 의미한다는 걸로 보이지만 컴퓨터 입장에서는 무슨 소리인지 알 지 못해요.그래서 0과 1로 바꿔 주어야 하는데 그 과정중에 있는게 compiler라고 합니다.assembly언어는 아직 컴퓨터가 이해하지 못하..
오늘 포스팅할 내용은 virtual address와 physical address입니다. 번역하면 가상주소와 실제주소가 됩니다. 우리가 현재 쓰고 있는 컴퓨터는 64비트 컴퓨터가 대부분입니다. 64비트라는 것은 0과1이 들어갈 자리가 64개라는데 이 숫자가 늘어날 수록 저장 공간도 넓어지고 다양한 명령어를 쓸 수 있다는 장점이 있습니다.그러면 64비트가 가질 수 있는 용량은 얼마나 될까요? 2의 64승이고 2의 10승은 1000이라고 하면 16*1000^6이 되겠죠.16GB가 16*1000^3*2*3이인것을 감안하면 엄청나게 큰 숫자인것을 알 수 있습니다.하지만 우리가 쓰는 주기억장치인 RAM은 커봐야 16GB이고 제 컴퓨터는 8GB밖에 되지 않습니다.그렇다면 저 많은 용량은 어디에 저장되고 어떻게 저장..