淘来的几个SMC代码

用C/C++实现SMC动态代码加密技术 摘要:所谓SMC(Self Modifying Code)技术,就是一种将可执行文件中的代码或数据进行加密,防止别人使用逆向工程工具(比如一些常见的反汇编工具)对程序进行静态分析的方法,只有程序运行时才对代码和数据进行解密,从而正常运行程序和访问数据。计算机病毒通常也会采用SMC技术动态修改内存中的可执行代码来达到变形或对代码加密的目的,从而躲过杀毒软件的查杀或者迷惑反病毒工作者对代码进行分析。由 阅读详情
第一个程序独立运行时与在OD中运行时GetModuleHandleA取得的句柄值不一样,OD中将大于70000000,好象只对XP有效。其它程序自己用OD试试。

代码:
.data

    hInst          dd        ?
    szStr          db        ?
    szBytes        db        ?
CTEXT    MACRO y:VARARG
    LOCAL sym
    CONST segment
    ifidni <y>,<>            
        sym db 0        
    else            
        sym db y,0
    endif
    CONST ends
    exitm <offset sym>
ENDM

.code


start:
    invoke    VirtualProtect, (start+02Eh), 04h, PAGE_EXECUTE_READWRITE, ADDR szBytes
    mov    eax, (start+02Eh)
    xor    ebx, ebx
    mov    bl, byte ptr cs:[eax]
    xor    bl, 035h
    mov    byte ptr ds:[eax], bl
    invoke     GetModuleHandleA, 0
    mov    hInst, eax
    invoke     GetModuleHandleA, 0            
    invoke    wsprintf, ADDR szStr, CTEXT( "模块基址为:0x%x"), eax
    invoke     MessageBox, NULL, ADDR szStr,CTEXT( "SMC检测OD"), MB_OK or MB_APPLMODAL
    invoke     ExitProcess, 0
    int     3
    nop    
end start
代码:
start:

  mov esi, (ProgramEnd-start)
  invoke VirtualProtect, 401000h, esi, PAGE_EXECUTE_READWRITE, ADDR oldProt ; enable write to code section
  test eax, eax
  jnz _patch
      invoke MessageBox, NULL, szErr, szErr, MB_OK   ; error, show it and quit
      jmp _end

_patch:
  lea edi, _change
  mov al, 0e8h      ; call opcode
  stosb
  mov eax, 00000008h ; Will be 08 00 00 00 when written to memory 
  stosd

  invoke VirtualProtect, 401000h, esi, oldProt, ADDR oldProt  ; restore the old protection settings

_msgBox:  push NULL
      push offset szTitle
      push offset szText
      push NULL
_change:  nop      ; here will be inserted 'call MessageBox'
      nop
      nop
      nop
      nop
_end:    invoke ExitProcess, NULL
ProgramEnd:

end start
代码:
start:

  mov eax,offset myMod2  

  invoke  VirtualProtect,eax,4,PAGE_EXECUTE_READWRITE,addr oldprotect

  mov  eax,offset myMod2

  mov WORD PTR[eax],00B8h
  mov WORD PTR[eax+1*2],0009h
  mov WORD PTR[eax+2*2],0000h
  mov WORD PTR[eax+3*2],0000h
  mov WORD PTR[eax+4*2],0000h
  invoke  MessageBox,0,addr szText,addr szTitle,MB_OK
  invoke  ExitProcess,0
myMod2 proc
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  ret                      
myMod2  ENDP
end start
 
超详细讲解[NewStarCTF 2023 公开赛道]SMC 本来想写一个针对“新手小白”如何写破解脚本的,把SMC这道题放入了例题中,打开看到后感觉挺有意思的,就写了关于这道题的详细讲解。首先拿到题目SMC,其中是一种软件保护技术,通过在运行时修改自身代码来隐藏真实逻辑。 阅读详情

相关推荐

用C/C++实现代码的动态修改(SMC)

作者:星轨(oRbIt) E_Mail:inte2000@163.com摘要:所谓SMC(Self Modifying Code)技术,就是一种将可执行文件中的代码或数据进行加密,防止别人使用逆向工程工具(比如一些常见的反汇编工具)对程序进行静态分析的方法,只有程序运行时才对代码和数据进行解密,从而正常运行程序和访问数据。计算机病毒通常也会采用SMC技术动态修改内存中的可执行代码

oRbIt 的专栏 9936

GetModuleHandle

当一个文件被映射到调用进程的地址空间是,GetModuleHandle函数得到其中某一模块的句柄。  ??为在注释段避免争用,使用GetModuleHandle函数。??  HMODULE GetModuleHandle( LPCTSTR lpModuleName);    参数  lpModuleName    [in]用指针指向一个包含模块名以NULL字符结尾的串,模块是.dll或.exe文件

sanshao27的专栏 2059

SMC代码自修改基础练习题

0x00 代码自修改简介 SMC(self-Modifying Code),就是在真正执行某一段代码时,程序会对自身的该段代码进行自修改,只有在修改后的代码才是可汇编,可执行的。在程序未对该段代码进行修改之前,在静态分析状态下,均是不可读的字节码,IDA之类的反汇编器无法识别程序的正常逻辑。是一种反调试代码技术。 0x01 TSCTF—代码自修改writeup 整体流程 首...

Agamotto丶的博客 5108

02_GetModuleHandleA根据DLL名称获取DLL句柄

【代码】02_GetModuleHandleA根据DLL名称获取DLL句柄。

成长需要沉淀。 753

CTF Reverse逆向学习之SMC动态代码加密技术,题目复现(NSSCTF)([网鼎杯 2020 青龙组]jocker)

SMC,即Self Modifying Code,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。SMC的实现方式有很多种,可以通过修改PE文件的Section Header、使用API Hook实现代码加密和解密、使用VMProtect等第三方加密工具等。

Sciurdae的博客 5255

VC实现SMC加密技术

前言SMC是一种局部代码加密技术,通过对一段代码进行加密来达到增加逆向工程难度或者免杀的目的。 编写SMC代码不是汇编语言的专利。——《加密与解密 第三版》 是的,SMC不仅能使用汇编上实现,还能很容易的使用VC实现,但是有一个比较致命缺陷:要精准的定位某个函数非常麻烦,所以我们就要以区块为加密的基础单位。预备知识需要一点点的PE结构基础就ok啦。加密算法既然是加密,就必然需要加密算法。Inte

无名侠的博客 4394

SMC状态机 讲解1 XX.sm文件详解

SMC状态机 XX.sm文件详解

落雨碎江南 6983

zynq-smc驱动框架解析

zynq-nand flash linux驱动解析

DSP小胖的博客 2631

SMC - 状态机代码生成工具

本文包括smc简介、sm文件格式说明、sm文件示例和java - smc的实现及工作流程图形生成的示例

weixin_44462773的博客 6111

【转】ATF中SMC深入理解

好久没有来看过ATF中的代码了,最近看到了关注很久公众号的文章,链接我放在文末。以前对于ATF中的SMC我只是知道是什么?以及是怎么用的,但是还是不够深入。这里来看一下。感谢前辈的文章:https://mp.weixin.qq.com/s/4QbBP6BlXxBWqgSUZHYFmw在文章开始之前提几个问题:Android手机中至少运行着几个操作系统OS?如何进入安全操作系统?异常等级和安全操作系统之间的关系?SMC调用的实质、约定及流程是什么?随着智能手机的普及,手机上数据的价值越来越高,如电子支付密码(

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 7460

optee对std smc的处理的详解

文章目录1、ATF跳转到optee的std_smc_entry2、optee中的std_smc_entry流程(1)、RPC回来的std call的处理(2)、REE调用的std call的处理 : thread_std_smc_entry3、线程thread_std_smc_entry std smc跳转到optee的场景有两种: REE主动发起std smc的调用,基本就算Globalplatform Client API(libteec.so)的调用,也就是openssion\invoke\clos

baron-周贺贺-代码改变世界ctw 3823

【RE】 SMC动态代码加密技术

SMC,即Self Modifying Code,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。

Daphneohh的博客 3775

SMC状态机代码生成工具-一个小demo

smc状态机生成工具简单理解+一个简单的smc代码实例

m0_53186541的博客 1057

re--SMC

SMC,即Self Modifying Code,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。SMC的实现方式有很多种,可以通过修改PE文件的Section Header、使用API Hook实现代码加密和解密、使用VMProtect等第三方加密工具等。

2301_80048347的博客 787

C++实现SMC代码变形源代码+两小时视频讲解百度云地址下载

C++实现SMC代码变形源代码+两小时视频讲解百度云地址下载

OpenHarmony v4.1 Release设置应用随系统自动启动

OpenHarmony 4.1 版本中的 Ability Manager Service (AMS) 提供了应用自启动管理功能,允许系统控制哪些应用可以在系统启动时自动运行。这需要以下两个主要步骤:启用系统的自启动管理支持开发一个系统应用来管理自启动配置。

afufufufu的博客 1902

CTF逆向学习之SMC自修改

SMC是指:一种将可执行文件中的代码或数据进行加密,防止别人使用逆向工程工具对程序进行静态分析的方法,只有程序运行时才对代码和数据进行解 密,从而正常运行程序和访问数据。是一种程序在运行时修改自身代码的技术。然而,SMC 也带来了复杂性和潜在的安全风险,因此需要谨慎使用。SMC 的核心思想是程序在运行时修改自身的指令。

2302_79797828的博客 2714

别再死记硬背参数了!手把手教你用Fluent欧拉模型搞定流化床模拟(附颗粒粘度/体积分数设置详解)

本文深入解析Fluent欧拉模型在流化床模拟中的应用,重点讲解颗粒粘度和体积分数等关键参数的设置原理与科学方法。通过对比不同模型(如Syamlal-O'Brien、Gidaspow)的适用场景,帮助工程师摆脱参数死记硬背,实现精准模拟。内容涵盖相间作用机制、求解策略优化及结果验证,为化工、能源领域的流化床模拟提供实用指南。

weixin_42656416的博客 430

smc数显压力表设定方法_数字表头(SMC)实用的设定操作

  今天就分享下数字表头(SMC)实用的设定操作手册,它的原型是SMC表头厂家手册和实际情形提练出来的。希望能帮到大家。实物图SMC表头的安装1.SMC表头的螺纹处要环绕生料带。2.SMC表头在安装在调压阀时,不可用手旋转表头,要用板手旋转螺母。3.按照电路图连接表头的电源线及信号线。SMC表头的校零  安装完成后,通电不施加任何气压。查看表头数显是否是零。①显示为零---此表头可以使用,不用作任...

weixin_35972981的博客 17万+

ISP-全局色调映射(GTM)算法简单实现

色调映射算法,色彩空间转换LAB

notgoodenouf的博客 2243

Unity集成阿里Qwen2.5-Omni全模态大模型实战:语音交互与多模态AI开发指南

本文详细介绍了在Unity中集成阿里Qwen2.5-Omni全模态大模型的实战指南。通过C#脚本开发,实现语音交互、图像分析等多模态AI功能,涵盖API调用、音频处理、流式响应解析等核心步骤,为游戏、虚拟人等Unity应用提供沉浸式智能交互解决方案。

weixin_29005499的博客 317

SMC自修改

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

2301_80313926的博客 1143

51单片机IAP技术详解:从原理到实战,实现远程程序自更新

在嵌入式系统开发中,程序更新是产品维护和功能迭代的核心需求。传统方式依赖外部烧录器,操作繁琐且无法远程进行。IAP(在应用中编程)技术则从原理层面解决了这一难题,它允许单片机在运行过程中通过特定接口(如串口)动态修改自身的Flash程序存储器。这项技术的核心价值在于赋予设备远程升级和自主维护的能力,极大地延长了产品生命周期并降低了维护成本。其典型应用场景包括智能家居控制器、工业数据采集模块和远程仪表等部署后不便拆卸的设备。本文以经典的51单片机(如STC89C52)为例,深入剖析IAP的实现,其中Bootl

weixin_29161719的博客 407
上一篇: 城里城外看SSDT
下一篇: 再和DriverStudio"过不去"之加强版
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值