郁闷了,以前的方法都不能用了!

就GetPixel饶法来说

1.修改自己程序不让EhSvc.dll等DLL挂钩自己的程序
  可是现在HShield都在驱动级拦截服务SDT,所以应用层对抗没意思了

2.用汇编自己写GETpixel
 function xiaocall(x1,x2,x3:DWORD):DWORD;
asm
mov     eax, $10BF
mov     edx, $7FFE0300
call    dword ptr [edx]
ret    $0C
end;

function GetPixelA(DC: HDC; X, Y: Integer): COLORREF;stdcall
asm
push    ebx
mov     ebx, dword ptr [ebp+$8]
mov     eax, ebx
push    edi
and     eax, $0FFFF
or      edi, $FFFFFFFF
cmp     eax, $10000
jnb     @@2
shl     eax, $4
add     eax, dword ptr [$77F33000]
cmp     byte ptr [eax+$A], 1
jnz     @@2
mov     ecx, ebx
shr     ecx, $10
cmp     word ptr [eax+$8], cx
jnz     @@2
mov     ecx, dword ptr [eax+$4]
and     ecx, $FFFFFFFE
cmp     ecx, dword ptr [$77F33004]
jnz     @@2
push    esi
mov     esi, dword ptr [eax+$C]
test    esi, esi
je      @@1
push    dword ptr [ebp+$10]
push    dword ptr [ebp+$C]
push    ebx
call    xiaocall
mov     edi, eax
mov     eax, dword ptr [esi+$5C]
@@1:
pop     esi
@@2:
mov     eax, edi
pop     edi
pop     ebx
end;

  可是现在HShield都在驱动级拦截服务SDT,所以应用层对抗没意思了
3.用BITMAP实现
function GetPixelEx(DC: HDC; X, Y: Integer): COLORREF;stdcall
label
js;
var
 p:pRGBArray;
 yansebmp:TBitmap;
begin
try
  Result:=$FFFFFFFF;
  yansebmp:=TBitmap.Create;
  IF not Assigned(yansebmp) then Exit;
  yansebmp.PixelFormat:=pf24bit;

  yansebmp.Height:=1;
  yansebmp.Width:=Screen.Width;

  BitBlt(yansebmp.Canvas.Handle,           //目标dc,也就是Image1的dc
                  0,                                                     //复制到Image1的x   =   0处
                  0,                                                     //复制到Image1的y   =   0处
                  1,                             //复制Image1->Width这么宽
                  1,                           //复制Image1->Height这么宽
                  DC,                                     //源dc
                  x,                                                     //从桌面的x   =   0处开始复制
                  y,                                                     //从桌面的y   =   0处开始复制
                  SRCCOPY                                           //指定为直接复制过去,不做处理
                  );
  p:=yansebmp.ScanLine[0];
  Result:=RGB(p[0].rgbtRed,p[0].rgbtGreen,p[0].rgbtBlue);
  yansebmp.free;
  Form1.Panel1.Color:=Result;
  exit;
except

end;
Result:=$FFFFFFFF;
yansebmp.free;
end; 
消耗CPU太厉害不说,现在也只对GETDC(0)的场景有效 其他也被驱动层拦截了

4.HOOK程序  劲舞团本身的程序里实现GETPIXEL 因为劲舞3.0版本以及以前版本,对自己进程是放行的,现在3.1版本也不能用此漏洞了!

5.Rootkit 方法  我把自己的进程链从物理内存里删掉  以前老版本可以用 现在新版本也不成了

6.驱动对抗  驱动不怎么精通 以前写个修复SDT的  但是没用!现在想不出什么好的办法来实现GETPIXEL  跪求点子