zoukankan      html  css  js  c++  java
  • 学习:逆向PUSH越界/INT 68/反调试导致的程序

    自己根据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掉,成功运行

  • 相关阅读:
    Python生成二维码
    SSO单点登录
    小说 · 凉生,我们可不可以不忧伤
    RabbitMQ入门教程——.NET客户端使用
    ASP.NET MVC 拓展ActionResult实现Html To Pdf 导出
    ASP.NET MVC 拓展ViewResult实现word文档下载
    RabbitMQ入门教程——安装及配置
    MongoDB学习笔记——分片(Sharding)
    MongoDB学习笔记——Replica Set副本集
    MongoDB学习笔记——Master/Slave主从复制
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/12079509.html
Copyright © 2011-2022 走看看