일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BOF
- wnourefresh
- rfc5508
- architecture
- edge trigger
- level trigger
- mvwin
- DOCKER-USER
- 풀이
- NAPT
- Docker
- REDIS
- LOB
- ioctl
- packet flow
- .nret core 배포
- vtable
- epoll_wait
- Compiler
- C언어
- .net core 7
- wrefresh
- epoll
- packet filter
- cbpf
- 취약점
- doupdate
- iptables
- ncurses
- 어셈블리어
- Today
- Total
목록Computer Science (129)
Tuuna Computer Science
문제닷! ???의 값을 구하라는 문제다 처음 쓰레드를 몰랐을 땐 와 저거 어떻게 풀지였는데 윈도우 쓰레드를 배우고 난뒤엔 semaphore께서 이걸 풀어 주시네... ㅎㅎ 일단 내가 짠 알고리즘은 세마포어를 이용해서 i x i 부분이 홀수일 때와 짝수일 때로 나누어서 풀었다. 참고로 이 코드는 소켓 프로그래밍 공부하다가 쓴 코드인데 직접짜기 귀찮아서 예제코드에서 수정해서 썼다. ㅎㅎ 밑엔 코드 ~,~ 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include #include #include unsigned WINAPI Read(void * arg);unsigned WINAPI Accu(vo..
12345678910111213141516171819202122232425262728293031#include #include #include int main(int argc, char** argv){ while (1) { HWND hWnd = FindWindow(NULL, TEXT("Steam")); if (hWnd) { DWORD Processid; GetWindowThreadProcessId(hWnd, &Processid); //hwnd로 프로세스 ID를 얻어옴 printf("\n탐지 성공\n\n"); printf("\n불법 프로그램을 강제종료 합니다. "); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Processid); //The han..
이는 윈도우 쓰레드를 이용해서 디버깅을 힘들게 해봤는데 그래도 쉬울 것이다. 함수를 잘 찾아보자
일단 위 메모리 구조를 보자 어셈블리로 코딩을 해보면 .section .data에 데이터공간을 선언하고 .section .text에 코드를 적은적이 있을 것이다. 그리고 완성된 소스파일을 어셈블하고 링크작업을 한 뒤 프로그램을 실행하면 메모리에 프로그램이 올라가게 될 것이다. 그럼 이 프로그램이 어떻게 메모리에 올라가느냐 일단 우리가 적은 코드 즉, .section .text섹션은 메모리의 0x08048000에 적재될 것이다. 그리고 .section .data영역도 그 다음에 선언된다. 그 다음은 .bss영역이 선언된다. 또한 그 위엔 LIFO식인 stack영역이 존재하고 stack 영역 위엔 프로그램의 인자가 적재된다. 즉 프로그램의 이름(NULL문자로 끝나는)과 프로그램실행시 넘기는 각종 인자가 메모..
파일 다루기 유닉스 파일 :: 프로그램에 의해 생성되며 바이트의 연속된 스트림으로 읽을 수 있다. 파일에 주어진 고유한 이름(번호)으로 파일에 접근할 수 있다 -> 파일 디스크립터 open의 시스템 콜 :: 5번 open은 파일의 이름, 모드, 권한등을 인자로 받는다. 파일의 이름은 %ebx에 저장하고 모드는 %ecx에 저장한다. 읽기로 연다면 0을 쓰기위해서 03101을 저장하면 된다. (반드시 가장 앞에 0을 붙여야 함) 권한은 %edx에 저장 ex) 0666 모든 유저 읽기 쓰기 가능 리턴값은 %eax에 저장된다. :: 파일의 번호 리턴 read의 시스템 콜 3번 :: 리턴 값 읽어들인 바이트 수 파일 지정자 :: %ebx에 저장 읽어들인 데이터가 저장될 버퍼의 주소 :: %ecx에 주소값을 저장 ..
아래 예제의 잘못된 점을 찾으세요! 123456789101112131415#include int main(void){ int arr[5] = { 1,2,3,4,5 }; int *ptr = arr; int i; for (i = 0; i
우리는 C 언어에서 가장 어려운 부분을 포인터라고 지목합니다. 그 이유는 메모리를 하드웨어적으로 접근해서 직접 다루기 때문입니다. (C++이나 Java의 경우 메모리를 어떻게 관리하는지는 제가 배우지 않아 넘기고.) 그래서 C 언어가 High-Level언어 임에도 이 때문에 Low-level처럼 보일 수도 있습니다. 하지만 포인터의 개념을 잡은 상태에서 왜 우리가 포인터를 사용해야함을 이해한다면 더 이상 포인터는 단지 관리하기 편한 하나의 변수이지 않을까 생각합니다. 일단 포인터를 왜 써야함을 설명하지 전에 메모리에 대해서 조금 알아보자 메모리는 고정된 크기를 가지는 연속된 숫자를 가지는 저장공간의 연속이다. 예를 들어 256개가 있는 번호가 매겨진 우편함이라고 생각하면 쉬울 수 있다. 하지만, 우편함에..
전에는 재접속 안되는 1대1 채팅프로그램이였는데 이젠 놉 책의 예제를 좀 수정해서 방분리 개념이 잡힌 채팅프로그램을 만들어봤습니다. 1차원배열을 이용했었다면 2차원 배열로 여러개의 방개념을 잡고 관리했습니다. 아 전 쓰레드를 이용해서 환경을 조성했는데 나중엔 epoll이나 IOCP로 구성해보고싶네요 ㅋㅋ OS : linux 실행법 :: server program인 ./room_chat_server 해주세요 그리고 client program인 ./room_chat_clnt 해주시면 됩니다. 그리고 원하는시는 채팅방에 참여하면 됩니다. 다음엔 전송 시간하고, 현원등 깔끔한 인터페이스를 제공해보고 싶네용 ㅋ.ㅋ (당구장표시) 코드를 마음대로 뜯어주세요
주로 배열을 이용해 만든 RPG게임입니다. 실행 방법은 이동키 wasd와 공격키 i,o가 존재합니다. 소스코드도 첨부해 드렸으니 원하는 사람은 수정해서 사용하세용
PE파일 포맷에 대해 다룰것이다. 필자가 공부한것을 정리하니 글이 이상할 수 있다. 일단 먼저 IMAGE_DOS_HEADER부터 보자. 여기서 볼건 Signature과 Offset to New EXE Header이다. signature은 윈도우의 PE스펙을 제작한 MZ를 나타내고 Offser to New EXE Header은 다음 헤더인 IMAGE_NT_HEADER가 파일크기상에서 어떤 위치에 자리잡는지 나타낸다. 이제부턴 IMAGE_NT_HEADER이다. IMAGE_NT_HEADER은 3개의 구조체로 나뉘는데 첫 번째는 Signature이다 이는 PE를 나타낸다. ㄴ 두 번째 구조체는 IMAGE_FILE_HEADER구조체이다. 좀 더 살펴 보겠다. 여기서 눈 여겨볼게 몇개 존재한다. 먼저 Machine..