이전 포스팅에서도 언급 하였듯이, 를 공부하고 포스팅한 글 입니다. 리버스 엔지니어링을 하게 되면, 어셈블리 언어를 다루게 됩니다. 어셈블리 언어의 기본이자 CPU의 기본이 되는 것은 뭘까요? 바로 레지스터입니다. CPU(Central Processing Unit)는 메모리로부터 명령을 가져오고(Fetch), 어떤 명령어인지 해석하고(decode), 그리고 실행(Execute)합니다. 이러한 동작만을 무수히 반복하게 되고, 그렇기 때문에 이렇게 제가 글을 쓰고 인터넷을 할 수 있는 것입니다. (자세한 동작은 Computer Architecture를 공부하면 배울 수 있습니다.) 어셈블리 언어에서는 레지스터를 이용하여 값을 저장하고 조작하게 됩니다. 이러한 레지스터들은 CPU에 존재하는 하드웨어적인 것이기..
이전 포스팅에서도 언급 하였듯이, 를 공부하고 정리할 겸 포스팅한 글입니다. 리버스 엔지니어링을 위해서는 디버깅 툴이 필요합니다. 윈도우 환경의 리버스 엔지니어링을 위해서 가장 많이 사용하는 툴은 올리디버거(OllyDbg)입니다. (참고로 리눅스 환경에서는 gnu debugger, 즉 gdb를 사용합니다.) 올리디버거는 http://www.ollydbg.de 에서 구할 수 있습니다. 1.10 버전 다운로드 설치 후, 해당 폴더에서 Plugin 폴더와 UDD 폴더를 만듭니다. 그리고 BOOKMARK.DLL과 Cmdline.dll은 Plugin폴더로 이동시킵니다. Option->Appearance->Directories를 열고 디렉토리의 경로를 지정한 후에 올리디버거를 다시 실행하면 플러그인 기능을 적용시..
리버스 엔지니어링(리버싱)을 공부하게 되었는데요. 공부하는 것을 정리할겸 포스팅해볼까 합니다. 를 참조하였습니다. 리버스 엔지니어링이란. 줄여서 리버싱 이라고도 하며 프로그램 역분석을 의미. 크랙을 만들기 위한 연구로 잘못 인식되기도 하지만 그런 작업을 통해 악의적 용도로 사용하려는 사람들을 크래커라고 하며, 프로그램 분석을 통해 보안 강화의 목적으로 취약점을 공개하는 사람들을 해커라고 한다. 리버싱의 용도 1. 악성코드의 분석 2. 창의력 증진을 위한 놀이 3. 완성프로그램의 수정, 디버깅 및 호환
많은 길중에 점점 좁혀지는 것 같다. 내가 할 수 있는 건 1. 내년 졸업 후 취업=>개발자 2. 운영체제 전공 석사 취득 후 개발자=>보안 개발자 3. 데이터마이닝 전공 석사 취득 후 개발자=>개발자? 크게 보면 세 길이지만 1번은 그렇게 하고 싶지는 않고 2번이냐 3번이냐이다. 3번은 흥미는 가지만 맨땅부터 시작하는 느낌이라 두렵다. 데이터마이닝을 할 꺼면 박사까지는 따야될 것 같은 마음도 들고.. 그렇다고 박사까지 내가 버텨줄 지 의문이다. 그렇다면 2번이 확률은 더 높지만 내가 운영체제를 더 좋아하는 지, 그냥 어플리케이션 개발을 더 좋아하는지 아직 확신이 서질 않는다. 안드로이드 어플리케이션을 만들다 보면 난 이쪽이 천직인 것 같다가도 답답한 API문서들을 뒤지고 잇을 땐 이런 걸 어떻게 직업으..
(참조 : 뇌를 자극하는 RedHat Fedora 리눅스 서버&네트워크) 리눅스 유저분들은 직접 오리지널로 설치하여 사용하시는 분들도 많이 계시지만 대부분의 유저분들이 가상머신을 사용하실 거라 생각합니다. 그런데 잘 모르고 있지만 아주 유용한 기능이 있어 소개할까 합니다. VMware의 Snapshot기능입니다. (아쉽게도 VMplayer 등에서는 스냅샷 기능을 제공하지 않네요..) 스냅샷은 특정 상태를 저장하고 이동이 가능하다고 생각하시면 됩니다. 중요 설정을 마친 상태이거나, 특정 시스템 설정을 건드린다던가, 커널을 건드릴 상황이라면 그 시점을 저장해 놓는다면 시스템이 먹통이 되더라도 손쉽게 복구를 할 수 있을 것입니다. 메뉴->VM->Snapshot->Take Snapshot을 이용하여 현재 스..
처음으로 공모전이란 것에 작품을 제출해 보았습니다. (SK TAC, LG U+ Open Contents) 비록 기획도 세우지 않았고, 아이디어 하나만 가지고 한 거였지만 이렇게 잘 완성되니 기쁩니다; 공모전 하겠다고 시작은 7월 말 ~ 8월 초에 했지만 실제 대부분의 기능 구현은 9월 개강하고 나서 했네요.'ㅁ' 기획도 없고 설계도 안되있어서 막바지에 인터페이스 문제 기능 문제 등등 Software Crisis가 무엇인가 정말 실감할 수 있었던 과정이었네요 결국 제출 전날에는 밤을 샜구요. 완벽하지도 않고 상 탈것 같지도 않지만 애정이 많이 가는 작품이 될 것 같습니다. 아직은 부족한 작품이고 저이며 우리 팀이지만 앞으로는 더 발전하는 모습 보여주고 싶습니다.
일전에 우분투를 설치했었는데, 한 사용자의 계정만 생성할 뿐 root 계정을 생성하는 부분은 별도로 없더군요. 그래서 구글링을 해보았더니, 우분투에는 root권한이 존재하지 않고 sudo 명령어를 이용할 경우 root의 권한으로 실행이 가능하다고 합니다. 일반적으로 설치유저는 sudo명령이 사용이 가능한데요. /etc/sudousers에 등록할 경우 sudo명령이 사용 가능해진다고 하네요. 또한 root 권한으로 빈번하게 명령들을 사용해야 할 필요가 있을 경우에는, sudo -s를 이용해서 root권한의 셸로 이동할 수 있다고 하니 참고하세요~ - sudo : root권한 명령 실행 - /etc/sudousers : sudo명령 실행이 가능한 user - sudo -s : root권한 셸 실행
Linux에서 사용되는 문서 편집기의 업그레이드 판 형태인 vim편집기의 경우 윈도우에서 주로 사용되는 Visual Studio, Eclipse 등에 익숙해진 유저의 경우 처음에는 상당히 불편한게 사실입니다. 기본적으로 들여쓰기 줄 번호 지정 등의 기능을 vi의 명령 모드에서 제공하지만, 매번 설정해 줘야 할 경우 상당히 귀찮습니다. 이러한 설정 들을 자동으로 할 수 있습니다. .vimrc 파일을 이용하는 것입니다. vim편집기의 설정 파일이라고 생각하면 됩니다. 해당 유저의 home 디렉토리(/home/유저명)에서 .vimrc를 생성하면 됩니다. 제가 자주 사용하는 명령으로는 set smartindent : 자동 들여쓰기(autoindent도 있습니다) set nu : 줄 번호 지정 syntax on ..
- Total
- Today
- Yesterday
- operating systems
- 자바
- 안드로이드
- 개발
- 리버스엔지니어링
- 카타르
- Data Structure
- 데이터 과학
- Data Science
- 통계학습
- Algorithms
- Machine Learning
- 기계학습
- 자료구조
- linux
- Discrete Mathematics
- statistical learning
- Reverse Engineering
- 머신러닝
- android
- 운영체제
- 대학원
- 이산수학
- 알고리즘
- 카타르 음주
- 데이터 사이언스
- java
- reversing
- 리버싱
- 리눅스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |