zoukankan      html  css  js  c++  java
  • 脱壳第一讲,手工脱壳ASPack2.12的壳.ESP定律

          脱壳第一讲,手工脱壳ASPack2.12的壳.ESP定律

    一丶什么是ESP定律

    首先我们要明白什么是壳.壳的作用就是加密PE的.

    而ESP定律就是壳在加密之前,肯定会保存所有寄存器环境,而出来的时候,则会恢复所有寄存器的环境.

    这个就成为ESP定律.(当然我个人理解.可能有更好的理解,请下方评论,我会更改)

    pushad的时候,肯定所有寄存器入栈.

    二丶利用工具脱掉ASPACK2.12的壳

    首先,我们找一个带壳的工具,利用PEID查壳.查看是什么壳.

     

    OD附加进程.

    可以看出,一开始就已经pushad (保存所有寄存器环境)了,那么只需要找到popad的位置即可.

    思路:

           因为pushad的时候,所有寄存器传参,当popad的时候,肯定会修改寄存器的值

    所以在栈中下硬件访问或者硬件写入断点.

    先F8走一步,看栈

     

    看得出,所有寄存器已经入栈了.所以我们在数据窗口中,输入栈地址.(保存寄存器的栈地址,随便哪个都可以)然后下硬件访问断点.

     

    我是定位到栈顶的位置,12ffa8的位置,当然也可以是下边的.

    下硬件访问或者硬件写入断点.

     

    然后F9运行起来.发现会断下来.

     

    这个地方则是出来的地方,那么ASPack的壳有一个特征,就是出来之后会跳转,然后有两个ret

    因为程序是32位程序,所以我们要放到32位的虚拟机里面去脱壳.

    然后我们继续F8跟随.一直跟随到一个JMP位置,这个地方就是OEP了.

     

    然后我们使用OD的插件去脱壳, 这个插件是修复PE的导入表的.可以直接利用.

     

    然后点击脱壳即可,如果没有这个工具,你需要自己手动解析PE,然后重建导入表才可以.

    默认选择方式1

    脱壳之后,查看是否还有加密.

     

     没有pushad保存寄存器环境了,已经成功脱壳.

     课堂代码资料: 链接:http://pan.baidu.com/s/1skKYA5n 密码:2di6

     作者:IBinary
    出处:http://www.cnblogs.com/iBinary/
    版权所有,欢迎保留原文链接进行转载:)

    注意,一定是在32位系统下脱壳.

  • 相关阅读:
    flex
    两端对齐
    background-clip、background-origin、box-sizing
    animation
    transform translate transition 的区别
    如何将页脚固定在页面底部
    normalize.css
    使用 Swift 制作一个新闻通知中心插件(1)
    在 App 扩展和主 App 间共享数据
    asp.net core Cookie认证
  • 原文地址:https://www.cnblogs.com/iBinary/p/7726721.html
Copyright © 2011-2022 走看看