转自 http://blog.csdn.net/yangbostar/article/details/6194133

入门知识,高手勿读

一、 概述

花指令是对抗反汇编的有效手段之一,正常代码添加了花指令之后,可以破坏静态反汇编的过程,使反汇编的结果出现错误。错误的反汇编结果会造成破解者的分析工作大量增加,进而使之不能理解程序的结构和算法,也就很难破解程序,从而达到病毒或软件保护的目的。

二、花指令分类

[2.1]可执行式花指令

顾名思义,可执行式花指令指的是能够正常运行的但又不改变原始程序逻辑性的一组无用指令。这类花指令有如下特点:①可以正常运行;②不改变任何寄存器的值;③反汇编器可以正确反汇编该指令。

例如这样几组花指令就属于该类别:PUSHEAX&POPEAX;NOP:INCEAX&DECEAX等等。这种类别的花指令组合形式很多,常常用在病毒代码的变形引擎中,病毒在传播时通过变形引擎随机产生一组该类别花指令并插入到病毒正常代码中,可以改变病毒的特征码,从而起到变形的作用。

[2.2]不可执行式花指令(垃圾指令)

本文主要就是讲这个方面,是指被插入到原始代码中但又不改变原始程序逻辑性的一组无用字节。这类花指令有如下特点:①不可以正常运行;②不改变任何寄存器的值;③反汇编器可能会错误反汇编这些字节。

根据反汇编的工作原理,只有当花指令同正常指令的开始几个字节被反汇编器识别成一条指令时,才能有效破坏反汇编的结果。因此,插入的花指令应当是一些不完整的指令,被插入的不完整指令可以是随机选择的。正因为不可执行花指令有这些特点,该类花指令才能应用到软件保护中。

Cullen等人指出为了能够有效“迷惑"静态反汇编工具,同时保证代码的正确运行,花指令必须满足两个基本特征,即:

1)垃圾数据必须是某个合法指令的一部分:

2)程序运行时,花指令必须位于实际不可执行的代码路径。

三、不可执行花指令的成功来自反汇编算法的缺陷

当前静态分析中采用的反汇编算法主要可以分为2类:线性扫描算法与行进递归算法。

[3.1]线性扫描反汇编算法

线性扫描算法p1从程序的入口点开始反汇编,然后对整个代码段进行扫描,反汇编扫描过程中所遇到的每条指令。线性扫描算法的缺点在于在冯诺依曼体系结构下,无法区分数据与代码,从而导致将代码段中嵌入的数据误解释为指令的操作码,以致最后得到错误的反汇编结果。

[3.2]行进递归反拒绾算法

相比线性扫描算法,行进递归算法通过程序的控制流来确定反汇编的下一条指令,遇到非控制转移指令时顺序进行反汇编,而遇到控制转移指令时则从转移地址处开始进行反汇编。行进递归算法的缺点在于准确确定间接转移目的地址的难度较大。

四、简单不可执行花指令

    实际编程中不要简单花指令,否则容易被去除或被认为是病毒。

下面是的最典型形式:

jmp Label1

db thunkcode1;垃圾数据

Label1:

……

解析:

1.Jmp可以用call,ret,loop等替换

2.该垃圾数据通常是一条多字节指令的操作码,例如在thunkcode1处放入0e8h,由于0e8h是call指令的操作码,因此对0e8h进行解码时就会将它后面的4个字节,也就是maliciouscode的前4个字节看作是调用目标地址 [maliciouscode应该指Label1:开始处的4字节--lixiangminghate注],从而造成反汇编过程中的错误,达到隐藏恶意代码的目的。

五、稍复杂的花指令

[5.1]多节形式

典型形式的条件跳转混淆可能仅仅造成几条指令的反汇编错误,但是下面的多重顺序嵌套的条件跳转混淆则能够使更多指令的反汇编得到错误的结果。

举例:

JMP Label1

Db thunkcode1

Label1:

 ……

JMP Label2

Db thunkcode2

Label2:

 ……

[5.2]多层乱序

在上面的形式中,可以简单地将条件跳转到跳转目的地址之间的所有字节进行填充来破解混淆,于是有了条件混淆的一种新的形式,即多层乱序嵌套:

JMP Label1

Db thunkcode1

Label2:

 ……

JMP Label3

Db thunkcode3

Label1:

  …….

JMP Label2

Db thunkcode2

Label3:

  ……

抗去除花指令(一)——花指令基础相关推荐

  1. 手机我的世界服务器系统指令,我的世界手机服务器花雨庭各种指令 | 手游网游页游攻略大全...

    发布时间:2017-06-04 下面小编为大家解析一下花雨庭生存服技能升级技巧是什么,相信有很多技巧知识也是你不知道的,那么就请大家一起来看看吧! 花雨庭生存服内含带技能系统 技能系统部分采用于MCM ...

  2. Unity抗锯齿,Unity3D模型花闪烁等效果优化。

    Unity抗锯齿,Unity3D模型花闪烁等效果优化. 最近在做全息投影项目,模型闪烁,锯齿明显,自己总结了一些优化方法. 方法一:在场景内摄像机上挂载如下抗锯齿脚本.摄像机改为Skybox或者Sol ...

  3. 常见花材的固定的方法有哪些_干货贴|花材固定方法之基础篇

    原标题:干货贴|花材固定方法之基础篇 古人爱用瓶子插花,今天我们用到最多的也是瓶子,一把花材随便放入瓶中,美感有限.不如学学古人,用最简单的固定方法,让你手中的花材可以多角度变换位置和姿态,插出一个不 ...

  4. 花188购买的0基础短视频入门实战培训文档,学了一周的总结。

    花188购买的0基础短视频入门实战培训文档,学了一周的总结. 大家好,我是我赢助手,专注于自媒体短视频去水印.去重和文案提取运营! 为了更加专业的给大家讲讲短视频和自媒体,也为了能了解0基础怎么搞定短 ...

  5. linux shell指令 amp,shell入门基础amp;常见命令及用法

    shell shell是一个命令解释器,实际是一个程序,/bin/bash,linux中所有的命令都由它来解释,有自己的语法 shell脚本 以.sh结尾 shell语法+linux命令 注释: 单行 ...

  6. 【ARMv8 SIMD和浮点指令编程】编程基础

    ARM 高级 SIMD 架构.相关的实现和支持软件通常被称为 NEON 技术.AArch32(相当于 ARMv7 的 NEON 指令)和 AArch64 都有 NEON 指令集.两者都可以显著加速在大 ...

  7. Linux系统学习: 进程、重定向和管道指令:xargs 指令的作用是

    进程 为了弄清楚这节课程的内容,也就是管道,我们先来讨论一下进程. 我们知道,应用的可执行文件是放在文件系统里,把可执行文件启动,就会在操作系统里(具体来说是内存中)形成一个应用的副本,这个副本就是进 ...

  8. 快捷指令 python_快捷指令 pythonista wifi连接上局域网(自动)唤醒主机电脑或投影仪...

    前言 最近在研究奇奇怪怪的东西.然后找到了ios的快捷指令,玩了一个下午..只实现了连接固定wifi(自动)写入当前时间到印象笔记,自动打括号的原因是苹果限制了wifi的自动化操作.所以还是手动点一下 ...

  9. call指令和ret指令【笔记+详解】

    笔记目录 call指令和ret指令[笔记] 1 引子 2 call和ret的简单运用 3 call指令本质含义详解 4 ret指令 5 总结及汇编环境资源 call指令和ret指令[笔记] 1 引子 ...

最新文章

  1. 【FI模块学习笔记】 固定资产概述(下)
  2. nginx实现http服务配置
  3. python博客访问量_史诗级干货-python爬虫之增加CSDN访问量
  4. python随机选取0到100间的奇数_python random模块(随机数)详解
  5. zabbix计算型监控项函数last_面试官:如何用zabbix实现监控linux服务器进程使用率...
  6. 修改wifi密码后连接不上服务器,WiFi修改密码后,手机电脑连接不上
  7. 周易 —— 文本阅读
  8. C#-WinForm-ListView-表格式展示数据、如何将数据库中的数据展示到ListView中、如何对选中的项进行修改...
  9. 互联网最强的下载工具:IDM
  10. 新浪微博开放平台_Xweibo,修改设置…
  11. 雷达原理---时频分析--2.短时傅里叶变换
  12. 4星|《千年金融史》:金融技术就是一个我们自己建造的时间机器
  13. 商用密码应用安全性评估过程学习指南
  14. 搭建 PHP 开发环境(手把手图文教程)
  15. 微信小程序针对iphoneX以上机型,获取底部高度
  16. 计算机word入门教学ppt,word2003入门教学课件
  17. defineProps
  18. Python 用 os.listdir() 获取文件列表和筛选特定格式文件
  19. 读书有益——》关于 “雪” 的成语
  20. Java基础知识——Java语言基础

热门文章

  1. Java论坛系统--3.系统用户角色权限表结构设计
  2. Mysql的下载、安装
  3. swift学习笔记之navigationController的设置以及使用
  4. navigation_plugin
  5. STM32启动代码学习
  6. Python爬虫实战:手机APP数据抓取分析!谁说不能爬取app数据的?
  7. 安凯微电子与阿里云IoT开展全面合作 共同打造视频芯云一体化解决方案
  8. java程序怎么写_java程序怎么写
  9. 设计模式-行为型-访问者模式
  10. 【深度】大变局!标准化资产的在线理财时代来临