본문 바로가기
반응형

Security33

Windows x64커널 진입 : 커널모드편 x64에서 커널진입이후, 동작을 알아보기 위해 ntdll!ZwCreateFile의 경우를 알아보자. ntdll!ZwCreateFile내부를 보자. ntdll!ZwCreateFile: 0033:00000000`77b91860 4c8bd1 mov r10,rcx ; 첫번째 인수를 r10에 백업시킨다. 이는 syscall이후 반환주소가 rcx로 전달되기 때문 0033:00000000`77b91863 b852000000 mov eax,52h ; ServiceNumber를 eax로 전달 0033:00000000`77b91868 0f05 syscall ; 커널진입 0033:00000000`77b9186a c3 ret Syscall명령어를 통해 커널에 진입하게 되는데 eax를 통해 ServiceNumber를 전달하는것.. 2018. 4. 14.
x64 Calling Convention(Windows) x64커널진입을 정리하면서 x64의 파라미터 전달관계를 알기 위해 진행되었던 내용들을 간단하게 정리한다. 먼저, 파라미터 전달관계를 위해 다음과 같이 코딩했는데 코딩내용은 굉장히 굉장히 간단하다. 테스트를 위한 함수를 만들고 파라미터를 14개 정도 전달받도록 만들었다. 별건아니니 코드를 보는게 더 편할것이다. #include void X64Call(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, int n){ printf("%d", a + b + c + d + m + n); return;} int main(){ X64Call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12.. 2018. 4. 14.
64 Windows커널 진입 차이 : 유저모드편 최근에 x64를 보면서 x86과 커널진입이 다른것을 발견하게 되어 정리하게 되었다....본내용은 x64에서의 커널진입과 x86과의 차이점에 대해서 이야기해본다. (분석환경 : Windows 7 x86/x64) 먼저, x86에서 커널진입에 대해서 알아보도록 한다. 그 예로 Kernel32.CreateFileA x86의 커널진입은 다음 그림과 같다. 진입순서 : Kernel32!CreateFileA -> Kernel32!CreateFileW -> ntdll!ZwCreateFile -> ntdll!KiFastSystemCall()로 진입하게 된다. 큰 특징으로는 커널진입 이전에 ntdll!KiFastSystemCall을 지나야 한다는 점이다. 그러나 ntdll!KiFastSystemCall는 유저레벨에서 커널.. 2018. 4. 12.
kernel32 vs kernelbase kernel32 vs kernelbase 2018. 4. 5.
반응형