加密与解密——抵御静态分析

本文探讨了如何通过花指令、自我修改代码(SMC)和信息隐藏来抵御静态分析。花指令通过添加无用代码混淆反汇编结果,SMC在运行时解密关键代码以隐藏内容,而信息隐藏则加密关键字符串以增加破解难度。这些技术通常需要与其他保护措施结合使用,以提高代码安全性。
摘要由CSDN通过智能技术生成

抵御静态分析本质上就是降低反汇编代码的可读性,不过这种保护方式通常只是起到了扰乱作用,如果只是单独使用其中一种,那就只是纸老虎而已,理论上通过动态分析的方法,可以完全无视这样的保护,所以这些保护技术需要和其他保护技术相互配合才能达到良好的效果。

 

花指令

数据与代码的区分是反汇编中的一个关键问题,花指令就是向代码中添加一些无用的数据和代码,使得反汇编器的反汇编结果出现局部不正确的情况,或者将有用的代码隐藏在大量无用代码之中,以达到扰乱逆向分析的效果。

反汇编器的反汇编算法通常分为线性扫描算法和递归行进算法,而前者由于落后而被淘汰了,不过若是自己来写反汇编器的话,明显前者是更容易实现的。递归行进算法运用在IDA,ollydbg等常用反汇编器中,辣鸡数据相对较难对其进行干扰,因为在递归进行算法中,一个非常重要的假设是,对任意一条控制转移指令,都能确定其后继的目的地址,所以要迷惑这样的反汇编器,通常需要用辣鸡数据配合控制转移指令来进行。

添加大量的无用代码来隐藏有用代码也是常出现的花指令技术,通常是大量的无用代码,因为小的事物只能隐藏在大的事物之后,可以通过后期的补丁技术来插入这些无用代码。

攻击方法:对于干扰反汇编的花指令,慢慢分析就行了,头铁可以解决一切问题。而碰到大量的无用花指令时,就得去分析这种无用代码用有的某种规律或范围,因为它是程序生成的,不具有随机性,找到这个规律和范围就能通过脚本来清除这些花指令了。

 

SMC

self-modify-code,SMC技术比较惹人喜爱,它将一块局部的代码进行加密,而在程序运行过程中对这块代码进行解密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值