일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발 환경 준비
- IAT Hooking
- Msvcrt.dll
- packet capture
- 시스템해킹
- apphelp.dll
- pcap packet
- 해킹
- vcruntime140.dll
- pcap packet capture
- Windows Kernel
- 포너블
- 윈도우 커널 드라이버
- Network Byte Order
- 네트워크 바이트 오더
- arudino
- 윈도우 커널 디버깅
- HackCTF
- hacking
- ucrtbase.dll
- windows kernel debugging
- Windows
- Windows Kernel Debug
- 바이트 오더
- C언어 패킷캡쳐
- Windows Kernel Driver
- 개발하기
- pwnable
- 윈도우 커널
- vcruntime.dll
- Today
- Total
목록C/Serial Monitor (10)
미친해커
이제 대부분의 기본적인 함수는 완성되었다. 이제 이 함수들을 사용하여 시리얼 포트로부터 데이터를 받아 출력해보는 코드를 작성해보자 #include "SerialMonitor.h" int main(int argc, char *argv[]) { if (argc < 2) { printf("Usage : Program.exe [Com Number]\n"); return -1; } DWORD ComNumber = atoi(argv[1]); HANDLE hComm = GetCommHandleByComNumber(ComNumber); if (hComm == INVALID_HANDLE_VALUE) { return -1; } if (SetBaudRate(hComm, 115200) == FALSE) { return -1;..
저번 포스팅에서 Baud Rate를 설정하는 함수를 작성해보았다. 그 외에도 많은 설정 값들이 존재하지만 설정하지 않고 기본 값들을 사용해도 큰 문제가 없기 때문에 다른 설정 값들은 맨 마지막에 다시한번 다루려고 한다. 우선 데이터를 전송 및 수신 하는 함수를 만들어보자. 사용되는 Windows API는 다음과 같다. WriteFile function (fileapi.h) - Win32 apps Writes data to the specified file or input/output (I/O) device. docs.microsoft.com ReadFile function (fileapi.h) - Win32 apps Reads data from the specified file or input/outpu..
이전 포트팅에서 정의한 함수를 분석해봤다면 기본적으로 Baud Rate가 115200으로 설정되는 것을 알수 있을 것이다. 하지만 다른 Baud Rate를 사용해야 할 일이 생길수도 있기 때문에 이번에는 Baud Rate를 원하는 값으로 설정하는 함수를 만들어보기로 한다. 이번에 사용되는 Windows API와 구조체는 다음과 같다. GetCommState function (winbase.h) - Win32 apps Retrieves the current control settings for a specified communications device. docs.microsoft.com SetCommState function (winbase.h) - Win32 apps Configures a commun..
기본적인 시리얼 포트와의 통신 방법은 다 알아봤다. 이제 배운 지식을 활용해 간단한 모듈을 만들어보는 것이다. 우선 첫번째로 시리얼 통신을 위해서는 시리얼 포트의 핸들이 필요하고 핸들을 얻기 위해서는 통신하고 싶은 시리얼 포트의 번호를 알아야한다. 즉 이번에는 시리얼 번호를 이용해 해당 시리얼 포트의 핸들을 반환해주는 함수를 만들어본다. 사용되는 Windows API와 구조체는 다음과 같다. CreateFileW function (fileapi.h) - Win32 apps Creates or opens a file or I/O device. The most commonly used I/O devices are as follows:\_file, file stream, directory, physical d..
사실 이 내용을 올려야 하나 말아야 하나 고민을 했지만 결국 번외로 올리기로 결정했다. 아마 지금까지 올린 코드만보고 컴파일 했을 때 정상적으로 출력되는 사람이 있는 한편 그렇지 않은 사람도 있을 것이다. 나는 이 블로그를 쓰기 전 처음에 미리 시도해봤을 때는 출력이 이상하게 되었다, 그래서 CommTimeouts이라는 것을 설정해줘야 한다는 글을 발견하였고 실제로 이것을 설정하니 오류가 해결되었다. 하지만 블로그를 쓰면서 다시 한번 테스트하니 해당 오류가 발생하지 않았다. 그래서 이건 간단하게 남기려고한다. #include #include int main(int argc, char *argv[]) { HANDLE hComm = CreateFileA("\\\\.\\COM3", GENERIC_READ | ..
데이터 쓰기까지 끝난다면 이제 확실하게 간단한 모듈을 만들 준비는 끝난다. 테스트를 위해 아두이노의 코드를 다음과 같이 변경했다. void setup() { Serial.begin(115200); } void loop() { if (Serial.available()) { char name[16] = { 0, }; Serial.readBytesUntil(0x00, name, 16); char buffer[32] = { 0, }; sprintf(buffer, "Hello %s!", name); Serial.println(buffer); } } 시리얼 포트로부터 아두이노가 메시지를 받고 그 앞에 Hello를 붙여서 PC로 전송해주는 코드이다. 이렇게 PC와 아두이노가 정상적으로 통신하는지를 확인할 수 있게된다..