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
Posted by $Zero
: