zoukankan      html  css  js  c++  java
  • 【个人笔记】ximo早期发的脱壳教程——手脱UPX壳

    【个人笔记】ximo早期发的脱壳教程——手脱UPX

     

    壳分为两种:压缩壳和加密壳,UPX是一种很简单的压缩壳。

     

    手脱UPX壳:

    工具:ExeinfoPE、OD

    对象:rmvbfix

    方法1:单步跟踪

    将要脱的exe扔进od。

     

    这里选择"否",不然有些操作会出现错误。

     

     

    进入之后从起点开始单步执行(快捷键F8),遇到pxx注意跳跃方向,手动断点跳过往回跳的指令。

     

     

    遇到这种jxx后跟call指令的一并跳过。

     

     

    一直单步知道如上图这样的,跳跃跨度极大,让其跳跃后便可以到达真正的入口:

     

     

    在入口我们右键便可以用od内工具进行脱壳。

     

    这里选择方式1/2都可以。

     

    方法2:ESP定律法

    一进入要先确保硬件断点是清空状态的。

     

    我们进行push入栈之后,在右侧寄存器里可以看到ESP有了操作,右键让其进入数据窗口。

     

     

    也可以在下方指令框中输入 dd/hr ESP地址

     

     

    设置硬件访问,word和Dword都可。

     

     

    然后运行一下:

     

     

    随后就和方法1一样继续往下走。

    方法3:二次内存镜像法

     

     

    可以通过菜单栏"查看—内存"或直接按m进入内存界面:

     

    对区段".rsrc"下断点,下面的区段不用管,之下第一个rsrc,后面的是系统的区段。

    下完之后运行走一步,然后回来:

     

     

    回来之后在401000处再下一次

    随后单步往下走,同方法1

     

    方法4:直捣黄龙(适用于绝大部分的UPX壳和部分Aspack壳)

    众所周知,push的反义词是pop,有入栈的push,必定有出栈的pop

     

     

    我们查找popad,因为是pushad所以后面的ad相同,注意不用勾选整个块,因为整个块的popad绝对不止一个。

     

     

    好,找到了,单步运行,同方法1

     

     

     

     

     

     

     

     

  • 相关阅读:
    构建maven的web项目时注意的问题(出现Error configuring application listener of class org.springframework.web.context.ContextLoaderListener 或者前端控制器无法加载)
    c3p0私有属性checkoutTimeout设置成1000引发的调试错误:
    sql面试题(学生表_课程表_成绩表_教师表)
    传值与传址
    new String()理解
    hashcode的理解
    CentOs安装ssh服务
    openstack swift memcached
    openstack swift middleware开发
    java实现二叉树
  • 原文地址:https://www.cnblogs.com/DorinXL/p/12254264.html
Copyright © 2011-2022 走看看