anti trick Ⅰ -- OpenProcess

王朝other·作者佚名  2006-05-27
窄屏简体版  字體: |||超大  

Site:www.ptteam.com

by 来自轻院的狼[Immlep]

最近想写一些关于Anti的文章,可是没有什么时间,下面的文章写的比较粗糙,如果有什么问题,希望大家指导指导,谢谢!!!

可能由于DebugAPI的缘故,当一个程序被Ring3调试器调试(Ollydbg等)时,它的权限会提升,本来它是不可以使用OpenProcess打开一些系统进程的,不过如果它被调试的话,它就可以OpenProcess打系统进程,因此我们可以借助这一点来反Ollydbg等,我测试当程序被调试后由本来不可以打开变成可以打开的进程有:

csrss.exe

smss.exe

lsass.exe

svchost.exe

winlogon.exe

其中获取csrss的PID也可以用CsrGetProcessId这个函数,我用ASM写了一段例子代码 :

代码:

searchproc proc

LOCAL hSnapshot

LOCAL hProcess

invoke CreateToolhelp32Snapshot, 2, 0

mov hSnapshot, eax

mov uProcess.dwSize, sizeof uProcess

invoke Process32First, hSnapshot, ADDR uProcess

mov hProcess, eax

push esi

xor esi,esi

.while hProcess!=0

;--------------

call @F

szcsr db 'csrss.exe',0

@@:

lea edi,uProcess.szExeFile

push edi

call lstrcmp

jnz @F

invoke OpenProcess, PROCESS_ALL_ACCESS, 1,uProcess.th32ProcessID

cmp eax,0

jz @F

invoke MessageBox,NULL,addr szcsr,addr szOK,MB_OK

@@:

;-----------------

call @F

szsmss db 'smss.exe',0

@@:

lea edi,uProcess.szExeFile

push edi

call lstrcmp

jnz @F

invoke OpenProcess, PROCESS_ALL_ACCESS, 1,uProcess.th32ProcessID

cmp eax,0

jz @F

invoke MessageBox,NULL,addr szsmss,addr szOK,MB_OK

@@:

;---------------------

call @F

szlsa db 'lsass.exe',0

@@:

lea edi,uProcess.szExeFile

push edi

call lstrcmp

jnz @F

invoke OpenProcess, PROCESS_ALL_ACCESS, 1,uProcess.th32ProcessID

cmp eax,0

jz @F

invoke MessageBox,NULL,addr szlsa,addr szOK,MB_OK

@@:

;---------------

call @F

szsvc db 'svchost.exe',0

@@:

lea edi,uProcess.szExeFile

push edi

call lstrcmp

jnz @F

invoke OpenProcess, PROCESS_ALL_ACCESS, 1,uProcess.th32ProcessID

cmp eax,0

jz @F

invoke MessageBox,NULL,addr szsvc,addr szOK,MB_OK

@@:

;---------------

;---------------

call @F

szwlg db 'winlogon.exe',0

@@:

lea edi,uProcess.szExeFile

push edi

call lstrcmp

jnz @F

invoke OpenProcess, PROCESS_ALL_ACCESS, 1,uProcess.th32ProcessID

cmp eax,0

jz @F

invoke MessageBox,NULL,addr szwlg,addr szOK,MB_OK

@@:

;---------------

;invoke TerminateProcess,eax,0

skip:

invoke Process32Next, hSnapshot, ADDR uProcess

mov hProcess, eax

.endw

pop esi

invoke CloseHandle, hSnapshot

ret

有时用Olldybg第一次调试会没事,再次用ollydbg调试时就会中招!!

一个测试的debugme,是以前写的,用了CsrGetProcessId,只能在XP下运行,不过上面的代码是可以在2k以上的系统使用的。。

http://bbs.pediy.com/upload/2005/37/files/debugme.rar

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航