윈도우에서 돌아가는 프로그램을 만들어보고 싶습니다.
글쓴이: ykw1101 / 작성시간: 수, 2018/03/14 - 7:50오후
안녕하세요. 현재 고등학교 재학 중인 학생인데요, 학교에서 프로젝트를 진행하게 되어 좀 더 심화적으로 프로그래밍을 공부하고 싶어 win32 api와 c언어를 사용해서 윈도우 프로그램을 만들고 싶습니다.
만들고 싶은 프로그램은 대충 설명드리자면 특정 프로그램이 실행될 때 실행을 하면 키보드 방향키로 특정 키를 입력해야 프로그램을 실행되게 하는 것 입니다. 이것을 약 4달 간 하루에 1~2시간 정도, 꾸준히 투자해 진행을 해나가고 싶은데요, c도 부족하고 win32 api는 아는 것 조차 없어서 막막합니다. 저런 프로그램을 만들기 위해 공부해야 할 것들을 말해주실 수 있으신가요? 쉽게 판단하실 수 없으시겠지만 제작 기간도 말씀 해주시면 감사하겠습니다.
그리고 키 패턴을 암호화해서 파일로 저장하는 방식을 생각 중인데 암호화를 하기 위해서는 또 어떤 것들을 공부해야 할까요? 정말 초보라서 아는게 별로 없습니다. 부디 자세한 답변 부탁드려요.
Forums:
자세히 답변을 드리기 위해서는 귀하에 관하여 자세히
자세히 답변을 드리기 위해서는 귀하에 관하여 자세히 알아야 합니다.
특히 (1)귀하의 C언어 능력 및 경험이 어느 정도인지(스스로 "부족하다"고 말하는 사람들 사이에서도 상당히 편차가 있지요), (2)만들고자 하는 프로그램이 요구하는 배경 지식을 얼마나 미리 갖추고 있는지, (3)새로운 지식이나 기술을 습득하는 능력이 어느 정도인지 파악할 수 있어야 제작 기간을 가늠할 수 있겠지요.
물론 인터넷상에 그런 내용을 공개하기는 어려우실 것이고, 경우에 따라서는 본인 스스로도 제대로 파악하지 못하는 경우가 있기 때문에 간단한 상담이 필요할 수도 있겠습니다. 오프라인에서 조언자를 찾아보시는 편이 좋겠습니다.
다만 몇 가지 분명히 해 주시면 다른 분들이 귀하의 목적을 이해하는 데 도움이 될 것 같군요.
Q1. (b)=(c)인 것 같은데, (b)는 (a)와 다른 프로그램인 것인가요? 다시 말해서, 비밀 키 패턴을 거쳐서 실행되는 프로그램이 귀하의 프로그램인가요, 아니면 임의의 다른 프로그램인가요?
Q2. Q1의 답이 "다른 프로그램"이라면, 해당 프로그램의 바이나리를 직접 수정(패치)하는 것이 가능한가요, 아니면 바이나리를 건드릴 수 없고 다른 메커니즘으로 구현해야 하나요?
자세히 썼어야 하는데...죄송합니다.
(1) 많이 모자랍니다. 아직 포인터의 사용하는 이유도 파악을 못하겠고, 배열과 포인터가 섞여있으면 프로그램을 제대로 다루지 못하는 정도라서 많은 연습과 공부가 필요합니다
(2) 배경지식이 전무하다고 생각합니다. 아직 그냥 알아보는 단계라서 배경지식이 없고, 알아가야 합니다.
(3)새로운 지식을 받아들이기가 힘듭니다. 할게 너무 많은 상황이라 여기에 쏟아부을 순 없습니다.
Q1. b와 a는 다르며, a에서 제가 b(임의의 프로그램)를 보호하고 싶다고 설정을 하면 b가 실행될때 키 패턴을 입력하는 것입니다.
Q2.질문을 정확히 이해하지는 못했지만, "다른 프로그램"을 조작하지는 않으려고 합니다. 어떻게 하는지도 모르구요..
이상 답변이었습니다. 정말 너무나 초보인 상황에서 상상으로만 목표를 잡아본 것이라 허무맹랑하다고 느끼실 것 같습니다.
moogi.new21.org 에 들러 보셔요.
moogi.new21.org 에 들러 보셔요. 윈도 프로그램 잘하는 분 홈페이지입니다.
세벌 https://sebuls.blogspot.kr/
무엇을 만들던 처음 하시는 분이 win32 api를
무엇을 만들던 처음 하시는 분이 win32 api를 사용해서 개발하는 것은 비추입니다.
C/C++로 개발하시고 싶으시면 Embarcadero C++ builder, Qt, GTK+ 등을 찾아보시기 바랍니다.
상용 제품의 경우 Evaluation을 찾아보면 되고요 오픈 소스에도 좋은 툴이 많아요.
먼저 구현 리스트를 만드시고 그 각각의 기능 구현에 관한 자료를 찾아보세요. 그리고 그것들을 어떻게 연결할 지 고민해 보셔야 겟죠.
참고해보세요.
//
- 키보드와 마우스 후킹'을 하거나. 다른 프로세스의 핸들을 얻어서. 메모리에 접근하는 방식은 정상적인 방법이 아닐 수 있습니다. 되도록. 허가 받은 후에 하시거나. 윈도우에서 제공하는 방법이 안전합니다.
- 키 다운 메시지는 SendMessage() PostMessage() 로 전달 가능
- 키 입력 확인은 WndProc() PreTranslate() 등에서 확인 가능
- GetAsyncKeyState() 등으로도 입력 확인 가능
- Direct Input 등을 활용해도 입력 확인 가능
- mouse_event() SendInput() 등에 함수로 이벤트 전송 가능
- accessibility 접근성 호환 방식에 대한 내용도 있는거 같습니다.
- 윈도우에 BitLocker 서비스가 있습니다.
암호화 프로그램이 하드 드라이브에 자동으로 적용됩니다.
GetAsyncKeyState function
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646293(v=vs.85).aspx
[Tip] SendMessage 와 PostMessage 함수에 대하여...
http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=692
메모장을 예제로
http://tipssoft.com/bulletin/board.php?bo_table=QnA&wr_id=7984
SendMessage()로 메시지를 보내서 'a' 라는 문자를 노트패드에 ?
https://kldp.org/node/42613
mouse_event function
https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms646260(v=vs.85).aspx
SendInput function
https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms646310(v=vs.85).aspx
Using Mouse Input
https://msdn.microsoft.com/en-us/library/windows/desktop/ms645602(v=vs.85).aspx
Virtual Keyboard 도 참고해보세요.
https://www.codeproject.com/search.aspx?q=virtual+keyboard&x=0&y=0&sbo=kw
//
ARIA 블록암호 알고리즘 - KISA
https://seed.kisa.or.kr/iwt/ko/sup/EgovAriaInfo.do
도대체 한국형 암호화 기술인 ARIA라는 건 뭔가요?
https://kldp.org/node/107453
JAVA 자바 ARIA 아리아 암호화 복호화 방법 알고리즘
http://aljjabaegi.tistory.com/203
[시큐어코딩] 암호화 알고리즘 및 소스
http://openeg.co.kr/464
ARIA 블럭 암호 알고리즘
http://tmdgus.tistory.com/149
ARIA 128 보안 알고리즘
https://open.egovframe.go.kr/cop/bbs/selectBoardArticle.do?bbsId=BBSMSTR_000000000013&nttId=14275
대칭키 암호화 알고리즘, AES
http://blog.securekim.com/2015/06/aes.html
//
직업 학교에서 무료로 교육 해줘요.
프로그래밍 학원도 있구요.
Win API http://soen.kr/
데브피아 VC++ http://www.devpia.com/VC++.MAEUL
코드 프로젝트 http://www.codeproject.com/
코드 구루 https://www.codeguru.com/
GPUGStudy http://gpgstudy.com/
가마수트라 https://www.gamasutra.com/
게임 데브 https://www.gamedev.net/
네히 OpenGL http://nehe.gamedev.net/
OLC Center (C 언어) http://olc.kr/main/index.jsp
Qt SDK https://www.qt.io/download
Flash Developer SDK http://www.flashdevelop.org/wikidocs/index.php?title=Main_Page
Flex SDK https://www.adobe.com/devnet/flex/flex-sdk-download.html
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기