본문 바로가기
반응형

Security33

※디버그레지스터란? ▣Debug Register 하드웨어 breakpoint를 가능하게 하는 레지스터 [그림 : http://hackability.kr/entry/익스플로잇-개발-12-EMET-52] DR0~3 : 하드웨어 브레이크포인터의 주소. 해당주소 접근/쓰기/실행 시 INT1발생 DR6(Debug Status Register) INT1이 발생한 이유를 알려주는 레지스터. 프로세스에 의해 세트되고 사용자가 직접 지워줘야함 - B0~3(Bit0~Bit3) : 어떤 레지스터에 의해 엑세스되어졌는지 나타냄. - BD(Break for Debug register access,Bit13) : DR7의 GD비트에 의해 디버그레지스터가 잠겨있을 때 디버그 레지스터를 엑세스하면 INT1을 1로 세트되어짐 - BS(Break for .. 2018. 3. 7.
※Debug관련 API 개인적인 프로젝트를 진행하며 알게된 사실을 정리합니다. ※WaitForDebugEvent?- 디버기 프로세스에서 DebugEvent가 발생할때까지 기다림. 함수형태는 다음과 같습니다.BOOL WINAPI WaitForDebugEvent( _Out_ LPDEBUG_EVENT lpDebugEvent, //발생되는 이벤트는 이곳으로 나옴. _In_ DWORD dwMilliseconds // 기다리는 시간. ); - lpDebugEvent : 디버기이벤트 발생시 저장되는 이벤트데이터구조체 typedef struct _DEBUG_EVENT { DWORD dwDebugEventCode; DWORD dwProcessId; DWORD dwThreadId; union { EXCEPTION_DEBUG_INFO Except.. 2018. 3. 2.
IO_STACK_LOCATION란? ※ IO_STACK_LOCATION란?- IO_STACK_LOCATION는 계층화된 드라이버에서 IRP를 각계층에 맞게 관리 및 동작을 위해 만들어진 구조체. (라고 이해함 보다 정확한 설명을 위해 msdn형님은 "The I/O manager gives each driver in a chain of layered drivers an I/O stack location for every IRP that it sets up. "라고 설명하고 있음... ) 구조체의 생김새는 다음과 주요 필드에 대한설명은 같습니다. typedef struct _IO_STACK_LOCATION { UCHAR MajorFunction; UCHAR MinorFunction; UCHAR Flags; UCHAR Control; union.. 2018. 2. 3.
[Anti-VM] - 어셈블리 STR편 어셈블리 명령어를 이용한 Anti-VM기법에대해 정리하고자 합니다. ※ 어셈블리 STR이란?- 현재 실행중인 TSS세그먼트 셀렉터의 값을 가져온다. ※Anti-VM- 로컬PC에서는 TSS레지스터는 0x40000000값을 가지는 반면 VMware에서는 다른 값을 가집니다. 로컬 호스트 VM-Ware ※Anti-VM코드(참조 : https://www.aldeid.com/wiki/X86-assembly/Instructions/str)위 블로그를 참조했는데 코드가 온전하진않아서 바꿔서 진행했습니다. 이상입니다. 2018. 1. 14.
반응형