- 참치군
- ?
- 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 | 31 |
- 발표
- 컴파일러
- 탈색
- Packet
- Debug
- 베이스
- Wireshark
- C언어
- ubuntu
- Visual Studio
- Hello World
- 오지총
- Calling Convention
- 염색
- 디버깅
- 창의공학설계
- 동대구
- 추상데이터타입
- BOF
- 공간복잡도
- 펌
- 피보나치
- 버퍼오버플로우
- 시간복잡도
- 알고리즘
- 블루블랙
- 호출규약
- 파이썬
- 소켓
- 레지스터
- Today
- Total
목록프로그래밍/Windows (5)
c0smicb0y
환경: 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..
윈도우에서도 리눅스의 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,..
스택을 이용하여 파라미터를 전달할 때 스택에 파라미터를 어떠한 순서로 넣을 것이며 또한 전달되어진 파라미터를 어느 곳에서 해제할 것인가에 따라 여러 가지 방식이 잇으며, 이를 Calling Convention(호출규약)이라고 부른다. __cdecl이 Calling Convention은 C, C++ 프로그램에서 파라미터 전달 시 기본적으로 사용되는 방식으로, 파라미터 전달은 오른쪽에서 왼쪽으로 이루어지며, 프로시저를 호출한 쪽(Caller)에서 파라미터에 대한 해제까지 책임져주게 된다. 12345678main(){ sum(1, 2);} int sum(int a, int b){ return a + b;}cs 123456789101112main: push 2 push 1 call sum add esp, 8su..
ShellExecute() 와 CreateProcess() 는 모두 보기에는 프로세스를 만들어주는 api처럼 보이지만 차이점이 있다. MSDN에는 CreateProcess()를 다음과 같이 설명하고 있다.Creates a new process and its primary thread. The new process runs in the security context of the calling process.새로운 프로세스와 그 최우선의 스레드를 생성한다. 그 새 프로세스는 호출하는 프로세스의 보안 컨텍스트 안에서 구동된다. ShellExecute()는 다음과 같이 설명되어 있다.Performs an operation on a specified file. 특정한 파일의 명령을 수행한다. CreateProce..