-

  • (2)
  • (2)
  • (1)
  • (1)

 - -

 -

   Falling_802_13

 - e-mail

 

 -

 LiveInternet.ru:
: 19.07.2010
:
:
: 42

:

(0)

, 14 2010 . 00:30 +
x86-

TF-, EFLSGS ( 8- , ), , INT 01h EXCEPTION_SINGLE_STEP (80000004h), "" Windows. , SS ( ), . , MOV SS, new_ss/MOV ESP, new_ESP. , , , , , ( LSS, SS ESP, ).

TF-

(EFLAGS) TF. - - . : PUSHFD, , ( SEH- , ), , API- GetThreadContext.

- PUSHFD. , .
1 - "" PUSHFD

(. 1), PUSHFD EAX TF.
char yes[] = "debugger is detected :-)";
char noo[] = "debugger is not detected";

nezumi()
{
char *p = noo; // is on ;-)
__asm
{
; int 03 ;
pushfd ; , TF
pop eax ; eax
and eax, 100h ; TF-
jz not_under_dbg ; TF , ...
mov [p], offset yes ; ..., ;)
not_under_dbg:
}

MessageBox(0, p, p, MB_OK);
}

1. TF-0x0-simple.c PUSHFD.

(. 2). : ) nezumi(); ) , 768 .

cl.exe /c /Ox /Os /G6 TF-0x0-simple.c
link.exe TF-0x0-simple.obj /ENTRY:nezumi /MERGE:.rdata=.text
/ALIGN:16 /DRIVER /FIXED /SUBSYSTEM:CONSOLE KERNEL32.LIB USER32.lib

2. .

"warning LNK4078: multiple ".text" sections found with different attributes (40000040)", , , "debugger is not detected", MS VC dbg ( ), call' ( MessageBox). ! "debugger is detected :-)"! !!!

Olly

cdb.exe Debugging Tools. OEP, "int 03" , . ntdll!DbgBreakPoint int 03h. , "g" "" int 03h, nezumi(). "t", CALL', "g" ... !!! ?! - CDB PUSHFD , "" TF- . Soft-Ice, Syser, OllyDbg "" . IDA GDB "" TF- , .
2 -

x86 (prefix) - , (REPE/PEPNE), (CS:, DS:, SS:, ES:, FS:, GS:), ( 66h) .. "" - , (MOVSD, LODSD, STOSD). ( ), PUSHFD REPE:PUSHFD - .

, PUSHFD "" , . . "REPE" "PUSHFD" , TF-0x1-prefix.c.

, CDB, Soft-Ice Syser , . MS VC, IDA GDB , OllyDbg ( !) REPE, !
3 -

, PUSHFD MOV AX,SS/MOV SS,AX. SS , , MOV SS,AX, PUSHFD.
nezumi()
{
char *p = noo; // is on ;-)
__asm
{
int 03 ;
mov ax,ss ; ...
mov ss,ax ; ... PUSHFD
pushfd ; , TF
pop eax ; eax
and eax,100h ; TF-
jz not_under_dbg ; TF ,
mov [p],offset yes
not_under_dbg:
}
MessageBox(0, p, p, MB_OK);
}

3. TF-0x2-SS-change.c - TF- .

, . MOV SS,AX, (Step into) ... (!) PUSHFD, TF-, .

Olly

MS VC, CDB, Soft-Ice, OllyDbg, IDA, GDB - . Syser ( 1.95.1900.0894) , . Syser ( ) , , SS PUSHFD, "", TF-.
-

Syser' ! ! ?! "" , PUSHFD, , , , () , .

OllyDbg , SS, , . , , MOV SS,16-bit Reg/Mem POP SS, MOV X,SS/POP SS . , MOV SS, EAX , MOV SS,AX, , , .


Pentium- ... (/ ). MSR- MSR_DEBUGCTLA BTF (single-step on branches), TF- EFLAGS , , (, real-time , , "" jxx, ). , BTF-, ' , .

BTF MSR_DEBUGCTLA

MSR- WRMSR , BTF- native-API NtSystemDebugControl(), NTDLL.DLL, http://www.openrce.org/blog/view/535/Branch_Tracing_with_Intel_MSR_Registers, : ) ; ) Server 2003 XP , -, , - .

" "


:  

 : [1]