웹 서버 사용시 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..
Java는 기본적으로 정의된 자료 구조에 대해 정렬 메소드를 제공합니다. 배열의 경우에는 다음과 같이 하며, Arrays.sort(arr); 컬렉션(ArrayList, HashMap, etc...)의 경우에는 다음의 메소드를 호출합니다. Collections.sort(cl); ※ 정렬시 유의해야할 점 컬렉션 또는 배열의 자료형은 primitive(기본형)이거나, Comparable인터페이스를 구현하고 compareTo() 메소드를 오버라이드 해야 합니다.
이전 포스팅에서도 언급 하였듯이, 를 공부하고 포스팅한 글 입니다. 리버스 엔지니어링을 하게 되면, 어셈블리 언어를 다루게 됩니다. 어셈블리 언어의 기본이자 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를 열고 디렉토리의 경로를 지정한 후에 올리디버거를 다시 실행하면 플러그인 기능을 적용시..
- Total
- Today
- Yesterday
- 데이터 과학
- 운영체제
- 카타르
- operating systems
- 카타르 음주
- Data Structure
- 통계학습
- 리눅스
- 데이터 사이언스
- 안드로이드
- Discrete Mathematics
- 알고리즘
- 리버싱
- Algorithms
- 자바
- 리버스엔지니어링
- Reverse Engineering
- Data Science
- 개발
- java
- reversing
- statistical learning
- 대학원
- Machine Learning
- linux
- 이산수학
- 자료구조
- android
- 기계학습
- 머신러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |