현재 임베디드 리눅스 직군이라
리눅스 시스템프로그래밍은 열심히 공부해서 개념도 숙지 잘 되어 있고 코드 짜는 것도 좀 익숙함.
근데 지금 사이드 프로젝트로 하고 싶은게
미래에셋이나 키움증권 HTS 알고리즘 자동매매 봇을 만들어서 내가 쓰고 싶거든?
그러면 윈도우에서 지금 현재 켜져 있는 프로세스 후킹해서 특정 gui 버튼 자동 클릭하게 만들고 이런걸 구현해야 되잖아.(비유하자면 파이썬 셀레니움으로 인터넷 웹페이지 자동 클릭하는 봇 만들듯이)
그러면 윈도우 시스템 프로그래밍 배워야 될 것 같은데, 난 윈도우 프로그래밍은 시발 한번도 해본적이 없거든??
윈도우랑 리눅스랑 시스템 프로그래밍이 서로 어느정도 일맥상통하는 바가 있냐?
예를 들자면 유저레벨 프로세스가 커널한테 시스템콜 던져서 로우레벨 작업들 이루어지고, IPC는 Shared Memory나 Message Queue로 할 수 있고, 실제 코드 짤 때 쓰는 인터페이스도 서로 비슷하고, 프로세스마다 가상메모리 구조도 서로 비슷하고, process initialization 구조도 비슷하고, 파일입출력할 때 file descriptor 이용하고, 이런거 등등
파이썬
이런거 있긴 하네
https://velog.io/@rkfksh/uiautomation-python%EC%97%90%EC%84%9C-windows-GUI-%EA%B0%9D%EC%B2%B4-%EC%BB%A8%ED%8A%B8%EB%A1%A4%ED%95%98%EA%B8%B0
비슷한건 모르겠고 예전에 c샵으로 만들어봤는데 쉬웠음
혹시 이거 썼었음??
https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-overview
한글
https://learn.microsoft.com/ko-kr/dotnet/framework/ui-automation/ui-automation-overview
fork가 안된다는 거 빼고 거의 1:1동작하는 기능들 있음. 파일 디스크립터 대신에 핸들, 파일을 메모리 매핑해서 프로세스 간 데이터 공유, 파이프, 뮤텍스등등
윈도우는 시스템콜을 직접 사용하지 않고 WindowsAPI를 한 차례 거펴서 시스템콜을 호출하는 형식으로 되어 있음
좋네 땡큐
시스템콜 : Windows API IPC : 정답은 Pipe인데 이것도 병신같아서 그냥 소켓으로함. IPC 자체를 잘 안쓰니 뭐 가장 중요한건 상용 OS라 비공개된 정보가 많다는 것임. 물론 대부분 공개 수준으로 되어 있지만 원하는 자료 찾기가 상당히 어려워서 직접 리버스 엔지리어닝 스킬이 필수임. WinAPI 써도 좋지만 그냥 C++ 쓰는게 좋음. 주식프로그램이 웹이 아니라 윈도우 프로그램이라면, 보안 프로그램 필수로 깔릴텐데 그거 우회할수도 있거든? 커널쪽 들어가야 되는데 어.. 이건 리눅스 커널 들어가는 레벨이랑은 입문 레벨이 많이 다름.
고맙다 너네 다들 천사냐?
근데 파이썬 써라
그래야 될 듯 근데 버튼 클릭같은 입력 주는 것 말고도 프로그램에 출력되어 있는 문자열같은걸 긁어오는게 중요한데, 이런거 내가 맘대로 할려면 시스템 프로그래밍 써야될 것 같았음. 키움증권에서 API 제공하던데 그거 알아보는게 먼저일듯
ㅇㅇ API 선임. 긁어오는게 생각보다 쉽지 않음
증권사에서 제공하는 API는 별로임?
'프로세스 후킹해서 특정 gui 버튼 자동 클릭하게 만들고' -> 이거 하려고 리버싱해서 gui 찾고 메시지 루프 찾고 삽질할 생각 하면 아찔해짐
증권사 api 써봐 난 대신증권 썼었는데 COM 으로 되어있었음
걍 api 쓰셈