防反编译之SMC(自修改代码)

SMC全称是self Modification Code,机理是,代码运行时修改自身的代码;用处是,爆破跳转点,或隐藏重要代码,防止反编译。网上有例子,可以脱壳跟踪试试看。

这里讲下SMC的要点:

虽然编写自修改代码不是一个工业标准,但有些情况下,它是比不可少的。下面的序列介绍了执行代码修改用到的指令:

1,存储修改的指令

2,执行dcbst指令,强制包含有修改过的指令的高速缓存行进行存储

3,执行sync指令,确保dcbst完成

4,执行icbi指令,使将要存放修改后指令的指令高速缓存行无效

5,执行isync指令,清除所有指令的指令管道,那些指令在高速缓存行被设为无效之前可能早已被取走

6,现在可以运行修改后的指令了。当取这个指令时,会发生指令高速缓存失败,结果就会从存储器中取得修改后的指令。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值