手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

anti trick Ⅰ -- OpenProcess

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

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

上一篇: 用java得到本机所有的ip地址
下一篇: Reading Design Patterns

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!