본문 바로가기

Business/MBUSTER

[매크로가 알고싶다 #2] - 매크로가 콘서트 1열을 잡는 방법

[매크로가 알고싶다 #1] - 콘서트 1열의 비밀
[매크로가 알고싶다 #2] - 매크로가 콘서트 1열을 잡는 방법
[매크로가 알고싶다 #3] - 매크로를 잡기 위한 방안
[매크로가 알고싶다 #4] - 매크로 경찰 MBUSTER, 다 잡아낸다!

 

매크로가 알고싶다: 매크로가 콘서트 1열을 잡는 방법
매크로가 알고싶다: 매크로가 콘서트 1열을 잡는 방법

 

안녕하세요 STCLab 국내마케팅팀의 조이입니다.

지난주 콘서트 1열의 비밀이라는 제목으로 매크로 악용이 만연한 사회를 소개드렸습니다. 우리가 콘서트 1열을 잡지 못하는 이유가 단순히 손이 느려서가 아니라 매크로라는 프로그램 때문이었죠. 이번주에는 적을 알면 백전백승,  매크로가 동작하는 원리와 작동 과정에 대해 설명드리며 다음주 3편에서는 이를 막기 위한 방안들을 차례로 설명드리겠습니다.

 

1. 매크로 유형

매크로 프로그램은 키보드 매크로와 마우스 매크로로 나뉩니다.

 

키보드 매크로(키 매크로)는 메뉴에 따라 키를 눌러서 키보드가 반복적으로 수행할 수 있도록 사용자가 정의한 일련의 동작을 의미합니다. 언제나 동일 키를 누르게 되므로 키 조작 순서를 미리 등록하는 것이 특징입니다. 복잡한 작업 처리도 간편하게 수행하는데 도움이 되며, 긴 클릭수 또는 키 입력 패턴이 필요합니다.

마우스 매크로는 마우스 입력을 자동으로 대신해주는 프로그램으로, 녹화된 마우스의 움직임을 그대로 반복해 실행합니다. 주로 클릭 입력을 빠른 속도로 계속하거나, 컴퓨터 게임 활동에서 사용됩니다. 

 

2. 매크로 제작 방법

일반적으로 매크로 제작 방법은 프로그램을 통해 제작이 가능합니다. 대표적인 프로그램으로는 G매크로, 오토핫키 등이 있습니다. 또한 파이썬 같은 프로그래밍 언어를 활용해 전문적으로 제작도 가능합니다.

 

파이썬으로 만들어지는 매크로 프로그램 (출처. 크몽)
파이썬으로 만들어지는 매크로 프로그램 (출처. 크몽)

 

파이썬을 이용한다면 파이썬 프로그램으로 자신이 만들고 싶은 키보드의 ID 값과 키 값을 설정 및 조합하여 세부적인 매크로 조건과 행동을 커스터마이징하여 제작할 수 있습니다. 

 

G매크로 프로그램 모습 (출처. G매크로 커뮤니티)
G매크로 프로그램 모습 (출처. G매크로 커뮤니티)

 

G매크로를 이용해 매크로를 만들 경우, 키보드 매크로와 마우스 매크로 중 어떤 요소를 사용할 것인지에 대한  결정이 필요합니다. 이후 구체적인 시간을 선택하고 프로그램을 활성화 하는 방식으로 이루어집니다. G매크로는 직관성 있는 인터페이스와 사용감을 기반으로 누구나 손쉽게 매크로를 제작할 수 있다는 장점이 있지만 키보드와 마우스 동작 외에는 다른 기능을 조작할 수 없다는 단점이 있습니다.

 

매크로 익스프레스프로그램은 IF문, FOR문의 사용이 가능하며 픽셀인식과 다양한 윈도우 이벤트를 발생하고 캐치합니다. 또한 복잡한 로직도 가동성이 뛰어난 반면, 유료라는 점과 조금 어려운 난이도가 있다는 단점이 있습니다.


오토핫키 프로그램은 난이도가 있는 만큼 세밀한 작업이 가능하며 복잡한 매크로도 구현이 가능합니다.

 

3. 매크로 프로그램의 원리

매크로 아이콘
매크로 아이콘

 

매크로 프로그램의 원리는 코딩을 단순화하고, 코드 유지 관리성을 개선하며, 코드 중복을 줄이기 위해 재사용 가능한 코드 블록을 만드는 것입니다. 다음은 매크로 프로그램의 원리에 대한 분석입니다.

(1) 추상화 및 재사용 가능성: 매크로의 기본 원칙은 추상화입니다. 동일한 명령어 집합을 반복해서 작성하는 대신 해당 명령어를 캡슐화하는 매크로를 만들면 됩니다. 이러한 추상화를 통해 명령어 그룹에 이름을 지정한 다음 해당 명령어가 필요한 곳이면 어디에서나 그 이름을 사용할 수 있습니다. 이렇게 하면 프로그램의 여러 위치에서 매크로를 호출할 수 있으므로 재사용성이 향상됩니다.

(2) 코드 DRY(Don't Repeat Yourself): 매크로 사용의 주요 목표 중 하나는 DRY 원칙을 준수하는 것입니다. DRY는 코드 중복을 피하자는 취지입니다. 같은 코드를 여러 번 복사하여 붙여넣는 대신 매크로를 한 번 설정한 다음 필요할 때마다 사용하는 것입니다. 이렇게 하면 중복된 코드의 불일치로 인한 오류 발생 가능성을 줄일 수 있습니다.

(3) 매개변수화: 매크로는 종종 매개변수화를 허용해 매크로를 사용할 때 다양한 입력을 제공하여 매크로의 동작을 사용자 지정할 수 있습니다. 매개변수를 사용하면 매크로를 보다 유연하고 다양한 시나리오에 맞게 조정할 수 있습니다. 예를 들어, 수학 연산을 수행하는 매크로를 정의하고 연산할 숫자를 매개변수로 전달할 수 있습니다.

(4) 단순화: 매크로는 복잡하거나 반복적인 작업을 단순화할 수 있습니다. 필요할 때마다 복잡한 코드 로직을 처리하는 대신 매크로에 해당 로직을 캡슐화할 수 있습니다. 이렇게 하면 코드가 더 간결해지고 읽고 이해하기 쉬워집니다.

(5) 재사용 가능한 코드 라이브러리: 시간이 지남에 따라 더 많은 매크로를 만들면 다양한 프로젝트에서 활용할 수 있는 재사용 가능한 코드 라이브러리를 구축할 수 있습니다. 이렇게 하면 개발 속도가 빨라지고 프로젝트 전반에서 일관된 관행을 유지할 수 있습니다.

 

4. 매크로 작동 과정

매크로 아이콘
매크로 아이콘

 

프로그램 내에서 매크로를 만들고 사용하는 단계 즉, 매크로의 작동은 어떤 과정을 거칠까요? 

(1) 매크로 정의: 매크로는 프로그래밍 언어에서 제공하는 특정 구문을 사용하여 정의됩니다. 매크로 정의 내에서 캡슐화하려는 명령어 집합을 지정합니다. 여기에는 변수, 제어 구조, 함수 호출 등이 포함될 수 있습니다.

(2) 매개변수화(선택 사항): 프로그래밍 언어가 매개변수화된 매크로를 지원하는 경우 매크로 정의 내에서 매개변수를 정의할 수 있습니다. 이러한 매개변수는 매크로를 사용할 때 제공될 값의 자리 표시자 역할을 합니다. 매개변수화된 매크로는 다양한 시나리오에 맞게 매크로의 동작을 사용자 지정해 매크로의 유연성과 재사용성을 향상시킵니다.

(3) 매크로 호출: 매크로를 사용하려면 코드에서 해당 이름으로 매크로를 호출하기만 하면 됩니다. 매크로가 매개변수화된 경우 매개변수에 필요한 값을 제공하면 됩니다.

(4) 전처리 단계: 프로그램이 컴파일되거나 해석되기 전에 전처리 단계를 거칩니다. 이 단계에서는 매크로 호출이 확장되므로 각 매크로 호출이 매크로에 정의된 실제 코드로 대체됩니다. 매크로가 매개변수화된 경우 제공된 값은 매개변수가 사용되는 매크로 코드로 대체됩니다.

(5) 확장 코드: 전처리 단계가 끝나면 프로그램에는 매크로 호출의 결과로 확장된 코드가 포함됩니다. 이 확장 코드는 매크로 정의의 명령어와 로직을 마치 프로그램에서 직접 작성한 것처럼 통합합니다.

(6) 컴파일/해석: 이제 확장된 코드가 포함된 프로그램은 프로그래밍 언어의 컴파일러 또는 인터프리터에 의해 컴파일되거나 해석됩니다. 이 단계에서 프로그램은 확장된 코드를 수동으로 작성한 것처럼 취급됩니다.

(7) 실행: 컴파일되거나 해석된 프로그램이 실행되고 매크로의 동작이 프로그램의 전체 기능의 일부로 구현됩니다.

프로그래밍 언어마다 매크로를 구현하는 메커니즘이 다르며 사용 가능한 제어 수준과 기능도 다를 수 있다는 점에 유의해야 합니다. 일부 언어는 복잡한 메타프로그래밍을 지원하는 보다 정교한 매크로 시스템을 제공하는 반면, 다른 언어에는 코드 재사용 및 단순화에 주로 초점을 맞춘 단순한 매크로 시스템이 있기 때문입니다.

 

매크로를 만드는 방법은 복잡하지만 여러 프로그램과 언어로 만들 수 있다는 점에서 매크로 제작에 대한 진입장벽이 점점 낮아질 것으로 보입니다. 

 

 

이번 포스팅에서는 매크로의 원리와 작동 과정에 대해 설명 드렸습니다. 어렵지만 프로그램만 있으면 바로 사용이 가능하고,  전문 조직이 아니더라도 컴퓨터 프로그램에 관심이 많은 사람은 제작 영상을 보면서 직접 만들 수 있어 악용 가능성이 점점 높아지고 있는 실정입니다. 이러한 매크로를 막기 위해 사회적 방안부터 기술적 방안들까지 다양하게 논의되고 있습니다.

다음주에는 매크로가 알고싶다 3번째 포스팅, 매크로를 잡기 위한 방안으로 찾아와 법안, 신고 서비스, 방지 기술 들을 설명드리겠습니다. 알찬 정보들로 찾아올테니 많은 관심 부탁드립니다!

 

 


참고 기사

[이슈분석]매크로는 무엇인가, 누구나 쉽게 악의적 사용 가능