프로그래밍/Talk
IDA PRO는 신이다.
CrackMe 풀면서 올리디버거 쓰다가 한번 써봤는데 진짜 그래프 모드만 봐도 달달하네요. 디버깅 모드 키면 지금 깜빡깜빡 거리면서 어디로 점프뛸지도 알려주고, F5 누르면 C언어 비슷하게 복구도 해주고 (디컴파일) Main 함수도 찾아주고.. 진짜 효자가 따로 없습니다. 이 프로그램 쓰면서 아쉬운건 제 지능이네요 ㅋㅋㅋ.. 윈도우 API도 귀찮아서 공부안하고 VB6.0 으로 만들어진 구닥다리 프로그램 구조도 잘 모르고.. 이건 몰라도 되긴한데 IDA도 기능이 엄청 많은거 같은데 좀 더 공부해봐야 겠습니다. IDA Pro 쓰면서 딱 한가지 아쉬웠던 점은 프로그램에 패치(어셈블) 하는 단축키가 없다는 점이였네요. 디버깅 하면서 어셈블리 코드 바꾸는데 Edit - Patch - Assemble 을 계속 눌러..
프로그래밍/VSCode
VMWare VSCode SSH 원격으로 연결해서 프로그래밍 하기
안녕하세요 파일입니다. 오늘은 VMWare 안에서 돌리는 리눅스와, 윈도우가 깔린 메인 PC에서 VSCode를 실행해서 SSH로 원격으로 코딩하는 방법을 알아 보겠습니다. 이렇게 하면 메인 PC에서 VSCode로 무언가 작성해서 컴파일 후 프로그램을 실행시키면, 실제로는 SSH로 연결되어 있는 VMWare안의 리눅스 쪽에서 코드가 실행되서 리눅스 환경에서 실행한것과 동일한 효과를 낼 수 있게 됩니다. 즉 느려터진 가상머신 VMWare안에서 VSCode 키고 코딩하는게 아니라 윈도우쪽에서 VSCode켜서 빠르고 편리하게 코딩한다음에, 실행은 실제로 SSH로 연결된 리눅스 쪽에서 실행시키는 겁니다. 일종의 원격(?) 프로그래밍 이라고 볼 수 있겠네요. Why Use? 윈도우에서 리눅스 환경으로 실행하고 싶으..
프로그래밍/Talk
2023 강의 작성 고민중입니다.
현재 제 블로그에서 제대로 강의 작성된 글이 C랑 Python 정도 밖에 없습니다. 사실 완성도가 제일 높은건 C고 Python은 2달도 안되는 기간에 작성해서 내용이 좀 허접합니다. 그래서 추가로 강의글을 작성해볼까 하는데 현재 작성에 고민중인 내용은 아래와 같습니다. 1. 시스템 소프트웨어 2. 자료구조 3. C# 4. Java 사실 1, 2 는 강좌라기 보다 그냥 강의 노트 정리에 가까울 거 같고 C#이나 Java 중에 더 작성하기 만만해보이는건 자료가 좀더 많은 Java인데 실제로 제가 많이 써본건 C#이라 고민이 되는군요 총총... 기록 안하면 또 다 까먹어버릴탠데.. 고민을 좀 해봐야겠습니다
프로그래밍/Talk
아 내가 해냈다. [과제 제출 성공]
앞에서 시달리던 과제 제출에 드디어 성공했습니다. 이걸 제출 성공하네.. 빨리 C랑 C++ 망하고 Rust 가 다 독차지 해버렸으면 좋겠네요 ㅎㅎ. 아마 이번 과제는 난이도상 제출 성공 인원이 그래봤자 10명 안밖이 아닐까 싶습니다. 요새 C언어 과외까지 해서 나름 C언어 내용에 꾀차고 있다고 생각했는데 이중 연결 리스트 구현에서 제 머리가 터져버렸습니다 진로 관련해서는 이미 있는거 뜯는 보안쪽이나(디어셈블리) Python, Java 같은 High Level 개발자가 마음에 갑니다. 이번에 OS 스케줄러 구현에 시달리면서 느꼈는데 커널 개발이나 시스템 프로그래밍은 제 분야가 아닌거 같아효 ㅎㅎ 그냥 추상화된 문자열 타입이나 Syntatic Sugar 이 행복하단걸 몸소 채감했습니다. 그리고 리눅스에서 C..
프로그래밍/Talk
[C/C++] 연결리스트 구현은 되도록 라이브러리(인터넷)를 사용합시다
혹시 본인이 과제로 연결 리스트를 구현할일이 생겼다? 그러면 본인이 정말 머리가 잘돌아가는 유능한 프로그래머가 아니라면.. 되도록 인터넷이나 라이브러리를 참고해서 구현하는것을 추천드립니다. (사실 참고하라곤 했는데 복붙하고 유사도 검사 피하기 위해 변수 이름 정도만 바꾸는게 편합니다.) 아니 직접 구현하는게 자기 실력느는데 무슨 소리냐? 네 이것도 맞습니다.. 당연히 자기가 직접 구현해봐야 실력이 늘지요 ㅎㅎ; 근데 단일 연결리스트는 직접 구현한다고 쳐도, 이중 연결 리스트는 정말 제대로 생각했는데도 C/C++ 동적할당 & 포인터 특성상 NULL 포인터를 참조한다던가, 잠정적으로 어디선가 문제가 터져서 공포의 Segmentation Fault(메모리 참조 오류) 를 만날 가능성이 높습니다. 그러므로 되도..
프로그래밍/Talk
[C] 쓰레드 스케줄러 과제 구현 90% -> 50%...
pthread 계열의 Thread 함수를 직접 구현하고, 스케줄러까지 구현해서 쓰레드를 Round Robin 형태로 스케줄링 실행하는 과제를 진행하고 있습니다. 저번에는 비슷하게 시스템 콜로 Tree를 구현했었는데 이번건 진짜 말도 안되게 어렵네요. 머리가 아파집니다. 분명 다 제대로 구현했다고 생각했는데 thread_join() 구현하는 부분에서 계속 프로그램이 터지네요 ;; 과제하라고 테스트 케이스를 던져줬는데 계속 내용도 바뀌고 출력이 어떻게 나와야 한다는 것도 없으니 제대로 진행하고 있는지도 모르겠고 짜증만 납니다 ㅡㅡ. C로 연결리스트도 만들고, 컨텍스트 스위칭도 구현해보고, clone() 으로 쓰레드도 생성해보고 사실 초반에 잘 돌아갈때까진 나름 즐거웠는데 join 에서 막히니 시간은 계속 뺏..
프로그래밍/C++
[Arduino/C++] 시리얼 모니터 데이터 공백구분으로 입력받기, 명령어 처리
// 생성자의 여러번 호출을 막기 위해 전역 변수로 String 변수 2개를 호출한다. String input; String args; void setup() { Serial.begin(9600); } void loop() { //시리얼 데이터가 들어왔을때 (버퍼에 내용이 채워졌을때) 작업 if(Serial.available() > 0) { input = Serial.readStringUntil('\n'); //엔터까지 입력받기 Serial.println("INPUT : " + input); for(int i = 0; i < input.length(); i++ ) { char c = input[i]; //공백이 아닌경우만 문자열에 결합시킨다. (담아준다.) if(c != ' ') { args.concat..
프로그래밍/C++
[C++] 연산자 오버로딩 (Operator Overloading)
* 본 글을 읽기 전에 미리 구조체와 C++의 Class 개념에 대해 미리 알고 학습을 하는 것을 권장드립니다. 일반적으로 C언어에서 사용하는 +, -, ==, [] 와 같은 기본 연산자들은 모두 C언어에서 기본적으로 정의 되어 있는 데이터 타입 (int, double, char 등) 에서만 사용 가능한 연산이였기에, 사용자가 정의해서 만든 타입인 구조체로 만든 구조체 변수의 경우 이러한 연산자를 적용할 수 없었습니다. #include struct point{ int x; int y; }; int main(){ struct point pos1 = {10,20}; struct point pos2 = {20,40}; if(pos1 == pos2){ //오류 발생 printf("same"); } return ..
이모티콘창 닫기
울음
안녕
감사
당황
춤
피폐