코드 삽입은 Windows에서 일반적입니다. 애플리케이션은 자체 코드의 일부를 실행중인 다른 프로세스에 "주입"하여 동작을 수정합니다. 이 기술은 선 또는 악에 사용할 수 있지만 어느 쪽이든 문제를 일으킬 수 있습니다.
코드 삽입은 일반적으로 DLL 삽입이라고도합니다. 삽입 된 코드는 종종 DLL (동적 링크 라이브러리) 파일 . 그러나 응용 프로그램은 DLL이 아닌 다른 유형의 코드를 프로세스에 삽입 할 수도 있습니다.
코드 삽입의 용도
코드 삽입은 Windows에서 모든 종류의 트릭과 기능을 수행하는 데 사용됩니다. 합법적 인 프로그램에서 사용하지만 멀웨어에서도 사용됩니다. 예를 들면 :
- 바이러스 백신 프로그램은 종종 웹 브라우저에 코드를 삽입합니다. 예를 들어 네트워크 트래픽을 모니터링하고 위험한 웹 콘텐츠를 차단하는 데 사용할 수 있습니다.
- 악성 프로그램은 웹 브라우저에 코드를 추가하여 탐색을 더 잘 추적하고, 암호 및 신용 카드 번호와 같은 보호 된 정보를 훔치고, 브라우저 설정을 변경할 수 있습니다.
- 데스크탑을 테마로하는 Stardock의 WindowBlinds는 창을 그리는 방법 수정 .
- Stardock의 Fences는 Windows 데스크톱 작동 방식 변경 .
- AutoHotkey를 사용하면 스크립트를 생성하고 시스템 전체의 핫키를 할당합니다. ,이를 수행하기 위해 코드를 삽입합니다.
- NVIDIA와 같은 그래픽 드라이버는 다양한 그래픽 관련 작업을 수행하기 위해 DLL을 주입합니다.
- 일부 프로그램은 DLL을 삽입하여 응용 프로그램에 메뉴 옵션을 추가합니다.
- PC 게임 치팅 도구는 종종 게임에 코드를 주입하여 행동을 수정하고 다른 플레이어에 비해 불공정 한 이점을 얻습니다.
코드 삽입이 나쁜가요?
이 기술은 Windows의 다양한 응용 프로그램에서 지속적으로 사용됩니다. 다양한 작업을 수행하는 유일한 방법입니다. Apple의 iOS 또는 Google의 Android와 같은 최신 모바일 플랫폼에 비해 Windows 데스크톱은 개발자에게 이러한 종류의 유연성을 제공하기 때문에 매우 강력합니다.
물론 그 모든 힘에는 위험이 따릅니다. 코드 삽입은 애플리케이션에서 문제와 버그를 일으킬 수 있습니다. Google은 Chrome 브라우저에 코드를 삽입 한 Windows 사용자가 Chrome 충돌을 경험할 가능성이 15 % 더 높다고 말합니다. 이것이 Google이이를 차단하는 이유입니다. Microsoft는 악성 애플리케이션에서 코드 삽입을 사용하여 브라우저 설정을 조작 할 수 있다고 지적합니다. 이것이 Edge에서 이미 차단 된 이유 중 하나입니다.
Microsoft 이벤트 제공 명령 타사 DLL이 Microsoft Outlook에로드되어 있는지 확인하기 위해 많은 Outlook 충돌이 발생합니다.
Microsoft 직원이 개발자 블로그 2004 년부터 :
DLL 주입은 절대 안전하지 않습니다. 프로세스 작성자가 설계, 구축 또는 테스트하지 않은 프로세스로 코드를 분출하고 해당 코드를 실행하기위한 스레드를 선택하거나 생성하는 것에 대해 이야기하고 있습니다. 이전에 없었던 타이밍, 동기화 또는 리소스 문제를 만들거나 거기에 있던 문제를 악화시킬 위험이 있습니다.
즉, 코드 삽입은 일종의 더러운 해킹입니다. 이상적인 세계에서는 잠재적 인 불안정성을 유발하지 않는보다 안전한 방법이 있습니다. 그러나 코드 삽입은 오늘날 Windows 응용 프로그램 플랫폼의 일반적인 부분에 불과합니다. Windows PC의 백그라운드에서 지속적으로 발생합니다. 당신은 그것을 필요한 악이라고 부를 수 있습니다.
삽입 된 DLL을 확인하는 방법
Microsoft의 강력한 기능으로 시스템에 코드 삽입을 확인할 수 있습니다. 프로세스 탐색기 신청. 기본적으로 추가 기능이 포함 된 작업 관리자의 고급 버전입니다.
이 작업을 수행하려면 Process Explorer를 다운로드하여 실행하십시오. 보기> 아래쪽 창보기> DLL을 클릭하거나 Ctrl + D를 누릅니다.
상단 창에서 프로세스를 선택하고 하단 창에서로드 된 DLL을 확인합니다. "회사 이름"열은이 목록을 필터링하는 유용한 방법을 제공합니다.
예를 들어 "Microsoft Corporation"에서 만든 다양한 DLL은 Windows의 일부이므로 여기에 표시되는 것이 일반적입니다. 문제의 프로세스 인 "Google Inc."와 동일한 회사에서 만든 DLL을 보는 것도 정상입니다. 아래 스크린 샷에서 Chrome의 경우.
여기에서 "AVAST Software"로 만든 몇 가지 DLL을 찾을 수도 있습니다. 이는 시스템의 Avast 맬웨어 방지 소프트웨어가 'Avast Script Blocking 필터 라이브러리'와 같은 코드를 Chrome에 삽입하고 있음을 나타냅니다.
시스템에서 코드 삽입을 발견하면 할 수있는 일이 많지 않습니다. 문제를 방지하기 위해 코드를 삽입하는 프로그램을 제거하는 것 외에는 할 수 없습니다. 예를 들어 Chrome이 정기적으로 다운되는 경우 Chrome에 코드를 삽입하는 프로그램이 있는지 확인하고 해당 프로그램이 Chrome 프로세스를 조작하지 못하도록 제거하는 것이 좋습니다.
코드 삽입은 어떻게 작동합니까?
코드 삽입은 디스크의 기본 애플리케이션을 수정하지 않습니다. 대신 해당 응용 프로그램이 실행될 때까지 기다렸다가 실행중인 프로세스에 추가 코드를 삽입하여 작동 방식을 변경합니다.
Windows에는 다양한 응용 프로그래밍 인터페이스 (API) 코드 삽입에 사용할 수 있습니다. 프로세스는 자신을 대상 프로세스에 연결하고, 메모리를 할당하고, DLL 또는 다른 코드를 해당 메모리에 작성한 다음 대상 프로세스에 코드를 실행하도록 지시 할 수 있습니다. Windows는 컴퓨터의 프로세스가 이와 같이 서로 간섭하는 것을 방지하지 않습니다.
자세한 기술 정보는이 블로그 게시물에서 개발자가 DLL을 주입하는 방법 그리고이 봐 Windows에서 다른 유형의 코드 삽입 .
어떤 경우에는 누군가가 디스크의 기본 코드를 변경할 수 있습니다. 예를 들어 PC 게임과 함께 제공되는 DLL 파일을 부정 행위 나 불법 복제를 가능하게하는 수정 된 파일로 대체하는 방법입니다. 이것은 기술적으로 "코드 삽입"이 아닙니다. 코드는 실행중인 프로세스에 삽입되지 않고 대신 프로그램이 같은 이름을 가진 다른 DLL을로드하도록 속이고 있습니다.
이미지 크레딧 : Lukatme /Shutterstock.com.