[逆向工程]软件有提示类型逆向分析(三十二)

《算法还原 - CTF》逆向exe程序 + ida Pro 反汇编分析伪C代码 + python算法复现 二进制安全,能干什么逆向分析: 负责成品软件的技术原理. 比如分析竞品软件,吸取技术上的优点,进行技术难点公关病毒分析: 负责分析病毒样本.研究恶意代码的技术手段等工作.主要是在安全公司,尤其是在杀毒软件公司需求较多.如360 、腾讯电脑管家等.漏洞挖掘分析: 负责分析漏洞样本,或者漏洞的挖掘.目前二进制的主要方向.涉及范围广,从主流浏览器 虚拟机 内核到IOT 还有android 和 IOS移动平台.移动安全: 负责移动端安全.如移动端的漏洞挖掘,还有加壳混淆等安全开发: 包含较广.比如硬件平台,内核安全 阅读详情

[逆向工程]软件有提示类型逆向分析(三十二)

一、环境与工具准备

  1. 目标程序:cmy.EXE(带登录验证功能)
  2. 查壳工具:Exeinfo PE(检测程序保护机制)
  3. 脱壳工具:UPX Tool+(处理压缩壳)
  4. 调试工具:OllyDbg(OD,动态调试与二进制修改)
  5. 补丁工具:InLine Patch(内存补丁生成)

二、逆向分析全流程

步骤1:检测程序保护机制

使用Exeinfo PE加载程序,结果显示:

UPX 0.89.6 - 4.23 
32位可执行文件

(图:查壳界面显示UPX壳标识,32位程序)

在这里插入图片描述

技术原理:UPX是一种常见的可执行文件压缩壳,会加密原始代码,需脱壳后才能进行逆向分析。

步骤2:脱壳处理
  1. 打开UPX Tool+
  2. 选择cmy.EXE → 执行"解压缩"
  3. 生成:
    • cmy.EX~:带壳备份文件
    • cmy.EXE:脱壳后程序

(图:UPX Tool+成功脱壳提示)

在这里插入图片描述

验证脱壳结果:

Exeinfo PE检测显示:Not packed

(图:无壳状态验证)

在这里插入图片描述

步骤3:静态分析登录验证逻辑

运行原始程序观察行为:

  • 输入正确账号密码 → 登录成功
  • 输入错误信息 → 弹出"登录失败"提示

(图:程序正常验证流程)

在这里插入图片描述

步骤4:动态调试与关键跳转定位
  1. OD加载脱壳程序:

    File > Open
    选择cmy.EXE
    插件 > 中文搜索引擎 > 智能搜索
  2. 定位关键字符串:

    • 在智能搜索结果中搜索"登录失败"
    • 双击跳转到引用位置

关键发现:je cmy 004014B4指令决定程序分支走向:

  • 条件成立 → 跳转到失败流程
  • 条件不成立 → 执行成功流程
步骤5:修改程序逻辑
  1. 修改跳转指令:

    • 双击jnz指令行
    • 修改为jmp 004014B4(无条件跳转)

    (图:OD中修改指令界面)

    在这里插入图片描述

    在这里插入图片描述

  2. 保存修改:

    • 右键 → Copy to executable → All modifications
    • 在新窗口右键 → Save file → 另存为cmy1.EXE
步骤6:验证逆向结果

运行修改后的cmy1.EXE:

  • 输入任意账号密码
  • 均显示"登录成功"
    (图:绕过验证后的成功界面)

在这里插入图片描述
在这里插入图片描述

三、带壳程序特殊处理技巧

当程序未脱壳时,OD无法直接保存修改,需使用内存补丁:

  1. 定位关键地址:
    • OD加载带壳程序
    • F9运行 → Ctrl+G 跳转到00401000
    • 搜索"登录失败"字符串
  • 按脱壳程序逆向修改代码
  1. 使用InLine Patch生成补丁:

    (图:InLine Patch补丁配置界面)

    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.应用补丁:

  • 运行生成的补丁程序
  • 自动修改内存中的指令字节
  • 实现免脱壳破解

四、技术原理深度解析

1. 登录验证流程分析
if (strcmp(username, "admin") == 0 
    && strcmp(password, "123456") == 0) 
{
    ShowMessage("登录成功");
} 
else 
{
    ShowMessage("登录失败"); // 逆向目标位置
}
2. 跳转指令修改原理
指令机器码功能
jnz75结果非零时跳转(ZF=0)
jmpEB无条件跳转

通过将条件跳转改为无条件跳转,使程序永远跳过失败分支。

3. 内存补丁工作流程
Created with Raphaël 2.3.0 启动补丁程序 挂载目标进程 修改内存数据 恢复执行流程 破解完成

五、防御建议(开发者参考)

  1. 代码混淆:

    // 原始代码
    if (valid) showSuccess();
    
    // 混淆后
    void (*funcArr[])(void) = {showFail, showSuccess};
    funcArr[valid]();
    
  2. 完整性校验:

    # Python伪代码示例
    checksum = calc_checksum(.text section)
    if checksum != stored_value:
        self_destruct()
    
  3. 多阶段验证:

    输入验证
    环境检测
    行为分析
    服务端二次验证

六、总结

本文演示的逆向技术要点:

  1. 使用查壳工具识别保护机制
  2. 通过脱壳获取可分析代码
  3. 定位并修改关键跳转指令
  4. 处理带壳程序的内存补丁技术

如果你觉得本教程对你有帮助,请点赞❤️、收藏⭐、关注支持!欢迎在评论区留言交流技术细节!

EXE逆向分析入门:从零了解可执行文件的秘密 本文介绍了Windows平台下EXE文件的逆向工程基础,包括EXE文件的结构、逆向分析的目的、常用工具及基本流程。EXE文件遵循PE格式,包含DOS头、PE头和多个节区。逆向工程用于安全分析、漏洞研究、学习原理和遗留系统维护。常用工具包括IDA、x64dbg、PE-bear和Ghidra。逆向流程包括识别EXE结构、静态分析、动态调试和汇编理解。文章还提供了一个简单的HelloWorld程序逆向实验,并建议学习汇编语言、Windows API和调试器使用。逆向工程是安全研究和系统维护的重要技术,但需合法使用 阅读详情

相关推荐

浅学软件逆向笔记(2)

OD快捷方式-------------------------F2:断点F4: 运行到光标处F7: 单步步入F8: 单步步过F9: 运行Ctrl+A :分析代码(函数,参数...)Ctrl+G : 跳转到Ctrl+X : 复制地址Ctrl+E :修改内存Ctrl+B :二进制搜索Ctrl+F :指令搜索(单条指令)Ctrl+S :指令搜索(多条指令)Ctrl+F9 :运行到返回(ret指令位置)Ctrl+F12: 重启调试Ctrl+Shift+x :复制二进制数据。...

m0_62063669的博客 2009

对简单的EXE文件进行逆向分析

(4)对生成的EXE文件进行反汇编和逆向工程,得到能够在控制台上输出“Reverse Eng”的EXE程序。④直接对ASCII进行修改,将Hllo World修改为Reverse Eng。默认情况下,输出目录为项目文件夹下的“Debug”或“Release”文件夹。(1)使用VC++,C语言编写简单的hello world程序。getchar();②在底部command中输入 d+空格+字符串位置,进行定位。(3)将hello word文件拖到ollydbg中。⑤将字符串结束的HEX数据修改为0。

m0_62821046的博客 7367

[网络安全自学篇] 七十二.逆向分析之OllyDbg动态调试工具(一)基础入门及TraceMe案例分析

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了外部威胁防护和勒索病毒对抗。这篇文章将讲解逆向分析OllyDbg动态调试工具的基本用法,包括界面介绍、常用快捷键和TraceMe案例分析。基础性文章,希望对您有所帮助,如果存在错误或不足之处,还望告知,加油!

杨秀璋的专栏 1万+

菜鸟笔记#4.带壳破解

【实验目的】1) 掌握利用查找字符串查找带壳软件破解方法。【实验原理】1) 利用软件登录时,提供的关键字,找到关键CALL,单步跟踪查找序列号。【实验环境】工具:OllyDBG 软件:C:\software\22.带壳破解\engydtsetup.exe【实验步骤】一、 了解软件验证机制1.1 单击软件,默认安装即可,进入安装目录,运行软件,在用户名和注册码栏中输入任意数值,单击“登录”按钮

skysys的研究小屋 2934

[系统安全] 五十六.恶意软件分析 (8)IDA Python基础用法及CFG控制流图提取详解[下]

前文介绍了IDA Python配置过程和基础用法。这篇文章将尝试利用IDA Python提取恶意软件的控制流图(CFG),再为后续的恶意软件家族分类或溯源提供帮助。由于作者是初学者,因此会遇到很多问题,欢迎各位大佬和读者指导,同时感谢李师弟的指导和交流。基础性基础,且看且珍惜。

杨秀璋的专栏 822

[网络安全自学篇] 七十六.逆向分析之OllyDbg动态调试工具(二)INT3断点、反调试、硬件断点与内存断点

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了Vulnhub靶机渗透题目bulldog,包括信息收集及目录扫描、源码解读及系统登陆、命令注入和shell反弹、权限提升和获取flag。这篇文章将讲解逆向分析之OllyDbg动态调试工具,包括INT3断点、反调试、硬件断点和内存断点。基础性文章,希望对您有所帮助。

杨秀璋的专栏 9843

疯狂的程序员-第三十二章

陈董一脸严肃又略带洋洋得意,绝影和BOSS Liu在心中盘算着这个大CASE能大到什么程度,100万,500万还是1亿,于是都期待着陈董继续往下说,恨不得拍着胸脯说:“陈司令,你就下命令吧!” 陈董掉足了两人胃口,才缓缓地打开自己的电脑,摆弄了一阵,向二人招招收,说:“过来,过来。” 两人探过头去,屏幕上是个国外的软件,全是英文。陈董说:“这是个石油上的软件,叫PVT2000,因为油田...

java技术讨论精华 168

[系统安全] 三十二.恶意代码检测(2)常用技术详解及总结

前文从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识,在学术界方面,用类似于综述来介绍攻击追踪溯源的不同方法;在产业界方面,主要参考李东宏老师从企业恶意样本分析的角度介绍溯源工作。这篇文章将详细总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。希望这篇文章对您有所帮助,如果文章中存在错误、理解不到位或侵权的地方,还请告知作者与海涵。且看且珍惜,加油~

杨秀璋的专栏 1万+

【转】第一课寄存器与寻址

转自: www.jmpoep.com 先贴大纲 第一部分 基础 1.汇编语言-寄存器。寻址方式。 @1.寄存器作用 @2.寻址方式判断 2.汇编语言-8086指令、典型函数调用约定 @1 8086常用运算指令 @2 8086跳转指令 @3 常见函数调用约定 3.汇编语言-识别高级语言中的汇编代码 @1 常量/变量/指针 @1-1.常量 @1-2-1.全局变量 ...

weixin_30885111的博客 66

[网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看

这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了Cracer教程的第一篇文章,详细讲解了安全术语、Web渗透流程和Windows基础、注册表及黑客常用DOS命令。本文将分享Procmon软件基本用法及文件进程、注册表查看,这是一款微软推荐的系统监视工具,功能非常强大可用来检测恶意软件。基础性文章,希望对您有所帮助。

杨秀璋的专栏 1万+

[网络安全自学篇] 五十一.恶意样本分析之HGZ进程和网络行为动态分析及防御

这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文讲解了虚拟机基础知识,包括XP操作系统安装、文件共享设置、网络快照及网络设置等,最后分享虚拟机中安装安全软件进行BBS密码抓取的实验。本文将讲解HGZ木马控制服务器的过程,并进行恶意样本分析,结合签名两篇文章进行串讲。基础性文章,希望对您有所帮助。

杨秀璋的专栏 8559

[网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析

本文主要结合作者的《系统安全前沿》作业,师姐的论文及绿盟李东宏老师的博客,从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识。在学...

bylfsj的博客 1万+

[网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)

本系列虽然叫“网络安全自学篇”,但由于系统安全、软件安全与网络安全息息相关,作者同样会分享一些系统安全案例及基础工具用法,也是记录自己的成长史,希望大家喜欢,一起进步。前文讲解了i春秋YOU老师的小白渗透之路,并结合作者系列文章总结Web渗透技术点。本文将开启PE文件逆向解析相关内容,预计会连续分享六篇文章,第一篇告诉大家什么是数字签名,并采用Signtool工具对EXE文件进行签名,后续深入分析数字签名的格式及PE病毒内容。本文章适合初学者学习,希望对您有所帮助~

杨秀璋的专栏 1万+

使用OllyDbg从零开始Cracking系列教程(非本人原创,但很精辟,胜于大部分视频教程)

看雪安全论坛 > 信息安全> 『外文翻译』 使用OllyDbg从零开始Cracking系列教程已翻译章节导航帖 用户名 记住 密 码 忘记密码? KSSD 注册账号 搜索论坛 日历事件 论坛帮助 转到页面...

ccstuck的专栏 1万+

[网络安全自学篇] 三十六.WinRAR安全缺陷复现(CVE-2018-20250)及软件自启动劫持机理

这是作者的系列网络安全自学教程,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识。本文主要介绍WinRAR漏洞(CVE-2018-20250),并复现了该漏洞和讲解了恶意软件自启动劫持原理。基础性文章,希望对您有所帮助!

杨秀璋的专栏 1万+

[网络安全自学篇] 六十九.宏安全之入门基础、防御措施、自发邮件及宏样本分析

这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了利用永恒之蓝漏洞加载WannaCry勒索病毒,实现对Win7文件加密的过程,并讲解WannaCry勒索病毒的原理。这篇文章将讲解宏病毒相关知识,它仍然活跃于各个APT攻击样本中,本文包括宏病毒基础原理、防御措施、自发邮件及APT28样本分析。基础性文章,希望对您有所帮助。

杨秀璋的专栏 9967

[网络安全自学篇] 四十五.病毒详解及批处理病毒原理分析(自启动、修改密码、定时关机、蓝屏、进程关闭)

这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了Windows远程桌面服务漏洞(CVE-2019-0708),并详细讲解该漏洞及防御措施。这篇文章将讲解简单的病毒原理知识,并通过批处理代码制作病毒,包括自动启、修改密码、定时关机、蓝屏、进程关闭等功能。希望这篇基础文章对您有所帮助,更希望大家提高安全意识,学会相关防范,也欢迎大家讨论。

杨秀璋的专栏 3万+

POSS-NH2:氨基化笼型聚半倍硅氧烷的合成与应用探索

本文详细介绍了氨基化笼型聚半倍硅氧烷(POSS-NH2)的合成方法与应用。通过水解缩合与官能团转化两种主流路线,可制备出这种关键的纳米增强材料。其核心价值在于通过表面的氨基与树脂基体形成化学键合,从而显著提升复合材料的热稳定性和机械性能。文章以环氧树脂改性为例,展示了POSS-NH2在航空航天、电子封装等高性能领域的应用潜力。

grpc6streamer的博客 495
上一篇: [逆向工程]Windows服务开发(三十一)
下一篇: [密码学实战]商密TLCP协议抓包解析与深度分析(二十九)
曼岛_
曼岛_ 新星创作者: Java技术领域 新星创作者: Java技术领域 领域专家: 信息安全技术领域 领域专家: 信息安全技术领域
博客等级 码龄11年 4943粉丝 315原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曼岛_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值