VMP3.x 以上的版本的壳代码引入了一个标志位数值 Flags, 根据这个Flags值的位执行对应的事情。 


比如:
and 2 = 2 表示检测用户层调试器
and 4 = 4 表示检测内核调试器
and 10 = 10 表示检测虚拟机
 
只要将这个值修改为0,调试器和虚拟机检测甚至内存校验,文件校验都直接bypass.  ( ps: 写了这么多壳代码就这么简单就过了:)
那么现在的问题是如何快速定位到这个值。这里介绍一种比较简单快速的方法,测试了几个程序都有效。
 
如下图:
 
 
1. 首先下断点到LocalAlloc
 
2. 中断下来后,在数据窗口CTRL+G输入ESP, 然后从这个地址开始搜索 当前模块加载基地址 如这里的 011C0000 
    不过这里为了保险,防止搜索到多个结果,应该搜索 模块默认加载基地址 + 模块当前加载基地址 组合起来的8个字节
   如图中的: 00400000 + 011C0000
 
3. 找到后修改下面的那个值为0即可, 如图中箭头所指。

转载于:https://www.cnblogs.com/yueyue184/p/8811305.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐