科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道anti trick Ⅰ -- OpenProcess

anti trick Ⅰ -- OpenProcess

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

可能由于DebugAPI的缘故,当一个程序被Ring3调试器调试(Ollydbg等)时,它的权限会提升,本来它是不可以使用OpenProcess打开一些系统进程的.

作者:老狼 来源:CSDN 2008年3月14日

关键字: OpenProcess anti java

  • 评论
  • 分享微博
  • 分享邮件
可能由于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以上的系统使用的。。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章