首页
社区
课程
招聘
[原创][开源]NTQ相关AntiDebug及Od反AntiDebug
发表于: 2015-11-28 18:54 10729

[原创][开源]NTQ相关AntiDebug及Od反AntiDebug

2015-11-28 18:54
10729

上篇帖子:
PEB相关AntiDebug及Od反AntiDebug:
http://bbs.pediy.com/showthread.php?p=1403899#post1403899

由于判断逻辑都一样 所以只在第一个贴图贴代码

工具:VS2012 OD


bool NTAPI_processDebugPort( )
{
  int nDebugPort = 0;
  NtQueryInformationProcess(GetCurrentProcess( ), // 目标进程句柄
              ProcessDebugPort, // 查询的信息类型
              &nDebugPort, // 输出查询信息
              sizeof(nDebugPort), // 输出信息的变量的类型大小
              NULL// 实际返回数据大小
              );
  return  nDebugPort == 0xffffffff ? 1 : 0;
}
CPU Disasm
地址        十六进制数据            指令                                       注释
00E414E0    55              PUSH EBP                                 ; UNICODE "匎G"
00E414E1    8BEC            MOV EBP,ESP
00E414E3    81EC C0000000   SUB ESP,0C0
00E414E9    53              PUSH EBX
00E414EA    56              PUSH ESI
00E414EB    57              PUSH EDI
00E414EC    8DBD 40FFFFFF   LEA EDI,[EBP-0C0]
00E414F2    B9 30000000     MOV ECX,30
00E414F7    B8 CCCCCCCC     MOV EAX,CCCCCCCC
00E414FC    F3:AB           REP STOS DWORD PTR ES:[EDI]
00E414FE    E8 4DFBFFFF     CALL 00E41050
00E41503    0FB6C0          MOVZX EAX,AL
[COLOR="Black"][B]00E41506    85C0            TEST EAX,EAX
00E41508    74 1F           JE SHORT 00E41529
00E4150A    8BF4            MOV ESI,ESP
00E4150C    6A 00           PUSH 0
00E4150E    68 5858E400     PUSH OFFSET 00E45858                     ; UNICODE "提示"
00E41513    68 6058E400     PUSH OFFSET 00E45860                     ; UNICODE "被调试"
00E41518    6A 00           PUSH 0
00E4151A    FF15 8C93E400   CALL DWORD PTR DS:[<&USER32.MessageBoxW>
00E41520    3BF4            CMP ESI,ESP
00E41522    E8 28FCFFFF     CALL 00E4114F
00E41527    EB 1D           JMP SHORT 00E41546
00E41529    8BF4            MOV ESI,ESP
00E4152B    6A 00           PUSH 0
00E4152D    68 5858E400     PUSH OFFSET 00E45858                     ; UNICODE "提示"
00E41532    68 6C58E400     PUSH OFFSET 00E4586C                     ; UNICODE "正常运行"
00E41537    6A 00           PUSH 0
00E41539    FF15 8C93E400   CALL DWORD PTR DS:[<&USER32.MessageBoxW>
00E4153F    3BF4            CMP ESI,ESP
00E41541    E8 09FCFFFF     CALL 00E4114F
00E41546    33C0            XOR EAX,EAX[/B][/COLOR]
00E41548    5F              POP EDI
00E41549    5E              POP ESI
00E4154A    5B              POP EBX
00E4154B    81C4 C0000000   ADD ESP,0C0
00E41551    3BEC            CMP EBP,ESP
00E41553    E8 F7FBFFFF     CALL 00E4114F
00E41558    8BE5            MOV ESP,EBP
00E4155A    5D              POP EBP
00E4155B    C3              RETN

bool NQIP_ProcessDebugObjectHandle()
{
  HANDLE hProcessDebugObjectHandle=0;
  NtQueryInformationProcess(GetCurrentProcess(),        //目标(当前)进程句柄
              (PROCESSINFOCLASS)0x1e,        //查询信息类型
              &hProcessDebugObjectHandle,      //输出查询信息
              sizeof(hProcessDebugObjectHandle),  //查询类型大小
              NULL);                //实际返回大小
  return hProcessDebugObjectHandle?false:true;
}
bool NQIP_ProcessDebugFlag()
{
  BOOL bProcessDebugFlag=0;
  NtQueryInformationProcess(GetCurrentProcess(),    //目标(当前)进程句柄
              (PROCESSINFOCLASS)0x1f,    //查询信息类型
              &bProcessDebugFlag,      //输出查询信息
              sizeof(bProcessDebugFlag),  //查询类型大小
              NULL);            //实际返回大小
  return bProcessDebugFlag?false:true;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (14)
雪    币: 2325
活跃值: (4873)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
恩·· 支持下·!
2015-11-28 21:19
0
雪    币: 6911
活跃值: (9064)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
3
楼主最近高产啊
2015-11-29 14:29
0
雪    币: 1176
活跃值: (1264)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
4
还好 哈哈
2015-11-29 14:45
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
5
楼主高产,不管质量如何,总之是有一定内容的帖子。
2015-11-29 15:08
0
雪    币: 22
活跃值: (242)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
6
V大说的,真的是不管质量如何,还真是有点内容
2015-11-29 16:06
0
雪    币: 1176
活跃值: (1264)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
7
没内容不会来发 嘿嘿
2015-11-29 16:25
0
雪    币: 1176
活跃值: (1264)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
8
技术太差...
2015-11-29 16:26
0
雪    币: 216
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
Retrieves a DWORD_PTR value that is the port number of the debugger for the process. A nonzero value indicates that the process is being run under the control of a ring 3 debugger.
看了下MSDN   NtQueryInformationProcess 调试端口非零就是在调试环境下。
2015-12-2 16:32
0
雪    币: 43
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
Mark !
2015-12-19 11:06
0
雪    币: 56
活跃值: (242)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
感谢~~~~~~~~·
2016-5-14 11:58
0
雪    币: 68
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
新手看不懂啊
2016-5-14 12:15
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
路过留个mark
2016-5-14 13:43
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习了,是个好思路。判断父进程
2016-5-26 10:46
0
雪    币: 25
活跃值: (506)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
mark
2016-5-26 12:58
0
游客
登录 | 注册 方可回帖
返回
//