解决载入(打开)加壳程序后,OD关闭退出的问题

从零开始逆向工程:CrackMe破解实战与OD调试入门 软件逆向工程是理解程序底层运行机制、分析软件行为与安全性的核心技术。其核心原理在于通过静态与动态分析,解析程序的执行流程与数据结构。这项技术在软件安全评估、漏洞挖掘、恶意代码分析及软件兼容性开发等领域具有重要价值。典型的应用场景包括分析未公开协议的通信过程、排查软件兼容性问题,以及进行授权范围内的安全研究。本文将以经典的CrackMe破解实战为例,具体演示如何运用OllyDbg动态调试器进行流程跟踪与关键跳转修改,实现一次完整的逆向分析过程,帮助初学者掌握逆向工程的基础方法论与工具链。 阅读详情

 

题目:解决载入(打开)加壳程序后,OD关闭退出的问题

编写:Coderui

邮箱:coderui@163.com

博客:http://hi.baidu.com/coderui

环境:Win XP-SP3,Ollydbg 1.10 cao_cong汉化第二版

关键字:脱壳;OD自动关闭;关闭OD;OD退出;载入后OD自动退出;打开后OD自动退出;

问题:
        “VMProtect”这个壳加密过的程序不能够使用OD(没加载反反调试插件)直接打开调试。原因是在使用OD打开时(还没有开始调试的情况下),OD会马上关闭退出,并且不会出现任何异常提示。

解决:
       昨天找了个时间研究了下这个加壳后的病毒程序样本(exe和dll版),通过多次尝试,发现了一个快速、简单的解决方法,在这里和大家分享下。
       在使用OD调试样本前,我们需要先手动去修改一下这个PE程序“导出表”中的“函数名数目”值。方法:使用“LordPE”打开要编辑的PE程序,然后依次选择[目录]->[导出表对应的“..”按钮],把“函数名数目”的值减1,并点击“保存”按钮,这样就OK了。为了好看些,您也可以把“函数数目”和“函数名数目”的值都同时减1并保存,效果一样。EXE和DLL版的程序都可以使用上述方法去解决这个问题,经过测试方法有效。

解释:
       一般情况下EXE不会加“导出表”,如果加了,就应该给出所导出的API函数。当我们打开加这个壳后的PE程序(EXE版)时,您会发现它存在“导出表”,但“导出表”中并没有导出的API函数。同时“函数数目”和“函数名数目”的值都比原PE程序设置的值大了1(如:EXE版“导出表”列表中显示了0个导出的API函数,壳将其“函数数目”和“函数名数目”的值都设置成了1;DLL版“导出表”列表中显示了0xD个导出的API函数,壳将其“函数数目”和“函数名数目”的值都设置成了0xE。)。所以我们将其减1,就OK了。被修改过的PE程序,可以正常运行,不会有任何影响。
      现在使用OD打开那个被我们修改过的加壳程序,OD就不会自动关闭退出了。这个壳内部还有很多反调试手段,极难搞(目前估计我还搞不定),呵呵!

壳检测出自己正在被调试时,会弹出如下提示信息(点“击确”定后退出):
------------------------------------------------------
C:/Documents and Settings/coderui/桌面/090316-A-0.exe
---------------------------
A debugger has been found running in your system.Please, unload it from memory and restart your program.
---------------------------
确定  
------------------------------------------------------

壳的入口代码如下(EXE版,第一个CALL进去以后,是一个向上的JMP。):
0044CB28 > 68 4EC42D0B     PUSH 0B2DC44E
0044CB2D    E8 E15E0000     CALL 090316-A.00452A13
0044CB32    68 4EE47306     PUSH 673E44E
0044CB37    E8 A75B0000     CALL 090316-A.004526E3
0044CB3C    60              PUSHAD
0044CB3D ^ 76 A6           JBE SHORT 090316-A.0044CAE5
0044CB3F    18E8            SBB AL,CH
0044CB41    A2 17000068     MOV BYTE PTR DS:[68000017],AL
0044CB46    4E              DEC ESI
0044CB47    44              INC ESP
0044CB48    1E              PUSH DS
0044CB49    04 E8           ADD AL,0E8
0044CB4B    14 4C           ADC AL,4C
0044CB4D    0000            ADD BYTE PTR DS:[EAX],AL
0044CB4F    3F              AAS
0044CB50    2F              DAS
0044CB51    026CC7 04       ADD CH,BYTE PTR DS:[EDI+EAX*8+4]
0044CB55    24 7D           AND AL,7D
0044CB57    7B 6E           JPO SHORT 090316-A.0044CBC7
0044CB59    27              DAA
0044CB5A    01C7            ADD EDI,EAX
0044CB5C    83EC FC         SUB ESP,-4
0044CB5F ^ 0F85 D5D9FDFF   JNZ 090316-A.0042A53A
0044CB65    66:0FBAE0 0D    BT AX,0D
0044CB6A    84F4            TEST AH,DH
0044CB6C    8B3C8F          MOV EDI,DWORD PTR DS:[EDI+ECX*4]
0044CB6F    53              PUSH EBX
0044CB70    85FF            TEST EDI,EDI
0044CB72    FF3424          PUSH DWORD PTR SS:[ESP]
0044CB75    E8 4CF0FFFF     CALL 090316-A.0044BBC6
0044CB7A    E9 7B200000     JMP 090316-A.0044EBFA
0044CB7F    68 4E844B03     PUSH 34B844E
0044CB84    E8 63320000     CALL 090316-A.0044FDEC
0044CB89    12B7 37873687   ADC DH,BYTE PTR DS:[EDI+87368737]

壳的入口代码如下(DLL,第一个CALL进去以后,是一个向上的JMP。):
009E602D > 68 96FA1F6F     PUSH 6F1FFA96
009E6032    E8 A5200A00     CALL HookSys.00A880DC
009E6037    F3:A4           REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
009E6039    60              PUSHAD
009E603A    FF7424 10       PUSH DWORD PTR SS:[ESP+10]
009E603E    8B7424 30       MOV ESI,DWORD PTR SS:[ESP+30]
009E6042    66:C70424 0B41 MOV WORD PTR SS:[ESP],410B
009E6048    C70424 0395CB1B MOV DWORD PTR SS:[ESP],1BCB9503
009E604F    C60424 65       MOV BYTE PTR SS:[ESP],65
009E6053    9C              PUSHFD
009E6054    8D6424 38       LEA ESP,DWORD PTR SS:[ESP+38]
009E6058 ^ E9 D10DFFFF     JMP HookSys.009D6E2E
009E605D    68 88FA8FFC     PUSH FC8FFA88
009E6062    E8 31040A00     CALL HookSys.00A86498
009E6067    04 77           ADD AL,77
009E6069    1999 6897FA9F   SBB DWORD PTR DS:[ECX+9FFA9768],EBX
009E606F    68 E85FFF09     PUSH 9FF5FE8
009E6074    00F2            ADD DL,DH
009E6076    6E              OUTS DX,BYTE PTR ES:[EDI]                ; I/O 命令
009E6077    93              XCHG EAX,EBX
009E6078    27              DAA
009E6079    68 9BFAAFCC     PUSH CCAFFA9B
009E607E    E8 51FF0900     CALL HookSys.00A85FD4
009E6083    D023            SHL BYTE PTR DS:[EBX],1
009E6085    B7 C2           MOV BH,0C2
009E6087    52              PUSH EDX
009E6088    68 EEF94FD9     PUSH D94FF9EE
009E608D    E8 06040A00     CALL HookSys.00A86498

软件逆向实战:从关键跳转定位到程序爆破的完整指南 在软件安全与逆向工程领域,理解程序执行流程和控制逻辑是核心技术基础。程序在CPU层面通过条件跳转指令(如JZ、JNZ)实现分支判断,这是软件注册验证、功能锁定的常见实现机制。掌握调试技术,能够精准定位并修改这些关键跳转,不仅有助于深入理解计算机底层原理,还能应用于软件调试、安全评估和教育研究等场景。通过动态分析工具跟踪程序流,识别CMP/TEST指令后的条件跳转点,是逆向工程中“爆破”技术的核心实践。本文以x64dbg调试器为例,结合CrackMe实例,详细演示如何从API断点设置、指令跟踪到跳转修改与补丁 阅读详情

相关推荐

逆向思维训练:用OllyDbg与GetWindowTextA API分析软件注册验证逻辑

在软件安全与系统分析领域,理解程序内部运行机制是核心技能。其原理在于通过动态调试与静态分析,监控程序执行流与数据流,从而揭示其内部逻辑。这项技术的价值在于提升软件安全性评估、漏洞挖掘及恶意代码分析能力,广泛应用于软件安全审计、协议逆向和遗留系统维护等场景。本文以GetWindowTextA这一关键Windows API为切入点,结合OllyDbg调试器,通过追踪用户输入处理流程,详细演示如何运用逆向工程思维,像侦探一样逐步剖析一个典型CrackMe程序的注册验证算法,完成从黑盒到白盒的思维跃迁。

weixin_30417487的博客 477

安装服务器提示A debugger has been found running in your system. Please, unload it from memory and restart

解决方法:运行msconfig,取消调试模式,重启电脑再安装。

北京华企盾的优快云博客 3362

[新手入门]动态调试利器OllyDbg的实战应用指南

本文详细介绍了动态调试工具OllyDbg的实战应用,包括其核心功能、环境搭建、基础操作及高级调试技巧。通过破解简单密码验证的实例,展示了OllyDbg在逆向分析中的强大能力,帮助新手快速掌握动态调试技术,提升逆向工程效率。

weixin_42537919的博客 272

【求助】在visual studio 2022调试时弹出提示“a debugger has been found running in your system……”

​在visual studio 2022调试时弹出提示“a debugger has been found running in your system. please, unload it from memory and restart your program.”(已发现一个调试器正在您的系统中运行。请将其从内存中卸载,然后重新启动您的程序。

qq_38734629的博客 2105

郁金香OD 2012网授版逆向工程工具包详解

郁金香OD 2012是一款基于OllyDbg深度定制的增强型逆向分析工具,专为应对现代软件保护机制而设计。它在保留原生调试器易用性的同时,集成多款功能插件(如等),显著提升复杂环境下的动态分析效率。该工具广泛应用于恶意代码分析、漏洞挖掘及教学实训场景,尤其适合处理加壳、混淆及反调试较强的可执行文件。通过模块化架构与标签系统协同,实现调试上下文的持久化管理,为团队协作逆向提供有力支撑。在反汇编过程中,原始机器码对应的函数地址通常表现为sub_401000或loc_402A3C。

weixin_35752122的博客 1685

OllyICE过VMP、NP白色郁金香专版OD

白色郁金香专版OD过NP、VMP想怎么过就怎么过。 更新了多有插件过最新 Themida/WinLicense V1.9.9.0 和 VMProtect.v2.05 新增加了API 断点工具(由于新进群的菜鸟多) 修正了DBGHELP.DLL phamt 自己修改了TMD VMP 浮点错误 HideOD.dll 插件和StrongOD 冲突剥离插件在根目录与要自己配置 (这里只是为了共享,并非有意盗版。)

[原创]VMProject 3.x 3.5: 2021年绕过anti-debugging的最新配置, 解决“a debugger has been found“的问题.

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 个人网站: https://www.x86asm.org QQ交流: 643439947 编程生涯: 2001年~至今[共20年] 职业生涯: 18年 开发语言: C/C++、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse 技能种类: 逆向 驱动 磁盘 文件 研发领域: Windows应用软件安全/Win

其实我不是代码教父,我只是猪头三 9336

过SE检测过VM检测的完美OD

想过SE壳,被检测,想过VM壳,被检测,修改虚拟机配置,还是被检测,是不是很头疼,下载这个版本的OD吧,过SE,过VM

恶意代码分析实战Lab01——03&04

第一步:查看文件是否加壳: 加了壳,FSG壳,在我之前的博客里边有过脱FSG壳的具体简称,这里就不再赘述,直接脱出来,加载到OD中: 第二步:将程序,用IDA打开进行详细分析: 第三步:分析main函数; 可以看到这个main函数的内容相对比较简单,只是几个API函数的调用,所以只要将这几个API函数的功能搞清楚基本就分析完了: 嘴和新的一点是IDA没有解析出来的.就是该程序在运行的时候,...

4SecNet团队专栏 997

高德地图JS API私有化部署实战:从数据爬取到内网集成

本文详细介绍了高德地图JS API私有化部署的完整流程,涵盖从地图瓦片数据爬取、JS API离线化改造到内网项目集成的实战步骤。重点解决了在封闭内网环境中实现地图功能的核心难题,并提供了Vue.js项目中的具体集成代码与调试技巧,帮助开发者在离线环境下构建稳定可靠的地图应用。

weixin_29062255的博客 319

WPF MVVM实战:构建可绑定的RichTextBox富文本编辑器

本文详细介绍了如何在WPF MVVM模式下构建可绑定的RichTextBox富文本编辑器,解决标准RichTextBox.Document属性不支持数据绑定的问题。通过创建自定义BindableRichTextBox控件,实现FlowDocument的绑定支持,并分享插入图片、文本格式控制等实战技巧,帮助开发者高效开发富文本编辑功能。

weixin_33717117的博客 307

Ramnit病毒分析

Ramnit病毒是一个相对古老的病毒,使用会感染系统内的exe和html文件,通过文件分发和U盘传播。

好好学习,天天向上 4460

Numpy快速入门(np)!看这一篇就够了

Numpy快速入门(np)!看这一篇就够了

weixin_74009895的博客 2680

【病毒分析】——熊猫烧香 && 专杀工具C源码

最近忙里偷闲,将自己分析过的一些病毒记录一下,一是给刚入门的小白有个借鉴,二是不让自己写博客的习惯停下来。 一、基本信息 FileName panda.exe Type 感染型病毒 Size 30001 bytes MD5 512...

VI___ 6973

RV1126B SDK移植实战:从DDR配置到USB烧写全解析

本文详细解析了RV1126B SDK移植的核心实战流程,重点攻克了DDR初始化失败与USB烧写两大难题。文章从理解启动流程入手,提供了DDR配置错误的排查步骤、SDK编译配置要点,并深入讲解了USB烧写的完整操作与常见问题解决方案,旨在帮助开发者高效完成系统移植与稳定运行。

weixin_29164497的博客 542

全局特征描述子 CVFH (Clustered Viewpoint Feature Histogram) 原理

特性VFHCVFH处理对象整个物体点云物体点云被分割后的稳定表面块(簇)对遮挡的鲁棒性弱。遮挡会破坏全局形状,导致描述子失效。极强。只依赖于稳定存在的部分。描述子维度263 维308 维 (263 + 45 SC)输出数量一个物体产生1 个描述子一个物体可能产生多个签名计算复杂度相对较低较高(需先聚类)主要应用场景完整、分割良好的物体存在遮挡、背景杂波的不完整物体。

weixin_37079656的博客 620

CTF逆向入门:从异或加密到算法还原的完整实战解析

逆向工程是信息安全领域的核心技术之一,它通过分析程序的二进制代码来理解其内部逻辑与数据流。其基本原理是运用静态分析工具(如IDA Pro)反汇编代码,结合动态调试技术(如x64dbg)跟踪运行时状态,从而还原算法流程。这项技术的核心价值在于漏洞挖掘、恶意软件分析和软件保护评估。在CTF竞赛中,逆向工程常涉及对加密算法和输入校验逻辑的破解。本文以一道典型题目为例,深入剖析了异或加密算法的识别与逆向过程,并系统介绍了从文件侦查、静态分析到动态调试的完整工具链使用方法,为初学者构建了一套可复用的解题框架。

weixin_34290631的博客 363

电磁兼容(EMC):一文读懂过电应力(EOS)

过电应力(EOS)是指元器件承受的电流或电压应力超过其允许的最大范围。产品的电磁兼容(EMC)失效的一种常见模型为过电应力(EOS),也是电子产品失效的最常见的情况之一。过电应力基本与半导体器件相关,EOS事件包括有:静电放电(ESD)、雷击、系统瞬态、电磁脉冲、充电等。本文将详细讨论一下产品设计中如何关注EOS设计。

linkking27的博客 6486

OD 调试多线程遇到的问题以及解决方法

1、无法单步调试 在调试多线程程序的时候,如果遇到断点能断下来,但是一按F7/F8程序就运行起来了,这种情况多半是线程被挂起了 首先是去看看线程窗口,是不是有线程被挂起来,如果有,右键-->Resume all thread,然后就可以继续单步调试了 2、程序运行到一半,OD就已经退出,进程终止 这种情况一般是程序有一些反调试手段,我当时的情况是有两个线程,总是在第一个线程结束...

CMC_HHM的博客 4596

《HiVT: Hierarchical Vector Transformer for Multi-Agent Motion Prediction》论文阅读之HiVT

目录摘要1.介绍2.相关工作3.方法3.1. 总体框架3.2 场景表示 3.3 分层向量Transformer3.3.1 局部编码器3.3.2 全局交互模块3.3.3 多模态未来解码器3.4 训练4.实验4.1 实验设置4.2 消融研究 4.3. 结果5.结论 准确预测周围交通参与者的未来运动对于自动驾驶车辆的安全至关重要。最近,矢量化方法由于能够捕捉交通场景中的复杂交互而在运动预测领域占据主导地位。然而,现有的方法忽略了问题的对称性并且受到昂贵的计算成本的影响,面临着在不牺牲预测性能的情况

Gavinmiaoc的博客 3340

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

逆向OD分享-过检测插件-可过VMP等壳保护检测

很多新手在入门逆向的时候一般都是用的吾爱OD,吾爱OD现在已经很久没有更新了,新手使用此OD破解一般过不去VMP壳的保护,因此需要一个过检测OD来辅助破解,这里我分享一个我自己用的OD。希望能对你们有所帮助!

青月的成长记录吖 4894

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

xdbg某软件逆向实战&无壳入门逆向实战

最新xbg逆向实战经验,

jockerboss的博客 1900

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 脱壳时快速定位“最后一次异常”的方法
下一篇: OD条件与消息断点的设置方法
coderui
博客等级 码龄20年 9粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值