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脱壳脚本.

脚本如下:

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

LoardPe与Import REC X64dbg脚本 脱壳 Upx的更多相关文章

  1. 脱壳——UPX脱壳原理(脱壳helloworld)

    脱壳--UPX脱壳原理 脱壳步骤 1 找到OEP 2 dump(导出)内存文件 3 修复 1 找到OEP 1 程序运行先从壳代码运行,壳代码执行完之后会跳转到真正的OEP,也就是是说第一步,首先要找到 ...

  2. 【笔记】单步跟踪法与UPX的脱壳理解

    用PEiD查壳           UPX v0.89.6 - v1.02 / v1.05 - v1.22    这个是入门的壳,只是一个简单的压缩壳 用Stud_PE查看PE文件头信息       ...

  3. 刀锋上前行!绕过Ramint蠕虫病毒直接脱壳

    系统 : Windows xp 程序 : 某游戏客户端 程序下载地址 :不提供 要求 : 脱去压缩壳 使用工具 : OD & PEID & LordPE & Import RE ...

  4. X86逆向14:常见的脱壳手法

    本章节内容将介绍软件的脱壳技术.什么是加壳?加壳就是用来压缩或者保护软件不被非法修改破解的一种工具,而脱壳就是将已经加壳的程序从壳中剥离出来,既然能给程序进行加壳,那也就会有相应的脱壳方法,本节课我们 ...

  5. IDA分析脱壳后丢失导入表的PE

    1. 问题 一些程序经过脱壳后(如用OD的dump插件),一些导入表信息丢失了,导致拖入IDA后看不到API的信息(如右图所示,第一个红圈处实际是GetCurrentProcessId),给分析造成极 ...

  6. X86逆向15:OD脚本的编写技巧

    本章节我们将学习OD脚本的使用与编写技巧,脚本有啥用呢?脚本的用处非常的大,比如我们要对按钮事件进行批量下断点,此时使用自动化脚本将大大减小我们的工作量,再比如有些比较简单的压缩壳需要脱壳,此时我们也 ...

  7. 脱壳——修复加密IAT

    脱壳--修复加密IAT 对两个练手程序进行脱壳修复加密IAT(其实是一个程序,只是用了几种不同的加壳方式) 第一个程序 Aspack.exe 下载链接:https://download.csdn.ne ...

  8. Themida和Winlicense加壳软件脱壳教程

    (一)Themida和不用license的Winlicense加壳软件就不说了,直接上脚本脱壳. (二)先看看不同版本OEP的一些小特征: Temida2.1.X.X版本之后的OEP特征(2.0.8. ...

  9. html/css基础篇——link和@inport详解以及脚本执行顺序探讨

    先说一说两者之间的异同 两者都可以引用外部CSS的方式,现在主流浏览器两者都支持(ps:@import是CSS2.1提出的),但是存在一定的区别: 1.link是XHTML标签,除了加载CSS外,还可 ...

随机推荐

  1. 使用timeit测试Python函数的性能

    timeit是Python标准库内置的小工具,可以快速测试小段代码的性能. 认识timeit timeit 函数: timeit.timeit(stmt, setup,timer, number) 参 ...

  2. 小程序开发技巧(三)-- 云开发时效数据刷新和存储 (access_token等)

    小程序云开发时效数据刷新和存储 (access_token等) 1.问题描述 小程序中经常有需要进行OCR识别,或者使用外部api例如百度AI识别等接口,请求调用这些接口需要令牌,即一些具有时效性的数 ...

  3. 原生js实现在表格用鼠标框选并有反选功能

    今天应同学要求,需要写一个像Excel那样框选高亮,并且实现框选区域实现反选功能.要我用原生js写,由于没什么经验翻阅了很多资料,第一次写文章希望各位指出不足!! 上来先建表 <div clas ...

  4. Codeforces Round #620 (Div. 2)

    Codeforces Round #620 (Div. 2) A. Two Rabbits 题意 两只兔子相向而跳,一只一次跳距离a,另一只一次跳距离b,每次同时跳,问是否可能到同一位置 题解 每次跳 ...

  5. Docker部署LAMP项目

    前言 之前我们学习了如何在Linux部署LAMP项目,今天我们来学习一下如何在Docker下部署LAMP项项目吧! Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条 ...

  6. TensorFlow Serving实现多模型部署以及不同版本模型的调用

    前提:要实现多模型部署,首先要了解并且熟练实现单模型部署,可以借助官网文档,使用Docker实现部署. 1. 首先准备两个你需要部署的模型,统一的放在multiModel/文件夹下(文件夹名字可以任意 ...

  7. 22 Specifications动态查询

    Specifications动态查询 有时我们在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构建相应的查询语句,在Spring Data JPA中可以通过JpaSpecificationE ...

  8. 使用python3编写程序,生成10个随机数,每个元素的值介于1到100之间,并计算所有元素的和、平均值。

    代码如下: import random n = 0 sum = 0 while n < 10: num = random.randint(1, 100) sum = sum + num n += ...

  9. Linux apache让网页编码错误

    今天帮一个小伙伴搞作业,遇到安装discuz乱码问题,就顺便在这里写一下,以供其他同学纠正. 开apache配置文件/etc/httpd/conf/httpd.conf 查找AddDefaultCha ...

  10. Flask 使用pycharm 创建项目,一个简单的web 搭建

    1:新建项目后 2:Flask web 项目重要的就是app 所有每个都需要app app=Flask(__name__)   3:Flask 的路径是有app.route('path')装饰决定, ...