일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 개발하기
- 윈도우 커널 드라이버
- packet capture
- HackCTF
- apphelp.dll
- vcruntime.dll
- C언어 패킷캡쳐
- vcruntime140.dll
- Windows Kernel
- 시스템해킹
- IAT Hooking
- 네트워크 바이트 오더
- Windows
- Windows Kernel Debug
- hacking
- 윈도우 커널
- Windows Kernel Driver
- ucrtbase.dll
- windows kernel debugging
- arudino
- 윈도우 커널 디버깅
- pcap packet
- pcap packet capture
- 개발 환경 준비
- pwnable
- 바이트 오더
- 포너블
- 해킹
- Network Byte Order
- Msvcrt.dll
- Today
- Total
목록전체 글 (118)
미친해커
GitHub - jungjin0003/Instrumentation-Callback Contribute to jungjin0003/Instrumentation-Callback development by creating an account on GitHub. github.com Instrumentation Callback을 통해 알 수 있는 것 지금까지의 포스팅만 봤을 때 Instrumentation Callback은 그저 syscall 어셈블리가 실행되었다는 정보 밖에 알 수 없었다. 하지만 Instrumentation Callback은 그 외에도 아래와 같은 정보들을 구할 수 있다. Original Return Address (sysret 가 되었을 때 원래 돌아가야 할 주소) Syscall Number..
기본적으로 Visual Studio의 MSVC로 컴파일을 진행하면 vcruntime140.dll, ucrtbase.dll을 사용하는 것을 확인할 수 있다. 이는 Windows SDK에 있는 라이브러리를 사용하는 것으로 알고 있는데, 해당 DLL을 사용하면 다른 윈도우에서 프로그램을 실행했을 때 ucrtbase.dll과 vcruntime140.dll이 없으면 프로그램이 동작하지 않는 문제가 발생한다. 물론 프로그램을 배포할 때 DLL을 함께 배포하면 문제 없지만 이는 반드시 프로그램을 실행하기 전에 DLL을 배포해야 한다는 귀찮음이 존재한다. 하지만 모든 윈도우에는 기본적으로 msvcrt.dll이 존재하고 msvcrt.dll과 ucrtbase.dll, vcruntime140.dll에 있는 함수가 다르지 않..
Visual Studio의 컴파일러인 MSVC로 컴파일을 하면 가끔 이런 이상한 코드가 추가되는 경우가 있다. 위 이미지 처럼 모든 함수가 참조되어 있는 것을 확인할 수 있다. 그럼 해당 바이너리 내에서 호출하는 모든 함수들이 이 jmp를 거쳐서 호출되게 된다. 필자는 개인적으로 이걸 매우 싫어하는데 지금까지 이 때문에 Mingw를 애용했다고 해도 과언이 아니다. 하지만 이제야 해결 방법을 깨달았다. 이는 MSVC의 LINK의 최적화 옵션을 설정하면 된다. [프로젝트 속성] -> [링커] -> [최적화] -> [참조] -> [/OPT:REF] 이 옵션을 설정해주면 저런 참조 코드가 생성되지 않는다. 커맨드 라인으로 한다면 다음과 같다. cl.exe main.c /link /OPT:REF
GitHub - jungjin0003/Instrumentation-Callback Contribute to jungjin0003/Instrumentation-Callback development by creating an account on GitHub. github.com Instrumentation Callback을 통해 알 수 있는 것 지금까지의 포스팅만 봤을 때 Instrumentation Callback은 그저 syscall 어셈블리가 실행되었다는 정보 밖에 알 수 없었다. 하지만 Instrumentation Callback은 그 외에도 아래와 같은 정보들을 구할 수 있다. Original Return Address (sysret 가 되었을 때 원래 돌아가야 할 주소) Syscall Number..
Instrumentation Callback's Strcture Instrumentation Callback을 등록하기 위해서는 특정한 구조체를 사용해야 한다. typedef struct _PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION { ULONG Version; // x64 -> 0 | x86 -> 1 ULONG Reserved; // Always 0 PVOID Callback; // VOID (CALLBACK *InstrumentationCallback)(); } PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION, *PPROCESS_INSTRUMENTATION_CALLBACK_INFORMATION; How to Reigster Inst..
What is Instrumentation Callback? Instrumentation Callback(계측 콜백)이란 Windows 시스템에서 지원하는 콜백중 하나이다. When will this Callback be Called? Instrumentation Callback은 프로세스에서 syscall을 호출하는 모든 커널함수들이 호출되었을 때 호출된다. 예외 단 NtContinue, NtTerminateProcess, NtTerminateThread (현재 스레드에서 호출한 경우), NtRaiseException 함수의 경우에는 콜백이 동작하지 않는다.