윈도우7 에서 WDK 설치해서 SSDT, IDT 의 내용을 변경해서 후킹하는 실습을 했는데
듣기로는 그냥 바꾸면 쓰기방지가 되어있어서 블루스크린이 뜬다는데 그냥 잘 변경이 되네요? -_-
CR0 수정이나 그런거 아무것도 안하고 그냥 쌩으로 메모리 건드려서 수정했는데 왜 아무이상없이 잘될까요?
쓰기방지가 되어있다는데...??
정말 변경된게 맞는지 디버깅을 통해 확인은 해보셨나요?
RET ;My life :P
SSDT 항목을 변경해서 후킹함수를 등록하고 실제로 시스템콜을 호출해서 후킹함수가 작동하는걸 확인했습니다 IDT 의 경우도 변경한다음 커널 메모리덤프를 떠서 ISR로의 주소가 변경된것을 확인했구요..
자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.
SSDT를 변경하기 전에 CR0 레지스터 값은 확인해보셨나요? Clean한 상태가 아닌 컴퓨터에서 테스트를 하셨다면, 다른 프로그램이 변경했을 가능성이 존재합니다.
커널코드상에서 아래와같이 CR0 레지스터값을 확인해보니
unsigned int m_cr0=0; __asm { push eax mov eax, CR0 mov m_cr0, eax; pop eax } DbgPrint("%08X\n", m_cr0);
0x8001003B 로 WriteProtection 비트가 1인거로 나오네요 -_-; 즉 쓰기방지가 된상태인건데... 저렇게 확인한다음 특별한작업 아무것도 안하고 곧바로 SSDT 수정해서 후킹을 걸었다 해제했다 맘대로해도 그냥 다 되네요...
어떻게된걸까요 ㅠㅠ;;
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
정말 변경된게 맞는지 디버깅을 통해 확인은
정말 변경된게 맞는지 디버깅을 통해 확인은 해보셨나요?
RET ;My life :P
네
SSDT 항목을 변경해서 후킹함수를 등록하고
실제로 시스템콜을 호출해서 후킹함수가 작동하는걸 확인했습니다
IDT 의 경우도 변경한다음 커널 메모리덤프를 떠서
ISR로의 주소가 변경된것을 확인했구요..
자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.
SSDT를 변경하기 전에 CR0 레지스터 값은
SSDT를 변경하기 전에 CR0 레지스터 값은 확인해보셨나요?
Clean한 상태가 아닌 컴퓨터에서 테스트를 하셨다면, 다른 프로그램이 변경했을 가능성이 존재합니다.
RET ;My life :P
확인했습니다
커널코드상에서 아래와같이 CR0 레지스터값을 확인해보니
unsigned int m_cr0=0;
__asm
{
push eax
mov eax, CR0
mov m_cr0, eax;
pop eax
}
DbgPrint("%08X\n", m_cr0);
0x8001003B 로 WriteProtection 비트가 1인거로 나오네요 -_-;
즉 쓰기방지가 된상태인건데...
저렇게 확인한다음 특별한작업 아무것도 안하고 곧바로 SSDT 수정해서 후킹을 걸었다 해제했다 맘대로해도
그냥 다 되네요...
어떻게된걸까요 ㅠㅠ;;
자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.
댓글 달기