웹 서버 사용시 ipTIME 공유기 설정방법 공유기에 연겯된 PC에서 APACHE 또는 IIS를 구동하여 웹서버를 운영하는 경우 웹서버가 사용하는 TCP 80 포트에 대한 포트개방 설정이 필요합니다. 아래 설정 예제는 웹서버로 사용하는 PC의 IP가 192.168.0.10일 경우를 가정하여 설명하였습니다. 1. 공유기에 연결된 PC에서 인터넷 탐색기를 실행하고 주소 입력란에 192.168.0.1을 입력하여 웹 설정화면에 접속한 후, [관리도구] -> [고급설정] -> [NAT/라우터 관리] -> [포트포워드 설정] 메뉴에 접속합니다. 2. 아래와 같이 [정의된 리스트]에서 [HTTP]를 선택하시고, [내부IP주소]에 웹서버의 IP(예. 192.168.0.10)를 입력하신 후 [추가]버튼을 클릭합니다. 3..
커널 소스를 보게 되면 정신이 혼미해집니다. 수많은 매크로에 알아먹을 수 없는 문자들.. 하지만 저도 잘 보지는 못하지만 자세히 들여다 보면 #if ~ #endif가 많이 등장하는 것을 볼 수 있으며 그로 인해 실제 코드는 얼마 안되는 것을 알 수 있습니다. #if 계열 매크로에 대해 간단히 정리해 보았습니다. 1. #if (A == B) ... #endif A와 B가 같을 때 매크로 사이의 내용을 실행하겠다는 의미이며 기본적인 if 구문과 동일합니다. 2. #if (A == B) ... #elif ( A== C) ... #endif 이것 또한 직관적으로 받아들을 수 있습니다. #elif는 #else if의 줄임말으로써 편히 사용할 수 있습니다. 그렇다면 이러한 것을 어디서 사용할 수 있을까요? 저는 디..
C#으로 프로그래밍 하다 보면 low-level의 api 함수를 사용해야 할 일이 생깁니다. 많은 부분을 .NET Framework에서 라이브러리로 제공하지만, 많은 경우에 직접 API를 사용하는것이 훨씬 강력한 기능을 나타낼 수 있을 것입니다. Native DLL 뿐만 아니라, 다른 Dll의 함수를 사용하기 위해서는 DllImport 구문을 사용합니다. 해당 함수 호출을 원하는 곳에 아래와 같이 적어줍니다. C언어를 사용하면 함수 프로토타입을 선언하는데요. 그것과 동일하다고 생각하시면 됩니다. [DllImport("kernel32.dll")] static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedT..
마이크로초 단위 시간을 측정하여 비교하기 위해서 gettimeofday() 메소드를 사용합니다. 아래와 같이 측정할 수 있습니다. struct timeval tp; gettimeofday(&tp, NULL); timeval구조체의 tv_sec에 해당 초의 값이, tv_usec에 해당 마이크로초가 들어갑니다. 그럼 이럴땐 어떻게 해야 할까요? "123을 출력하고 0.5초뒤에 456을 출력하자" 쉽게 생각하면 timeval 구조체를 두개 정의한 뒤 시작 지점에서 시간 값을 측정하고, 루프를 돌면서 tv_usec을 비교하며 두 값의 차이가 500000이 되었을 때 루프를 나오면 될 것입니다. 코드는 아래와 같이 되겠죠 struct timeval tpstart, tpend; printf("123\n"); get..
이전 포스팅에서도 언급 하였듯이, 를 공부하고 포스팅한 글 입니다. 리버스 엔지니어링을 하게 되면, 어셈블리 언어를 다루게 됩니다. 어셈블리 언어의 기본이자 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. 완성프로그램의 수정, 디버깅 및 호환
(참조 : 뇌를 자극하는 RedHat Fedora 리눅스 서버&네트워크) 리눅스 유저분들은 직접 오리지널로 설치하여 사용하시는 분들도 많이 계시지만 대부분의 유저분들이 가상머신을 사용하실 거라 생각합니다. 그런데 잘 모르고 있지만 아주 유용한 기능이 있어 소개할까 합니다. VMware의 Snapshot기능입니다. (아쉽게도 VMplayer 등에서는 스냅샷 기능을 제공하지 않네요..) 스냅샷은 특정 상태를 저장하고 이동이 가능하다고 생각하시면 됩니다. 중요 설정을 마친 상태이거나, 특정 시스템 설정을 건드린다던가, 커널을 건드릴 상황이라면 그 시점을 저장해 놓는다면 시스템이 먹통이 되더라도 손쉽게 복구를 할 수 있을 것입니다. 메뉴->VM->Snapshot->Take Snapshot을 이용하여 현재 스..
- Total
- Today
- Yesterday
- 자바
- 머신러닝
- reversing
- 기계학습
- 데이터 사이언스
- 자료구조
- 이산수학
- Data Structure
- Reverse Engineering
- 카타르 음주
- 안드로이드
- 개발
- 리버싱
- Data Science
- Machine Learning
- linux
- Algorithms
- 리버스엔지니어링
- 운영체제
- operating systems
- statistical learning
- android
- 데이터 과학
- 카타르
- 알고리즘
- 리눅스
- 대학원
- Discrete Mathematics
- java
- 통계학습
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |