프로세스 주입은 실행중인 프로세스 메모리 공간에 코드를 주입하는 것입니다.
Windows는 각 프로세스에 대해 4G 메모리 공간을 할당 하며이 4G 공간의 코드는이 프로세스에서 액세스하고 실행할 수 있습니다. "패치"소프트웨어는 실제로 프로세스 주입입니다. 소프트웨어에 작은 기능을 추가하려면 소프트웨어를 다시 디자인 할 필요가 없으므로 프로세스에 기능을 추가하는 데 필요한 코드를 주입하면됩니다.
프로세스 주입을 사용하여 공격을 위해 악성 코드를 대상 프로세스에 주입하는 많은 해커도 있습니다.
Windows 환경에서 일반적으로 사용되는 프로세스 주입 방법은 다음과 같습니다. CreateremoteThread, apcinject, SultendThread, Setwindowhookex 등
또한, 나는 비교적 독특한 주사 방법 인 반사 주입을 배웠다. 반사 주입은 주로 주입 성공률과 가장 귀중한 학습을 통해 PE 파일의 운영을 통해 주입을 구현하는 데 사용됩니다.
OpneProcess )를 엽니 다.VirtualAllocEX )을 얻습니다.WriteProcessMemory )에 쓰십시오.CreateRemoteThread ). kenerl32에서 loadlibrary ( GetProcAddress )의 기능 주소를 가져오고 대상 프로세스에 기록 된 동적 라이브러리 경로를 매개 변수로로드 리브러리로 전달하십시오.WaitForSingleObejct ) 메모리를 제거하고 핸들을 닫으십시오.CreateProcess 6 번째 매개 변수를 중단하도록 설정했습니다.QueueUserAPC 함수를 사용하여 LoadLibrary 함수를 Thread의 APC 큐에 APC 객체로 추가하고 DLL의 경로를 매개 변수로 전달합니다. 자유 핸들과 메모리에주의하십시오. 전반적인 아이디어는 DLL에 동적 라이브러리를로드하고 대상 프로세스에로드하는 loadlibrary 함수를 구현하는 것입니다.
Loadibrary 기능은 PE 파일을 수정하여 구현됩니다.
1. 대상 프로세스 주소 공간의 응용 프로그램 공간에 DLL을 씁니다.
2. DLL에 구현 된 파일에 자체를로드하는 함수의 주소를 가져오고 원격 스레드를 생성하고 함수 주소를 전달합니다. DLL에로드되는 기능도 독창적으로 구현됩니다.
setWindowsHookEX 함수를 사용한 주입. Windows 운영 체제, vs2015.
두 테스트는 32 비트 Windows 시스템과 64 비트 Windows 시스템에서 전달됩니다.
.
|-- APCInject(Ring0) // 驱动层的APC注入
|-- APCInject // Ring3层的APC注入
|-- CreateSuspend // 挂起线程注入
|-- InjectByRegister // 注册表注入(未测试)
|-- ReflectDll // 反射注入的Dll
|-- ReflectiveInject // 反射注入
|-- RemoteThread // 远程线程注入
|-- Src // 驱动层的APC注入源码
|-- Dll.dll // 32位测试Dll
|-- Dll64.dll // 64位测试Dll
|-- Process-Inject.sln // 项目启动文件
|-- README.md // 项目说明文件
.
풀 요청에 오신 것을 환영합니다.
이 작업을 해석 할 때는 같은 방식으로 서명하고 공유하십시오.