脱壳时快速定位“最后一次异常”的方法

软件脱壳完全指南:从ESP定律到OEP定位与导入表修复 软件加壳通过压缩或加密保护可执行文件,逆向工程中脱壳是分析恶意样本和评估安全性的基础。其原理是定位原始入口点(OEP),转储内存并修复导入表。掌握脱壳技术能提升逆向效率,应用于恶意代码分析、兼容性测试等场景。本文深入解析ESP定律、内存断点等核心方法,结合OD、x64dbg与ImportREC工具,覆盖UPX、VMProtect等常见壳的实战流程,助你系统掌握脱壳技能。 阅读详情

 

////////////////////////////////////////////////////////////////////////////////////////////
文件名称:脱壳时快速定位“最后一次异常”的方法
编写作者:Coderui
编写时间:2008年05月02日
联系方式:coderui@163.com
作者博客:http://hi.baidu.com/coderui
---------------------------------------------------------------------
我总结出两种可以交替使用的定位“最后一次异常”的方法,这些方法可以帮助我们在脱壳时提高一定的速度,现在分享给大家!

方法一(试用环境为:壳中只存在10次以内的异常):
设置OD为不忽略任何异常,接着载入加壳程序并按[F9]运行,遇到异常我们就使用[Shift+F9]来忽略异常并继续运行它,直到程序完全运行起来为止。这时,我们记录下一共手动忽略过多少次异常,然后重新载入本程序,[F9]运行并快速使用[Shift+F9]来忽略N-1(假设异常的总次数为N)次异常就到最后一次异常的位置了。现在,我们看寄存器就可以找到最后一处异常处理代码的入口地址了。

方法二(试用环境为:壳中的异常次数不受限制):
设置OD为忽略任何异常,接着载入加壳程序并按[F9]运行。当程序完全运行起来以后,我们查看OD的“运行记录”,这个“记录”会按异常出现的顺序把它完整的显示出来。这时,我们可以根据如下公式来快速的定位到最后一处异常处理位置。
1、内存访问异常-INT3异常-内存访问异常-INT3异常-无效或特权指令异常 = 设置OD除“无效或特权指令异常”不忽略以外,其它异常全部忽略,按[F9]运行就直接定位到最后一处异常了。
2、内存访问异常-INT3异常-内存访问异常-INT3异常 = 设置OD除“INT3异常”不忽略以外,其它异常全部忽略,按[F9]运行后,使用一次[Shift+F9]就直接定位到最后一处异常了。
3、内存访问异常-INT3异常-内存访问异常 = 设置OD除“内存访问异常”不忽略以外,其它异常全部忽略,按[F9]运行后,使用一次[Shift+F9]就直接定位到最后一处异常了。
4、内存访问异常-内存访问异常-INT3异常-内存访问异常-内存访问异常-内存访问异常-INT3异常 = 设置OD除“INT3异常”不忽略以外,其它异常全部忽略,按[F9]运行后,使用一次[Shift+F9]就直接定位到最后一处异常了。
5、内存访问异常-INT3异常-无效或特权指令异常-内存访问异常-无效或特权指令异常-INT3异常 = 设置OD除“INT3异常”不忽略以外,其它异常全部忽略,按[F9]运行后,使用一次[Shift+F9]就直接定位到最后一处异常了。
6、内存访问异常(N次)-INT3异常-无效或特权指令异常-内存访问异常(N次)-无效或特权指令异常(N次)-INT3异常(N次)-无效或特权指令异常 = 设置OD除“INT3异常”不忽略以外,其它异常全部忽略,按[F9]运行后,使用一次[Shift+F9],设置OD除“无效或特权指令异常”不忽略以外,其它异常全部忽略,再使用一次[Shift+F9]就直接定位到最后一处异常了。
7、类推(根据日志中记录异常的结构来恰当的设置并更换不同异常的忽略,可以在脱壳时减轻很多工作量。)……………………

需要注意的细节问题:
1、方法一只适合壳中只存在少量异常的情况下来使用,不然手会被累抽筋的。
2、要保证异常是壳中产生的,而不是程序内部代码所产生的。
////////////////////////////////////////////////////////////////////////////////////////////

七种OD查找oep的方法 七种OD查找oep的方法 单步跟踪法 ESP定律法 内存镜像法 一步到达OEP 最后一次异常法 模拟跟踪法 “SFX”法 立即下载

相关推荐

Blazor Session设置

微软官方封装了一些浏览器的操作,其中就有Session的操作的封装ProtectedSessionStorage 微软文档因为我们知道,依赖注入的生命周期是Singleton程序Scoped网页:刷新,url直接跳转都会重置。Transient路由C# Blazor 学习笔记(10):依赖注入但是没有一个和浏览器绑定的生命周期。即浏览器关闭才会退出。这个是后端无法获取的,因为后端根本不知道浏览器何时关闭。这个只能用浏览器自带的缓存。

qq_44695769的博客 1788

【异常检测】Task1:异常检测介绍(2天)

Task1:异常检测介绍(2天) 笔记 练习 1、安装Scikit-learn及pyod 安装Scikit-learn参考步骤:https://blog.youkuaiyun.com/u013709270/article/details/70441043 我采用pip安装pyod,安装步骤参考:https://github.com/yzhao062/pyod#installation pyod中文介绍https://zhuanlan.zhihu.com/p/58313521 pyod的api英文文档https://p

qq_45093368的博客 298

AMD显卡跑MiniMax H3提速30%:SageAttention ROCm适配全记录

在Transformer架构的视频生成模型中,注意力计算往往是性能瓶颈,尤其当显存资源受限时,低精度量化与内核优化成为关键突破口。SageAttention通过将QK^T矩阵乘法量化为INT8,并以FP16/INT4表达注意力概率矩阵,在保证画质的前提下显著降低访存与计算开销,相比传统FlashAttention具备更高速度上限。这一技术价值在本地部署场景尤为突出——当用户使用非NVIDIA显卡运行大型视频模型时,通用优化库常因依赖CUDA而失效。本文聚焦AMD ROCm平台下的MiniMax H3视频生成

weixin_32238157的博客 288

最后一次异常法

最后一次异常法 如果我们在脱壳的过程中发现目标程序产生大量异常的话,就可以使用最后一次异常法,我们来看一个例子,名字叫做”bitarts_evaluations.c”。 我们还是使用Patch过的OD来加载它,并且配置好反反调试插件。 然后将EXCEPTIONS菜单项中的忽略各个异常的选项都勾选上,运行起来。 我们可以看到程序运行起来了,我们单击工具栏中L按钮打开日志窗口。 ...

weixin_30904593的博客 459

自动驾驶仿真:Carsim、NI和VTD联合仿真课题二

文章目录前言一、设备配置1、硬件需求2、网络配置二、Carsim工程配置1、创建工程2、创建数据库3、参数配置三、VTD工程配置1、创建工程四、Veristand工程配置1、创建工程五、运行程序 前言 上篇文章《Carsim、NI和VTD联合仿真课题一》简单地介绍了三者之间的联合框架,以及NI与VTD之间简单的组包与拆包指导。这篇文章将要讲述的是如何将三个软件联合起来,如何设置软件参数,用最简单的方法把仿真车开起来。 一、设备配置 1、硬件需求 注:真正的做智能驾驶仿真项目,至少需要两台电脑,一台实时机

zataji的博客 1万+

Python爬虫实战:5分钟搞定东方财富A股数据抓取(附完整代码)

本文提供了一套基于Python的A股数据自动化采集与分析系统构建方案。文章详细解析了如何通过稳健的爬虫框架从东方财富等公开数据源高效抓取A股数据,并设计数据库进行自动化存储与管理,特别适合量化研究和数据分析场景。

weixin_29062963的博客 4441

最后一次异常法_操作笔记

最后一次异常法 首先要把 Alt+o 调试设置 把忽略 所有异常的 √都取消掉 因为 要让异常出现 按SHIFT+F9 让异常出现 数几次 直到软件异常 这些异常就是壳的代码 断在最后一次异常   教程显示SE处理程序 有可能是SE句柄 反正是 SE开头的  右键反汇编窗口跟随 断下 se这里  后单步跟踪 注意向上的跳转 - Jmp ebp 如果是-好 没有上 没有下 通常

1172

C# 操作Excel的时候,出现"被呼叫方拒绝接受呼叫的异常"的解决方案(参考官方给出的解决方案)

首先官方有对这个错误给出解释和解决方案,连接如下: https://docs.microsoft.com/zh-cn/previous-versions/ms228772(v=vs.120)#%E5%8F%AF%E9%9D%A0%E7%BC%96%E7%A8%8B 简单来说,貌似是线程问题,我猜。。。 之前我尝试着在代码中添加 Thread.Sleep(1000); 来进行解决,这种办...

Ck_Max的博客 5770

逆向学习1-[脱壳技术]/篇1

壳 壳是包裹在程序外的一层代码,通常先于程序执行,达到防止源程序不被非法修改或反编译的目的 壳的分类 壳分为压缩壳和加密壳 压缩壳 压缩壳主要是帮助减少PE文件(Windows下的文件格式)大小,隐藏PE文件内部的代码和资源 常见的压缩壳有:Upx、ASpack、PECompat 加密壳 加密壳应用有多种防止代码逆向分析的技术,用该壳的PE文件会比原文件大很多,有时恶意程序也用加密壳来降低杀毒软件的扫描 常见的加密壳有:ASProtector、Armadillo、EXECryptor、T.

m0_52343643的博客 3900

最新打赏系统打赏源码麒麟最新打赏源码喜盈门打赏知识付费课程教程直播讲解

打赏源码打赏系统

qq_41095398的博客 2042

2026年1至9月武汉市房地产价格深度分析报告

本报告基于2026年1月至9月武汉市实际成交案例,从成交价格、区域分布、户型结构、价格走势等维度进行深度分析。数据来源包括武汉市住房保障和房屋管理局备案数据、主要中介机构成交记录及典型楼盘网签案例,覆盖全市15个行政区及主要功能板块。

王国平的博客 336

Path of Building 社区版:从 0 到 1 搭出一套能打的 PoE 离线构建规划实战

赛季初的某天,你站在新职业的起点,盯着天赋树纠结该先点哪颗节点;又或刚刷出一件好装备,不确定换上去到底赚多少伤害。这时候最需要的,是一个能在开荒前就把数值算准的工具——**Path of Building(PoB)社区版**,一款面向流放之路玩家的离线构建设划器:它把天赋树、装备词缀、技能连接和伤害计算放进同一个窗口,让你在进游戏前就确认这条路值不值得走。 ## 项目定位:一个本地运行的构建设划

gitblog_00772的博客 1098

S7-1500——(一)西门子PLC编程算法及程序设计1、拆解基本算法(一)

顺序队列也是一种操作受限的线性表,在一端添加数据,另一端取出数据,符合先进先出的特性工作过程:需要两个指针来指向存取元素的位置(头指针,尾指针)如下图头指针指向队列里边第一个元素位置(即下次出队元素所在的位置)尾指针是指向队列内最后一个元素的下一个位置(即下次要入队的元素要存放的位置)空队状态:最初始状态,队列没有任何元素,头指针和尾指针都指向队头,(由于没有任何元素,不能做出队操作,可进行入队操作)入队操作出队操作满队:一直入队,最终元素装满队列;满队后,虽然队列前面还有空间,但由于。

大小曲奇的博客 1609

逆向——脱壳

逆向——脱壳有壳和无壳的区别壳的类型区别脱壳的关键寻找OEP寻找大跳转SFX功能定位OEP内存执行定位OEPESP定律VB程序快速定位OEP最后一次异常法定位OEP利用壳常用函数来定位OEP参考文献 #脱壳 有壳和无壳的区别 壳的类型 压缩壳 加密壳 虚拟机壳 区别 入口点改变 区段信息改变 代码段程序隐藏 加壳程序修改后无法保存 运行后,恢复的程序会将修改的内容覆盖 脱壳的关键 寻找OE...

wk19951125的博客 1031

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

常用手动脱壳方法

常用手动脱壳方法 脱壳 方法一:单步跟踪法 1.用OD载入,点“不分析代码!” 2.单步向下跟踪F8,实现向下的跳。也就是说向上的跳不让其实现!(通过F4) 3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选) 4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现! 5.如果刚载入程序,在附近就有一个CAL

xcntime的专栏 1502

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LyScript 插件实现UPX脱壳

LyScript插件提供了对压缩壳的快速脱壳操作的功能。目前,LyScript插件支持两种脱壳方式,以帮助用户有效地解压被壳保护的程序。这两种脱壳方式使得用户能够根据实际情况选择最合适的方法来解压被壳保护的程序。无论是通过自己编写脱壳过程还是加载现有的脱壳脚本,LyScript插件都为用户提供了强大的工具和功能,以简化和加速脱壳操作的过程。

微软技术分享 8666

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android脱壳快速上手:BlackDex脱壳工具6步实战教程

BlackDex 是一款直接运行在手机上的 **Android 脱壳工具**,覆盖 Android 5.0~12,无需 Root、Xposed 或 Frida,普通真机与模拟器都能跑。这篇安卓APK脱壳教程,将带你用 6 步完成一次从安装到产出 dex 的完整实战。 ## 🎯 先解决一个真实问题:反编译器里全是 nop 不少新手都撞过这堵墙:把一个 APK 拖进反编译工具,打开核心方法,方法

gitblog_01411的博客 590

WuWa-Mod 安装指南:鸣潮无冷却、无限体力、15倍伤害一次配齐

WuWa-Mod 是一个开源的鸣潮模组(.pak)集合,把技能无冷却、无限体力、伤害倍率、自动拾取等 15 项功能拆成独立文件。本教程带你从克隆仓库到进游戏验证走完 5 步,顺带讲清楚怎么选搭配、出问题怎么排查。 ## WuWa-Mod 功能总览:先想清楚要改什么 装之前建议按"体验会怎么变"来挑,而不是按文件清单挑。这个项目里的功能大致分三类,不需要的一类可以整体跳过。 **探索自由度**

gitblog_00176的博客 446

常见脱壳方法

预备知识 1.PUSHAD (压栈) 代表程序的入口点, 2.POPAD (出栈) 代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近 3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。 方法一:单步跟踪法 1.用OD载入,点“不分析代码!” 2.单步向下跟踪F8,实现向下的跳。

云淡风轻 1888

ESP 定律法实战指南:CTF-Wiki 中基于堆栈平衡快速定位 OEP 的 Windows 脱壳方法

ESP 定律法是 CTF-Wiki 逆向专题(Windows 平台脱壳系列)中应用频率最高的脱壳方法之一,其核心思想是利用加壳程序解压/解密过程中必然存在的堆栈平衡现象,通过硬件断点快速切断壳代码、直达程序真正的入口点(OEP)。读完本篇,你将掌握 ESP 定律的完整原理、OllyDbg 中四步操作流程,并能结合仓库中的同系列文章完成从定位 OEP 到 DUMP、重建 IAT 的完整脱壳闭环。

gitblog_01015的博客 68

新手逆向实战三部曲:快速脱壳->爆破->进

本文详细介绍了软件逆向工程的三大核心技术:脱壳、爆破与追码。在脱壳部分,讲解了使用PEiD、ExeinfoPE等工具识别壳类型,通过OllyDbg定位OEP及修复导入表的方法。爆破教程重点阐述了定位关键代码、修改验证逻辑的技巧。追码进阶部分则深入分析了注册算法逆向、注册机编写等高级技术。文章采用分步骤讲解方式,配合典型代码示例,涵盖了从基础查壳到复杂算法分析的完整流程,同时强调了法律合规性和操作安全性,适合逆向工程学习者系统掌握软件分析技术。

vbnetcx的博客 3万+

EXE Pack ——脱壳

0x00 查看程序信息: 程序运行状态: 0X01调试器调试 一路F7,可以来到壳程序解密数据的代码,通过反汇编窗口可以实时的跟踪被修改的数据情况: 之后F7 进行单步调试,可以看到很多API函数的调用,在这里需要注意的是,CreateProcessA函数的调用,会新建一个与现有进程名字一样的新进程: 这个进程其实是一个守护进程的作用,在创建进程之后,就会退出当前进程,所以我们要做的操作...

4SecNet团队专栏 3011

Rome noLabelVar 完整指南:快速识别与处理标签变量同名 lint 命中

Rome noLabelVar 是 Rome 工具链中 `suspicious` 类别的一条 lint 规则,专门拦截「给 label 标注一个与作用域内已声明变量相同名字」的写法。该规则随 recommended 规则集默认开启,没有可配置选项,也不提供自动修复。只要标签名与作用域链上任意可见变量重合,它就直接报错。 ## 一图看懂:noLabelVar 规则元数据 先把关键元信息集中放在一

gitblog_01033的博客 994
上一篇: 网络游戏安全策略(Coderui原创)
下一篇: 解决载入(打开)加壳程序后,OD关闭退出的问题
coderui
博客等级 码龄20年 9粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值