多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
开启OD,打开任务管理器,可以看到Ollydbug的进程名 下面这个程序可以通过检测进程名停止程序。 链接: https://pan.baidu.com/s/1CkA6uGMe9CIEhI6Wtc0ewA 把他载入OD,停在了入口点处 **查看API列表** > 我们可以看到有很多API函数 > 但都不是用于检测进程名的 > 可能这些重要的API函数被隐藏起来了,没有出现该列表中 > 很显然如果程序不直接导入某些API的话 > 会使用GetProcAddress这个API 函数 > 来获取这些API函数的地址进行间接调用 > 使用GetProcAddress函数加载的一些API函数 并不会出现该API函数列表中 我们给GetProcAddress设置一个断点 `bp GetProcAddress` 运行起来,断在了GetProcAddress入口点处 当前待获取的函数是__CPPdebugHook 该函数检测进程名没有关系,继续运行 我们继续按F9键运行直到待获取的API是与检测进程名相关的为止 这里待获取的API函数是EnumProcesses > 该函数返回正在运行的每个进程的标识即PID > PID是系统分配给每个正在运行的进程的标识符 > 每次启动的时候都会发生变化 Ctrl+F9执行到返回 这个时候EAX寄存器中保存的就是EnumProcesses这个API函数的地址了 给该地址设置断点 `Bp 函数地址` 继续我们刚才的步骤,看看还有什么API函数被加载 这里是获取枚举进程模块函数的地址GetprocAddress 我们还是执行到返回,接着给EAX中保存的地址设置断点 `bp EAX` 同理,我们给所有与检测进程名相关的API函数设置断点 另外一个可疑的API函数GetModuleBaseNameA 然后我们运行起来,断在了EnumProcesses函数的入口处。 注释上该函数的名称EnumProcesses 好复杂,不弄了 用吾爱的OD就能过。