zoukankan      html  css  js  c++  java
  • LoardPe与Import REC X64dbg脚本 脱壳 Upx

    LoardPe与Import REC X64dbg脚本 脱壳 Upx

    将要学习到的内容

    • x64脱壳脚本的编写
    • LoarPe 与Import 工具的使用

    一丶X64dbg调试器与脚本

    1.1 起因

    在逛论坛的时候,发现别人发的CrackMe带有UPX压缩,直接进行脱壳. 使用EPS定律即可.

    但是 x64Dbg下没有脱壳脚本,为什么使用脱壳脚本.原因是脚本方便.不用做重复动作.

    正因为没有脱壳脚本呢.所以进行脱壳脚本的编写.

    其实x64Dbg脚本特别简单.直接去官网去看就行.

    https://help.x64dbg.com/en/latest/commands/index.html

    脚本就是模拟人的手工操作.

    例如你在调试程序的时候, 单步步过(F8) 那么脚本的命令就是sti 你如果是步进(F7) 那么脚本的命令就是

    sto, 例如你通过x64Dbg界面下硬件断点. 那么脚本命令就是(bph) 具体参数可以查一下命令手册.

    1.2 脚本的调试

    写脚本简单,主要是脚本的调试.而且OllyDbg也有脚本.其实都是一样的.只不过命令有些许不同而已.

    具体的看一下差异化即可.

    Tab 在脚本窗口加载脚本之后,Tab建则是单步执行脚本.也就是一条命令一条命令的执行

    Space(空格键) Space则是直接运行起来你的脚本

    1.3 Upx脱壳脚本

    下面的脚本就是写的一个Upx脱壳脚本.注意Upx版本不同,有通用的Upx脚本,我的只是为了学习,临时针对我分析的CrackMe写的一个Upx脱壳脚本.

    脚本如下:

    bphc                        //清除所有硬件断点
    sti                         //执行一次F8(步过)
    bph esp,r,1                 //对当前Esp栈顶下 硬件读取断点,设置一个字节 r代表读取 
    erun                        //执行一次F9也就是运行起来,erun就是中间出异常了交给调试器执行
    find eip,e9,1000            //利用Find功能在EIP位置寻找 jmp,搜索的内存大小为1000
    bphc                        
    
    bph $result                 //搜寻的结果会放到 $result变量中
    erun                        //执行
    bphc       
    sto 2                       //执行一下F7
    cmt eip,"Current Eip is Oep Please Dump Entry" //在EIP位置填写注释
    ret
    
    

    其实这段脚本主要的功能就是 模拟ESP定律执行的步骤, 下好硬件断点,然后执行,之后之后会在断点位置断下,然后在寻找JMP,找到之后在对此位置下硬件断点.继续执行,继续断下,断下后然后进入就是OEP了.

    二丶LoardPe 内存Dump与Import Rec导入表修复工具

    2.1 脚本执行到OEP

    如上图所示,脚本执行之后会在OEP位置,我加了段提示就是告诉你要Dump内存了.

    x64也有相关插件直接dump+修复的工具.我没配置.索性使用这种方法.(loardpe + import rec)

    可以得出以下信息 OEP VA = 00401500

    ImageBase = 00400000 (这个不贴图了,是这个)

    以上信息一会会用到.

    2.2 LoardPe Dump内存

    此时x64Dbg在OEP位置,不要关闭x64,打开LoardPe 以管理员运行,不然可能搜索不到你的进程

    完整转存内存到文件即可. 此时这个文件无法正常运行,需要我们修复一下.

    2.3 Import Rec 进行修复

    总共四个步骤

    ps:以管理员运行 Import Rec

    • 1.选择你的进程,也就是x64Dbg 挂起的那个进程

    • 2.OEP位置, 这个就用到我们上面的信息了. OEP这里是RVA 我们上边得出OEP VA = 00401500 imageBase = 00400000

    RVA = VA - ImageBase = 1500

    所以这里我们填写1500即可. 注意,x64Dbg此时的EIP必须也是OEP位置.如果不是在你LoardPe的时候dump的内存就是错误的 且修复可能不成功

    • 3.Get Imports 获取导入表

      填写好上面信息之后点击获取导入表即可.可以获取相关导入表

      1. Fix Dump

        获取导入表之后,针对我们刚刚LoardPe dump下的内存文件进行修复.

        修复好之后就可以正常启动了

    工具以及样本: https://www.lanzous.com/iaymihg

  • 相关阅读:
    active learning
    PLS-00201: identifier 'SYS.DBMS_CUBE_EXP' must be declared
    浅谈防火墙
    yum安装nginx错误处理
    简单的SQL注入
    mysql之查询语句练习题
    Linux权限和用户管理
    Linux文件及目录查找命令~~续集
    linux文件及目录查找命令
    linux文件管理练习题
  • 原文地址:https://www.cnblogs.com/iBinary/p/12628176.html
Copyright © 2011-2022 走看看