|

分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
]第一种 咱们用系统API
IsDebuggerPresent
检测是否被调试
第二张 咱们可以检测父进程
正常的话程序的父进程应该是 explorer.exe
所以我们可以
变量名 | 类 型 | 静态 | 数组 | 备 注 | 系统进程 | 进程信息 | | 0 | 系统进程数 | 整数型 | | | 父进程PID | 整数型 | | | explorerPID | 整数型 | | | n | 整数型 | | |
系统进程 = 取系统进程列表 ()系统进程数 = 取数组成员数 (系统进程 ) 计次循环首 (系统进程数, n ) 如果真 (系统进程 [n ].进程名称 = 取执行文件名 ()) 父进程PID = 系统进程 [n ].父进程标识符 跳出循环 ()  计次循环尾 () 计次循环首 (系统进程数, n ) 如果真 (系统进程 [n ].进程名称 = “explorer.exe”)explorerPID = 系统进程 [n ].进程标识符 跳出循环 ()  计次循环尾 () 判断 (父进程PID = explorerPID )返回 (假) 返回 (真)[/e [DISCUZ_CODE_0 ]来看看如果发现父进程不对 你懂得 OK 这两种方法对于现在的OD完全无效 stronOD的强大之处大家应该都懂 但是 OD会用驱动 所以我们就可以通过遍历驱动名来确定是否有OD 所以大概代码就是 [e=1 ].版本 2 变量名 | 类 型 | 静态 | 数组 | 备 注 | 驱动数据 | 文本型 | | 0 | 驱动数据大小 | 整数型 | | | 驱动路径名称 | 文本型 | | 0 | 驱动路径名称大小 | 整数型 | | | 驱动名称 | 文本型 | | | 大小 | 整数型 | | | 原地址 | 整数型 | | | 目的地址 | 内存地址指针 | | | n | 整数型 | | | i | 整数型 | | | j | 整数型 | | | NtQuerySystemInformation (11, 0, 0, 大小 )原地址 = 申请内存 (大小 × 2, 真)NtQuerySystemInformation (11, 原地址, 大小 × 2, 大小 )RtlMoveMemory (目的地址, 原地址, GlobalSize (目的地址 )) 驱动数据大小 = 目的地址.大小 计次循环首 (驱动数据大小, n )原地址 = 原地址 + 71 × 4 RtlMoveMemory (目的地址, 原地址, GlobalSize (目的地址 )) 加入成员 (驱动路径名称, 到文本 (目的地址.信息.名称 )) 计次循环尾 ()驱动路径名称大小 = 取数组成员数 (驱动路径名称 ) 计次循环首 (驱动路径名称大小, n )驱动名称 = 取文本右边 (驱动路径名称 [n ], 取文本长度 (驱动路径名称 [n ]) - 倒找文本 (驱动路径名称 [n ], “\”, , 假)) 如果真 (驱动名称 = 驱动名 )返回 (真)   计次循环尾 ()返回 (假)
然后具体驱动名的话你可以运行你能下载到的OD然后运行火眼(我是用火眼的)来看驱动名称
OK 最后提供 .e文件下载
1.zip
(4.18 KB, 下载次数: 371)
|
|