- 참치군
- ?
- stalk.io
- :: 2013년, 스리는 여섯살
- 웹 강좌
- 점프 투 파이썬
- 요니나의 대학생 재테크
- This is CS50
- 애자일 이야기
- isao의 IT,게임번역소
- 소프트웨어 이야기
- Color Scripter
- 어디를 가든지 마음을 다해 가라
- VisuAlgo
- 서울대 평생교육원
- 몽환
- RegExr: Learn, Build, & Test R…
- Hello, Stranger :D
- I Like Exploit
- Z3alous Security Story
- Project Euler
- Blog
- pieces of code
- window 쪼물딱 거리기
- IT - Informatics Alphabet
- rop
- 국제 정보교육센터 I2sec 대구 1기
- This is the moment. :)
- blackmoon
- z3alous는 세상에 소리 z3alous~
- Acord
- FORENSIC-PROOF
- 어셈블리
- Outsider's Dev Story
- Open Tutorials
- 코드라이언
- 컴퓨터 그래픽스와 3D 프린팅
- HACKABILITY
- Lee, Jae-Hong
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Calling Convention
- 레지스터
- 공간복잡도
- 호출규약
- BOF
- 버퍼오버플로우
- 소켓
- ubuntu
- Visual Studio
- 발표
- 디버깅
- Wireshark
- Packet
- 펌
- C언어
- 시간복잡도
- 파이썬
- 피보나치
- 동대구
- 알고리즘
- Debug
- 창의공학설계
- 베이스
- 오지총
- 블루블랙
- 컴파일러
- 염색
- 추상데이터타입
- 탈색
- Hello World
- Today
- Total
목록프로그래밍 (24)
c0smicb0y
환경: ubuntu 14.04 리눅스에서는 프로젝트의 소스코드들을 받아서 make를 통해 컴파일하여 사용할 때가 많다. 구조가 궁금하면 소스를 다 들여다 볼 수 있지만, 거대한 소스 집합들을 일일이 다 분석하기는 어렵다. 특히, 문서화가 잘 되어있지 않다면 한숨밖에 나오지 않는다. 이럴 때 분석을 수월하게 해주는 도구가 여러가지 있다. ctags, cscope 등등 그 중 프로젝트의 문서를 찾다보면 자주 나오는 doxygen을 사용하는 방법을 설명하고자한다. 먼저 설치할 패키지는 세가지이다. 그냥 doxygengui환경에서 작업이 가능한 doxygen-gui다이어그램을 그려주는 graphviz sudo apt-get install을 통해 모두 설치해주자. 1sudo apt-get install doxyg..
netfilter는 우리가 일반적으로 소켓 프로그래밍을 할 때 쓰이는 인터페이스인 Berkely socket interface의 외부에 존재하는 packet mangling에 대한 프레임워크이다. 쉽게 생각하여 일반적인 소켓 프로그래밍으로는 패킷을 모니터링하는 것은 가능하지만, 패킷을 변조, 드랍하는 것은 불가능하다. 이러한 것을 가능케 해주는 프레임워크가 netfilter이다. netfilter는 크게 다섯 부분으로 구성되어 있으며, 각각의 프로토콜은 hook을 정의한다. 라우터로 들어오기 전인 PREROUTING자기 자신으로 들어오는 LOCAL_IN자기 자신에서 나가는 LOCAL_OUT자기 자신이 라우터 역할을 하여 다른 곳으로 포워딩해주는 FORWARD라우터를 지나 output interface로 ..
환경: Windows 10 Pro 64bit 1. 문제Windows 10 64bit 환경에서 작성한 간단한 디버거로 calc.exe가 제대로 디버깅 되지 않는 사태가 발생하였다. EXIT_PROCESS_DEBUG_EVENT 이후 아무런 이벤트가 발생하지 않는다. 멘토님이 UWP(Universal Windows Platform)이라서 calc.exe를 실행시키면 calc.exe에서 유니버셜 앱인 Calculator.exe를 실행시켜주는 것이라고 하셨다. 그래서 단지 자식프로세스를 디버깅하는 방법을 찾으면 디버깅이 가능할 것 같아서 구글링을 해보았다. MSDN에서는 CreateProcess를 할때 주는 인자 중 하나인 Process Creation Flag에 다음과 같이 명시되어 있다. https://msd..
환경: Ubuntu 15.10 64bit 리눅스에서 효율적으로 개발할 수 있는 IDE인 Qt를 깔아보자 http://download.qt.io/official_releases/qt/ 에서 버전을 확인할 수 있다. 제일 최신인 5.5를 깔아보자 자신에게 맞는 버전을 선택하자 wget으로 받아주자 1wget http://download.qt.io/official_releases/qt/5.5/5.5.1/qt-opensource-linux-x64-5.5.1.runcs 잘 다운로드 되고 있다. 다운로드가 다 되었다. 해당파일에 실행권한을 주자. 그리고 실행! 다음과 같은 창이 뜰 것이다. 다음다음을 눌러서 넘어가자.계정이 있다면 적어주거나 가입하고 싶으면 가입하자. 필자는 스킵하였다. 설치가 끝이났다! 우분투 검..
GDB에서 tui 옵션을 사용하면 좀 더 편리하게 디버깅을 할 수 있다! 다음과 같은 소스가 있다. gdb로 tui 옵션을 주고 열어보자. 다음과 같이 열릴 것이다. main에 브레이크 포인트를 걸어보자. 저렇게 브레이크 포인트가 걸리는 것을 시각적으로 보여준다. r을 통해 프로그램을 실행시키면, 브레이크 포인트에 걸리면서 현재 무슨 명령어를 수행하고 있는지 보여준다! n을 입력하여 한 라인씩 실행시켜보자. 현재 무슨 라인인지 보여준다. 그런데 이 옵션은 컴파일 시 -g 옵션을 통해 디버깅을 허용하는 프로그램에 대해서만 가능하다...
환경: Ubuntu 14.10 자신이 가지고 있는 무선랜카드를 이용하여 무선패킷을 캡처할 수 있다. 컴퓨터에 무선랜카드를 꽂고 ifconfig를 쳐보자 wlan1이 필자가 꽂은 무선랜카드이다. iwconfig를 쳐보자 Mode가 Managed로 설정되어 있다. 패킷캡처를 위해서는 Monitor 모드로 바꾸어주어야 한다. 먼저 무선랜카드를 해제하자. sudo ifconfig wlan1 down wlan1 이 해제된 것을 볼 수 있다. 이제 모드를 Monitor 모드로 바꾸어주자 sudo iwconfig wlan1 mode monitor 모드가 Monitor 모드로 바뀌었다. 이제 다시 wlan1을 장착해주자 sudo ifconfig wlan1 up 이제 wireshark를 켜보자. Interface Lis..
윈도우에서도 리눅스의 gcc처럼 멋지게 커맨드라인에서 컴파일을 할 수 있다. 하지만 그러기 위해서는 예전에 자바 환경 구축을 했던 것 처럼 환경 구축을 해주어야한다. 자바 개발 환경으로 자주 쓰이는 이클립스는 이제 인스톨러가 생겨서 원클릭으로 쉽게 환경 구축이 가능하다. 물론 자바도 커맨드라인에서 할려면 일일이 손으로 해주어야 한다. 그리 어렵지 않으니 잘 따라해보자! 일단 Visual Studio가 설치되어 있다는 전제하에 시작한다. Visual Studio는 드림스파크에서 다운로드 받을 수 있다. https://www.dreamspark.com/ 먼저 제어판 -> 시스템 -> 고급 시스템 설정 -> 환경 변수 를 열어준다. 이런 화면을 볼 수 있을 것이다. 시스템 변수에서 Path를 선택하고 편집하기..
컴퓨터에서 수행되는 대부분의 연산은 레지스터를 이용하여 이루어지게 된다. 하지만 이 레지스터의 개수는 극히 제한적이기 때문에 함수 내에서 또 다른 함수 호출 시에는 레지스터간의 충돌을 고려해야한다. 우리가 사용하는 Windows의 컴파일러들은 이러한 문제를 피하기 위해 아래와 같은 규칙을 사용하여 함수들간의 레지스터 사용의 충돌을 피하고 있다. Platform Caller-save 레지스터 Callee-save 레지스터 x86 Windows EAX, ECX, EDX, ST(0)~ST(7), XMM0~XMM7 EBX, ESI, EDI, EBP x64 Windows RAX, RCX, RDX, R8~R11, ST(0)~ST(7), XMM0~XMM5, High half of XMM6~XMM15 RBX, RSI,..