본문 바로가기

분류 전체보기

Linux Syscall number http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html x64 : http://blog.rchapman.org/post/36801038863/linux-system-call-table-for-x86-64 더보기
CreateThread 시스템 프로그래밍 - CreateThread LPSECURITY_ATTRIBUTES lpThreadAttributes : 보안 식별자를 지정한다. 주로 NULL을 넘긴다. SIZE _T dwStackSize : 스레드 스택의 크기를 지정한다. 0을 넘기면 디폴트로 1MB가 지정된다. LPTHREAD_START_ROUTINE lpStartAddress : 스레드 엔트리 함수 주소를 지정한다. LPVOID lpParameter : 스레드 엔트리 함수에 전달할 인자가 들어간다. DWORD dwCreationFlags : 스레드 생성 옵션을 지정한다. 0이면 lpStartAddress 스레드 엔트리 함수가 바로 시작된다. CREATE_SUSPENDED 플래그를 지정하면 스레드가 생성된 후 바로 시작되지 않고 R.. 더보기
strcpy 구현 AT&T문법 어셈블리 코딩 연습 - strcpy 더보기
puts 구현 AT&T문법 어셈블리 코딩 연습 - puts syscall구조eax : syscall number ebx : 첫 번째 인자 ecx : 두 번째 인자 edx : 세 번째 인자 esi : 네 번째 인자 edi : 다섯 번째 인자 ebp : 여섯 번째 인자syscall number 4는 write함수이다. 첫 번째 인자인 1은 file descriptor이다. file descriptor 0은 표준 입력, 1은 표준 출력, 2는 표준 에러이다. 두 번째 인자는 출력할 문자열의 주소이다. 세 번째 인자는 문자열의 길이다. 더보기
strlen 구현 AT&T문법 어셈블리 코딩 연습 - strlen 더보기
Debug Register 디버그 레지스터는 프로그램 디버깅을 목적으로 프로세서에 의해 사용되는 레지스터로써 DR0~DR7까지 총 8개가 있습니다. 그 중 DR0~DR3까지 4개의 레지스터만 직접 사용이 가능합니다. 우리가 보통 하드웨어 브레이크 포인트를 4개 까지만 설정이 가능한 이유도 이와 같습니다. 그림으로 보면 이렇게 볼 수 있습니다. 그리고 나머지 DR4~DR7 까지 4개의 레지스터는 상태를 관리하기 위해 쓰입니다. 특별히 그 중 DR7레지스터는 Debug Control Register로 불리며 15비트부터 31비트까지 R/W 0~3의 비트가 있습니다. 이 비트들은 DR0~DR3 까지의 브레이크 포인트 속성과 관련 된 내용입니다. 각 비트는 두 개의 비트로 이루어져 있으며 각 의미를 보면 00 - 명령어가 실행 되었을 때.. 더보기
Control Register 컨트롤 레지스터란 운영체제의 운영 모드를 변경하고 현재 운영 중인 모드의 기능을 제어하는 레지스터이다. CR0, CR1, CR2, CR3, CR4 이렇게 다섯 개의 레지스터가 존재한다. 전체적인 부분을 그림으로 보면 그리고이렇게 나눌 수 있다. 각 레지스터들을 기능을 나누어 설명하면CR0 - 운영모드를 제어하는 레지스터 PE - Protection Enable (보호모드와 리얼모드 설정) MP - Monitor Coprocessor (wait, fwait 명령시 TS필드의 참조 여부) EM - Emulation (FPU가 내장되었는지 여부 설정) TS - Task Switched (FPU명령 사용시 예외 설정 여부) ET - Extension Type (1로 예약되어있음) NE - Numeric Erro.. 더보기
정보보호올림피아드2015 본선 Q10 이번에는 10번 문제가 늘 전통적으로 내려오던 무한 게싱이 아닌 새로운 아두이노 문제로 바뀌었습니다. 주어진 문제를 보면 "1. 주어진 아두이노와 브레드보드, 부품들로 화면과 같이 설계하면 7-segment에 문제가 표시됩니다. 2. 케이블선의 색은 화면과 같이 맞출 필요가 없습니다. 3. 정답을 입력해서 맞다면 본 문제가 시작됩니다."이렇게 나와 있습니다. 주어진 회로도를 보면 이렇게 나와 있습니다. 이건 정말 완전 순 노가다 문제였습니다.. 다 연결했는데도 안되서 다시 다 뽑고 하는 등 열심히 노가다 하면 7-segment에 484F4d45가 연속적으로 뜨고 이를 아스키코드로 변환하면 HOME이 됩니다. KEY : HOME 더보기
정보보호올림피아드2015 본선 Q5 이번에도 리버싱 문제입니다. 실행을 해 보면 ID를 입력받습니다. 제 아이디인 5unKn0wn을 입력하면 잠깐 멈칫 했다가 종료됩니다. 그 사이에 아주 잠깐 con2.exe라는 파일이 생성된 뒤 다시 삭제됩니다. 바로 올리디버거로 열어서 동적분석 해 보겠습니다. 메인 함수부터 분석해 보면 문자열들과 파일이 다 보입니다. con2.exe도 있네요. ID를 입력받고 난 뒤를 보면 입력한 ID를 인자로 전달하고 어떤 함수를 호출합니다. 이 함수 내에서는 제가 입력한 ID를 가지고 연산을 거친 뒤 이 문자열을 만들어 냅니다. 이 함수를 나오고 난 뒤에 이번에는 con1.exe, con2.exe등의 인자를 넣어주고 새로운 함수를 호출합니다.함수 내에서는 자기 자신을 열어서 con2.exe실행파일을 만들어 냅니다... 더보기
정보보호올림피아드2015 본선 Q3 약간 미스크 비스무리한 문제입니다. 문제 내용을 보면 이렇게 나와있습니다. 문제 파일을 보면 ssdeep이라는 해시를 구하는 프로그램과 key_14라는 파일이 있습니다. 헥스 에디터로 열어서 시그니쳐를 보면 PK였습니다. 그래서 zip으로 바꾸고 다시 열면 key라는 파일이 또 튀어 나옵니다. 저 파일을 다시 헥스 에디터로 열어보면 이번에는 시그니쳐가 EGGA입니다. 살짝 고민하다가 확장자를 egg로 바꾸고 다시 여니 key파일이 또 있었습니다. 이번에는 시그니쳐를 봤는데 시그니쳐가 없었습니다. 여기서 약간 헤메다가 첫 번째 줄에 key.tar을 보고 확장자를 tar로 바꾸니 이번에는 폴더가 나옵니다. 1~10이라는 파일이 있고 Hint.txt라는 파일도 함께 있습니다. 내용을 보니 해시가 들어있습니다... 더보기