리눅스 시스템 프로그래밍 [2] : 파일 입출력

이번 장에서는 리눅스 시스템 프로그래밍에 있어 가장 기초적이면서도 중요한 파일 입출력에 대해 정리하고자 한다. 모든 소스코드는 우분트 32비트 환경에서 컴파일 하였으며, 시큐리티 옵션을 따로 주지 않았다.   1. 파일 디스크립터 (File Descriptor) 리눅스에서 파일을 읽고 쓰기 위해서는 반드시 파일을 Open 해야만 한다. 파일이 오픈되고 나면 파일 디스크립터라는 일종의 Index 번호가 반환되며, 이 값은 파일을 오픈한 프로세스의  고유 번호라 생각하면 이해하기 쉬울 것이다. 파일 디스크립터는 C int 타입으로 표현되며, 최대값은 1,024이지만 1,048,576번까지 설정할 수 있다. 또한, 프로세스마다 관례적으로 0,1,2 번은 사전 배정되어 있는데 각각 번호별 의미는 다음과 같다. 0 : 표준 입력 (stdin) / 1 : 표준 출력 (stdout) / 2 … Read More

Continue Reading

ARM 크로스 컴파일 환경 초간단 구축

우분투 14.04 버전에서 ARM 크로스 컴파일 환경을 간단하게 구축하는 방법이다. 7줄의 apt-get 명령어만 날리면 끝~ $ sudo apt-get install emdebian-archive-keyring $ sudo apt-get install libc6-armel-cross libc6-dev-armel-cross $ sudo apt-get install binutils-arm-linux-gnueabi $ sudo apt-get install gcc-arm-linux-gnueabi $ sudo apt-get install g++-arm-linux-gnueabi $ sudo apt-get install u-boot-tools $ sudo apt-get install libncurses5-dev   테스트 #include <stdio.h> int main (int argc, char ** argv) { printf ("Hello, World \n"); }   결과는 굿, 초간단, 성공적~! root@ubuntu:~# file hello hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV)   ARM 버전까지 공부할라니 머리가 아프구먼 ㅠㅠ   … Read More

Continue Reading

리눅스 시스템 프로그래밍 [1] : Prologue

  1. 학습의 목적 그동안 미뤄왔던 리눅스 시스템 프로그래밍 공부를 다시 한번 차근차근 정리 할 필요가 있을 것 같다. 지금까지 리눅스 시스템 프로그램은 워게임 또는  Exploit을 작성할 때만 간간히 사용했던게 대부분이라 체계적이고 깊이 있는 코드 작성을 하지 못했던게 사실이다. 또한, 현재 주 업무로 진행하고 있는 모바일 기기의 커널 보안 검증을 위해서는 리눅스 시스템 프로그래밍 학습이 필수적이라 할 수 있다. 따라서 높은 산을 한걸음씩 옮겨가는 마음으로, 기본에서 부터 리눅스 커널을 완벽하게 이해할 수 있는 수준까지 차근차근 나아가보도록 하자.   2. 학습 방법 아무런 방향성 없이 공부를 하는 것 만큼이나 비효율적인 것은 없다. 최소한의 시간에 최대한의 성과를 얻기 위해서는 정확한 키워드와 방향성을 … Read More

Continue Reading

다 읽었다 – 난 정말 C PROGRAMMING을 공부한 적이 없다구요

다시 C언어 공부하기 리버스 엔지니어링을 시작하기에 앞서 가장 기초가 되는 C언어 공부를 시작했다. 사실 C언어를 몰라도 악성코드 동적 분석 정도는 어느 정도 가능한 영역이라 생각되지만, 리버스 엔지니어링을 제대로 배우기 위해서는 초석을 잘 닦는게 중요하다 싶어 10년만에 다시 C언어 책을 집어들게 되었다.   [  선택한 교재 – 제목이 매우 직관적(?) 이라 할 수 있겠다 ] 사실 여러 커뮤니티에서 C언어에 관련된 책 추천글을 많이 보았는데, 개인적으로 어떤 책이 되었든간에 한번을 완독하는 것이 가장 중요하다고 생각한다. 특히 C언어의 경우 마의 “포인터 장벽”만 넘기고 나면 이해가 되지 않는 나머지 부분이 저절로 이해가 되는 경험을 할 수 있을 것이다. 제목이 직관적인 “난 정말 C Programming을 … Read More

Continue Reading

Site Footer