自己根据shark恒老师的分析,总结一下:

一般反调试自动关闭程序利用的函数有:

1、CreateToolhelp32Snapshot

2、FindWindow

3、ExitProcess

4、PostQuitMessage

5、INT 68,这个是汇编指令,主要是让OD异常


简化逆向过程:

1、载入OD发现,直接是POPAD,那么把OD给关了,让调试器来进行捕获异常,F9发现异常如下

2、发现两个return,然后一个jnz跳转,上面还有个popad,pushad和popad是配对,看了下当前的堆栈区域为如下,那么此时如果进行push的话肯定是超过了0012FFFF,越界了

内存映射, 条目 3
地址=0012C000
大小=00004000 (16384.)
属主= 00030000
区段=
包含=堆栈 于 主线程
类型=Priv 00021104
访问=RW 保护
初始访问=RW

但是现在的堆栈窗口的地址为如下

3、但是上面还有个popad,两个popad,那么我们让刚载入窗口的地址为pushad,来达到平衡不变,F9成功的运行到如下

4、通过GetProcAddress,来进行可疑函数的下断,然后进行F9运行

5、然后执行到返回,继续F8走出当前CALL,发现来到如下,进行进程名的判断,那么直接将跳转都改为JMP 无条件



6、继续F9,发现又断下来了,来到了PostQuitMessage,执行到返回走出当前CALL,修改当前跳转为JMP,这里可能还是会关闭,因为我们来到这里的时候,已经发送过了PostQuitMessage,所以我们需要重新来一遍,再前面就直接下断点,来到跳转的时候再设置JMP



7、继续F9,发现INT 68,会造成访问违规,我们直接NOP掉,成功运行

最新文章

  1. DIY一个高大上带提醒的计时器,简单实用,你还在等什么
  2. App分类
  3. 编译运行java程序出现Exception in thread "main" java.lang.UnsupportedClassVersionError: M : Unsupported major.minor version 51.0
  4. C#操作Excel时的格式设定(转)
  5. java 锁讲解
  6. 凸包(Convex Hull)构造算法——Graham扫描法
  7. JavaPersistenceWithHibernate第二版笔记-第五章-Mapping value types-006类型转换器( @Converter(autoApply = true) 、type="converter:qualified.ConverterName" )
  8. Visual Studio原生开发的10个调试技巧(一)
  9. ###《Effective STL》--Chapter6
  10. C#的CLR组成和运转介绍
  11. C++学习之嵌套类和局部类
  12. Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】
  13. mysql 安装过程中的错误:my-template.ini could not be processed and written to XXX\my.ini.Error code-1
  14. Woody的Python学习笔记1
  15. 实验三:分别用for,while;do-while循坏语句以及递归的方法计算n!,并输出算式。
  16. oracle 存储过程(分析理解)
  17. Spring Boot开启的 2 种方式
  18. CART决策树
  19. Redis的EXPIRE过期机制介绍
  20. angularJS 事件广播与接收[转]

热门文章

  1. 【BZOJ3171】[TJOI2013] 循环格(网络流)
  2. 全国省市区 json sql 支付宝 2019年9月29日
  3. concurrent (八) Future
  4. 【Zabbix】zabora监控Oracle数据库
  5. 应用层内存溢出/越界/重复释放等问题检查工具(ASan)
  6. Easyui datagrid扩展子网格detailview增删改查详解
  7. oracle的instr()函数
  8. Java匹马行天下之学编程的起点——走进编程的殿堂
  9. ASP.NET MVC 实现简单的登录
  10. shell编程基本语法和变量