windows7 에서 Session ID가 0인 서비스 프로세스에 DLL Injection이 실패하는 원인
레퍼런스/Reversing 2013. 10. 10. 17:13 |win XP의 CreateRemoteThread 실행 과정
kernel32!CreateRemoteThread() -> ntdll!ZwCreateThread()
windows7 의 CreateRemoteThread 실행 과정
kernel32!CreateRemoteThread() -> kernelbase!CreateRemoteThreadEx() -> ntdll!ZwCreateThreadEx()
kernelbase는 Vista 이상부터 추가된 dll 파일 .
zwCreateThreadEx() native API를 호출하는 코드루틴을 보면
Suspend 모드로 쓰레드를 생성하고
Resume API를 호출하기전에 어떠한 변수값을 비교한 후 점프를 함 .
만약 그 변수값이 틀릴 경우 Resume을 호출하지 않고 그대로 ExitThread API함수로 건너 뜀
Resume 이 실행되야 Suspend모드에서 빠져나올 수 있으므로
해당 CMP 명령어에서 변수값을 똑같도록 맞춰주면 DLL인젝션이 성공적으로 이루어짐
'레퍼런스 > Reversing' 카테고리의 다른 글
ADM 64 Linux 호출 규약 (0) | 2018.05.18 |
---|---|
[리버싱] 어셈블리어 정리 (1) | 2014.05.13 |