SMC学习笔记

news/2026/1/24 16:01:32/文章来源:https://www.cnblogs.com/zhangyuzhe/p/19526760

SMC

自修改代码(Self-Modified Code)是一类特殊的代码技术,即在运行时修改自身代码,从而使得程序实际行为与反汇编结果不符,同时修改前的代码段数据也可能非合法指令,从而无法被反汇编器识别,这加大了软件逆向工程的难度。—— CTF Wiki

命令在程序中实际上是一系列的数字(data),SMC 通过对数据进行计算,转化为IDA能够识别的可执行命令(code),而在此之前,IDA 无法识别,所以直接静态调试看不出之所以然。

下面是 SMC 原理图:

image-20260123190343539

解决SMC的两种方法

最好用的还是静态patch。

动态调试

VirtualProtect 后的核心程序下断。

image-20260123203928580

调试开始后,尝试直接跟进核心函数可能会提示错误,可以用 F7 步进函数。然后由流程图转到纯汇编界面。

image-20260123204740236

这个时候,将这一段代码框选后,先按 u 取消定义,再按 c 转为代码,最后按 p 识别为函数,即可成功反汇编为C语言。

image-20260123204909608

即可查看程序的核心逻辑。

静态 patch

用 IDA_python 脚本,按照程序对数据的解密逻辑,直接对数据进行修改解密,这样静态下反汇编出的代码就是源代码。

脚本模板:

import ida_bytes
addr=0x401720 #函数初始地址
length=0x3E #函数大小
for i in range(length) : code=ida_bytes.get_byte(addr+i)code^=0x66 #解密逻辑,照抄两个VirtualProtect之间ida_bytes.patch_byte(addr+i,code)

运行脚本后,按照动调的顺序:u 取消定义,c 转为代码,p 识别为函数,即可。

[GWCTF2019] Re3

跟进 main 函数,发现 mprotect 函数,且在 DIE 中发现该函数是 Linux,可以确定是 SMC。

image-20260124154009046

由图中确认解密程序就是 xor 0x99,得出patch脚本。

import ida_bytes
addr=0x402219
length=224
for i in range(length) : code=ida_bytes.get_byte(addr+i)code^=0x99ida_bytes.patch_byte(addr+i,code)

运行脚本,由原来的:

image-20260124154231098

变为:

image-20260124154255258

通过 u,c,p 的顺序,转化为函数。

image-20260124154402344

main 函数中,通过跟进 sub_40207B 函数,发现该函数进行一系列计算,将结果存到 unk_603170 处。

跟进sub_402219函数,函数逻辑是先对输入字符串进行计算,然后和 byte_6030A0 比较。

然鹅这几个函数就是 AES_ECB 操作,unk_603170 就是 AES_KEY。

image-20260124155056699

所以函数的逻辑是:先生成 KEY,再对字符串进行 AES 加密,最后和 byte_6030A0 比较。

通过动调拿到Key的值:CB8D493521B47A4CC1AE7E62229266CEbyte_6030A0 的值:BC0AADC0147C5ECCE0B140BC9C51D52B46B2B9434DE5324BAD7FB4B39CDB4B5B

直接密码箱解密得到flag:flag{924a9ab2163d390410d0a1f670}
image-20260124155609841

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI编程革命来了!字节Coze 2.0真香警告,从“聊天工具“到“数字伙伴“,开发门槛直降90%,小白也能逆袭大厂offer!

2026年1月19日,字节跳动AI Agent平台Coze(扣子)发布2.0版本,核心定位从“对话式AI工具”转向“可长期运行的智能工作伙伴”,以Agent上位重构人机协作范式。以下是核心要点: 一、核心升级:四大能…

爆肝实测!阿里CloudEdgeAgent端云协同大模型框架,小白5分钟上手,让手机秒变智能助手!yyds!

开源圈彻底炸了!阿里达摩院重磅发布的 CloudEdgeAgent(端云协同智能体框架),上线仅 48 小时 GitHub Star 直接飙到 1.2 万,登顶全球 AI 开源榜 TOP1! 你还在抱怨手机 AI 智商低,只会做简单语音…

爆肝!大模型开发者的“隐形保镖“:Java Agent无侵入式监控技术,让你的代码性能一目了然!

👉这是一个或许对你有用的开源项目 国产Star破10w的开源项目,前端包括管理后台、微信小程序,后端支持单体、微服务架构 RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRM、AI大模型、IoT物联网等功能: 多…

【炸裂】AI Agent架构革命!从零到大模型智能体开发全攻略,程序员新大陆已开启!

*【本期聚焦】Anthropic发布Agent评估体系与Claude Cowork桌面革命;清华MARSHAL框架**突破多智能体推理泛化瓶颈;*Agent架构范式确立,模型适配层与四层核心成工程基石;智能体模式全景梳理,反思、规划与多智能体协作构建…

测试基础|什么是功能测试?详细指南及常见问题

随着应用程序变得越来越复杂,用户越来越挑剔,严格测试的重要性再怎么强调也不为过。功能测试是软件质量保证流程的基石,重点是验证每个应用程序功能是否符合指定要求。它解决了一个基本问题:软件是否按预期运行? 什么…

字节4面通过,我可以跟面试官要30K吗?

春招,秋招,社招,我们程序员的面试之路,是挺难的,过了HR,还得被技术面,小编在去各个大厂面试的时候,经常是通宵睡不着觉,头发都脱了一大把,还好最终侥幸能够入…

Flutter × OpenHarmony 跨端开发:变量与数据结构实战解析

文章目录 Flutter OpenHarmony 跨端开发:变量与数据结构实战解析前言背景Flutter OpenHarmony 跨端开发介绍开发核心代码(详细解析)1. 页面和状态定义2. 数据模型设计3. 状态变量和初始化4. UI 构建与数据绑定 心得总结 Flutter OpenHarmo…

Flutter × OpenHarmony 跨端开发实战:高可定制搜索栏构建指南

文章目录Flutter OpenHarmony 跨端开发实战:高可定制搜索栏构建指南前言背景Flutter OpenHarmony 跨端开发介绍开发核心代码(详细解析)解析重点心得总结Flutter OpenHarmony 跨端开发实战:高可定制搜索栏构建指南 前言 在移动…

构建跨端推荐文章区域:Flutter × OpenHarmony 实战指南

文章目录 构建跨端推荐文章区域:Flutter OpenHarmony 实战指南前言背景Flutter OpenHarmony 跨端开发介绍开发核心代码(详细解析)1. 构建推荐文章区域2. 构建推荐文章卡片 心得总结 构建跨端推荐文章区域:Flutter OpenHarmony …

数据说话:2026年度雅思培训在线教育机构综合评分榜,你的选择对了吗?

在雅思备考的道路上,众多考生面临着选课困境:课程琳琅满目却质量参差,传统教学缺乏个性化适配,提分效果难以保障,而性价比与优质服务往往不可兼得。如何从众多教育机构中选出真正靠谱、具备权威教研实力且能提供实…

Python AST 实战:自动移除 print / head / show / to_html 等无用代码行

在数据分析、Notebook 转生产代码、AI 生成代码清洗等场景中,我们经常需要:自动删除 print()、DataFrame.head()、plt.show()、to_html() 等仅用于展示的代码,而不影响业务逻辑正则不可靠,AST 才是王道。 本文将通过一个完整可运行…

2026全网雅思培训在线深度测评TOP5:数据说话,高性价比提分方案权威推荐

经全网调研、数万学员反馈采集及行业资深分析师联合评估,本次针对雅思培训、在线雅思培训领域开展全面深度测评,聚焦选课难题、考试提分痛点,从优质课程供给、高分技巧传授、性价比把控、个性化方案设计等核心维度,…

2025成都火锅回头客!网红店中谁最受宠,社区火锅/特色美食/老火锅/烧菜火锅/美食,成都火锅回头客多的排行榜

近年来,成都火锅市场持续升温,网红品牌层出不穷,但真正能以“回头客”为核心竞争力的品牌却屈指可数。消费者对火锅的需求已从“尝鲜”转向“品质与情感共鸣”,如何在同质化竞争中突围,成为行业共同课题。本文基于…

2026季度雅雅思培训在线教育机构口碑排名深度解析,权威测评推荐价值之选

对于志在留学深造的考生而言,雅思考试无疑是一道至关重要的门槛。面对纷繁复杂的雅思培训市场,如何在与线下林立的教育机构中,挑选出真正优质、靠谱、能带来显著提分效果的课程,成为众多考生与家长的共同痛点。是追…

雅思班培训备考避坑指南与权威推荐Top榜:深度解析5大机构优劣,见分晓哪家强!

在雅思备考的漫长征途中,众多考生与家长面临着重重困境:如何在鱼龙混杂的市场中筛选出真正 优质、靠谱 的教育机构?是追求短期快速提分的 技巧 传授,还是注重能力提升的 全面 培养? 一对一、小班课、直播课 哪种 …

2026雅思班培训选课指南:全网权威深度测评TOP5,个性化提分方案哪家强

经全网调研、数据溯源及数万学员口碑验证,雅思培训行业始终面临诸多痛点:多数雅思考生在雅思班培训雅思时,深陷选课困境,既担心教育机构资质参差不齐,又纠结性价比与提分效果的平衡;备考中缺乏权威技巧指导,个性…

沃尔玛电子卡回收选京回收还是猎卡回收合适

沃尔玛电子卡回收选京回收还是猎卡回收合适沃尔玛电子卡回收新选择:京回收与猎卡回收的暖心服务之旅 在快节奏的现代生活里,沃尔玛电子卡作为常见的消费凭证,常常因各种原因被闲置。当这些卡片静静躺在抽屉里,不仅…

决胜雅思考试:2026综合评分TOP5机构解析,性价比与提分力双优推荐

据《2025年中国出国语培行业发展白皮书》数据显示,雅思培训市场规模已达320亿元,年增长率12.5%,但行业痛点仍突出:师资资质信息差、课程同质化严重、服务链路碎片化等问题,让众多考生在在线雅思培训选课中陷入困境…

石子合并求最大代价——极端决策证明

石子合并求最大代价——极端决策 根据题意,求解石子合并最大代价的动态转移方程为: \[dp(i,j) = \max_{k=i}^{j-1}\{dp(i,k)+dp(k+1, j)\}+sum(i, j) \]通过打表,我们猜测,决策点在两个端点,可以获得最优解。 结论…

2026全网雅思班培训教育机构综合排行榜:深度测评+口碑排名,高分提分不踩雷

基于2026年雅思培训行业调研数据、1000+学员匿名反馈及第三方测评报告,本文以“师资实力、课程体系、提分效果、服务适配、性价比”五大核心维度(权重分别为30%、25%、20%、15%、10%),开展全行业深度测评,旨在为考…