LyScript 插件实现UPX脱壳

LyScript 插件可实现对压缩壳的快速脱壳操作,目前支持两种脱壳方式,一种是运用API接口自己编写脱壳过程,另一种是直接加载现有的脱壳脚本运行脱壳。

首先准备一个加了UPX压缩壳的程序,然后我们通过自己编写脚本完成脱壳任务。 我们将当前EIP停留在UPX壳的首地址处,执行如下脚本,将可以自动寻找到当前EIP的具体位置。

from LyScript32 import MyDebugif __name__ == "__main__":# 初始化dbg = MyDebug()# 连接到调试器connect_flag = dbg.connect()print("连接状态: {}".format(connect_flag))# 检测套接字是否还在ref = dbg.is_connect()print("是否在连接: ", ref)is_64 = False# 判断是否时64位数if is_64 == False:currentIP = dbg.get_register("eip")if dbg.read_memory_word(currentIP) != int(0xBE60):print("[-] 可能不是UPX")dbg.close()patternAddr = dbg.scan_memory_one("83 EC ?? E9 ?? ?? ?? ?? 00")print("匹配到的地址: {}".format(hex(patternAddr)))dbg.set_breakpoint(patternAddr)dbg.set_debug("Run")dbg.set_debug("Wait")dbg.delete_breakpoint(patternAddr)dbg.set_debug("StepOver")dbg.set_debug("StepOver")print("[+] 程序OEP = 0x{:x}".format(dbg.get_register("eip")))else:currentIP = dbg.get_register("rip")if dbg.read_memory_dword(currentIP) != int(0x55575653):print("[-] 可能不是UPX")dbg.close()patternAddr = dbg.scan_memory_one("48 83 EC ?? E9")print("匹配到的地址: {}".format(hex(patternAddr)))dbg.set_breakpoint(patternAddr)dbg.set_debug("Run")dbg.set_debug("Wait")dbg.delete_breakpoint(patternAddr)dbg.set_debug("StepOver")dbg.set_debug("StepOver")print("[+] 程序OEP = 0x{:x}".format(dbg.get_register("eip")))dbg.close()

运行如上代码,将通过特征码快速定位并寻找到程序加壳前的OEP位置。

另一种方式是直接寻找原生脱壳脚本,并使用LyScript加载执行脱壳,如下是一段原生脱壳脚本,我们保存在磁盘中。

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

接着通过LyScript插件,将其加载到x64dbg脚本引擎中,并直接运行。

from LyScript32 import MyDebugif __name__ == "__main__":# 初始化dbg = MyDebug()# 连接到调试器connect_flag = dbg.connect()print("连接状态: {}".format(connect_flag))# 检测套接字是否还在ref = dbg.is_connect()print("是否在连接: ", ref)# 加载并运行脚本dbg.script_loader("d://script.txt")dbg.script_run()dbg.close()

同样可以寻找到正确的OEP位置。

此时直接在OEP位置执行转存内存即可完成脱壳。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352878.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

DDCTF-re1-upx脱壳及去aslr

这道题目比赛时写的比较失败,壳用ESP定律没脱去,用脱壳机也没脱去。只好动态调试出结果。比赛结束后经过别的师傅们指导,了解了这题的脱壳方法。 使用linux进行脱壳命令 sudo apt-get install upx 安装脱壳机 之后输入命令upx -d re1.exe 发…

手动UPX脱壳演示

首先,用PEid打开加壳后的程序CrackmeUPX.exe,可以发现使用的是UPX壳。UPX壳是一种比较简单的压缩壳,只需要根据堆栈和寄存器的值进行调试,就能找到程序的正确入口点。当然,如果不怕麻烦的话,也可以全程单步调试&#x…

upx脱壳(手动)

1.upx脱壳几乎可以算是最简单的了,第一步还是查壳 2.第二步当然是od打开,提示解析代码,是和否都可以,然后f8,打硬件断点。 3.此时再f9执行到硬件断点,可以看到popad,壳代码到这基本上结束了&a…

upx脱壳日记

一、静态方法 upx -d 有时候可能会失败,需要切换使用正确的UPX版本。Windows下内置对各UPX版本的第三方图形化界面UPXShell工具,可以方便的切换版本,通过go按钮,可以切换upx加壳版本与脱壳版本 二、动态方法(手脱&am…

利用ESP定律的upx脱壳实践

背景: 除了命令行upx -d脱壳,还有手动脱壳。ESP定律的本质是堆栈平衡,又称堆栈平衡定律,是应用频率最高的脱壳方法之一,脱壳的目的就是找到真正的OEP(源文件的EP代码) 方法: 从push…

在线教育APP小程序系统开发 教培行业一站式解决方案

移动互联网如今已经深入到我们生活的方方面面,教育行业也不例外。如今市面上的在线教育APP小程序系统开发大受欢迎,很多学校、培训机构等都争相开发应用软件,以求通过全新的模式来满足不断扩大的市场需求,为用户提供更高质量的服务…

upx脱壳工具_攻防世界simple_unpack_逆向之旅003

攻防世界simple_unpack_逆向之旅003 前言一、使用exeinfo PE查看该文件二、使用upx脱壳三.使用ida打开脱壳处理后的文件总结 前言 先给出题目的链接: https://adworld.xctf.org.cn/task/answer?typereverse&number4&grade0&id5077&page1 题目说是…

[已发表,转载勘误]Android upx脱壳

已发在https://www.anquanke.com/post/id/197643 不过有部分内容发布之后无法编辑,勘误后如下。 Android upx脱壳 写在前面 因为我不是pc平台过来的,而是直接从Android入门的,所以upx壳其实一开始并不了解,后来接触到&#xff…

UPX压缩脱壳

该方法可针对 upx 变种,但Android Linker 的时候不需要section表, 所以我们不能修复 section 表 进行SO层代码脱壳 1. 使用IDA 打开libexec.so,在导出函数中找到.init_proc 函数(0x39A79), 搜索特征码7D 27 00 DF 搜索到下面语句 2.自己编译一个load程序 , 然…

UPX脱壳总结

我近期研究了一下UPX壳的脱壳方法,下面给出脱壳示例: UPX作为一款元老级PE加密壳,在以前的那个年代盛行,著名病毒【熊猫烧香】就是使用这款加密壳。 现在我们一起来脱UPX壳来揭开它的神秘面纱。 首先,PEiD载入含UPX壳…

记一次没遇到过的UPX脱壳

关于壳的介绍见CTF-WIKI 这里就不多赘述了 拿到我们的程序,先查看 64位upx壳,首先直接upx -d试一下,结果是失败报错提示下图 (一开始也有怀疑过是不是版本不兼容的问题,后来尝试高版本还是兼容低版本的) …

CTF逆向-Upx脱壳攻防世界simple unpack

文章目录 前言UPX技术原理应用范围软件使用 CTF实战程序查壳UPX脱壳 总结 前言 加壳软件分两类: 压缩壳:压缩的目的是减少程序体积,如 ASPack、UPX、PECompact 等;加密壳:加密是为了防止程序被反编译(反汇…

UPX脱壳逐一跟踪分析

UPX脱壳逐一跟踪分析 写在前面OD跟踪命令先结合PE知识分析分析“新年快乐.exe” 写在前面 之前看到的UPX脱壳文章都只是教了方法,对UPX的原理少有提及。看了《逆核》的UPX脱壳一章后,俺尝试把UPX脱壳与PE文件结构的知识结合起来整理了一些(也…

逆向:UPX脱壳

2020/05/18 - 引言 本身对加壳这种东西只是知道,只知道可以使用软件进行自动化脱壳,没有具体了解过原理。然后,最近部署的蜜罐经常下载UPX加壳的样本。这次就来分析一下。 学习到的东西 利用vim修改十六进制内容upx脱壳 样本 首先&#xff0c…

对于UPX脱壳的解决

(upx学习ing,不定期更新一些自己遇到的一些关于此的比较好的题目或者感悟) 对于手动脱壳,我们有两种常用的安全工具,一个是od,另一个是ida。两个方法略有不同。对于脱一般的程序壳的时候,我主要用的是ida来脱壳&#…

Linux4.9 Tomcat部署及优化

文章目录 计算机系统5G云计算第六章 LINUX Tomcat部署及优化一、Tomcat概述1.Tomcat核心组件2.什么是 servlet3.什么是 JSP4.Tomcat 功能组件结构5.Container 结构分析6.Tomcat 请求过程7. 配置文件 二、Tomcat 服务部署1.关闭防火墙,将安装 Tomcat 所需软件包传到/…

elf 变异upx 脱壳

题目 是某ctf题 首先使用IDA打开: 函数极少,有壳。 查看函数 这个跳转比较可疑 下面进行IDA动态调试 进入loc_52D516 再进入 直到找到jmp r13 运行到这里,F8跳转 直接retn下断点F9,直接retn下断点F9重复, 直到…

upx手动脱壳

工具 upx:upx是一个开源的压缩壳工具,可以到github下载upxStudy_PE工具,可以到看雪论坛下载 upx简单的用法 upx src.exe命令将src.exe加壳 upx src.exe -o dst.exe命令将src.exe加壳并另存为dst.exe upx手动脱壳 脱壳原理 平衡堆栈法(又…

upx脱壳教程(buuctf逆向题新年快乐)

upx脱壳 脱壳教程步骤:工具: 实际操作OEP导出内存文件(dump)修复 题目链接 脱壳教程 步骤: 1.找到OEP 2.导出内存文件(dump) 3.修复 工具: 吾爱破解OD x32dbg/x64dbg 实际操作 …

微信小程序开发之云函数本地调试

环境 微信开发者工具 Stable 1.06.2303220云开发控制台 v1.5.47 简介 微信云开发提供了云函数本地调试功能,在本地提供了一套与线上一致的 Node.js 云函数运行环境,让开发者可以在本地对云函数调试: 在本地调试时,可以设置断点…