




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
花指令相信做过免杀的朋友都知道花指令吧。加花指令是一种不错的文件免杀方法,而网上公布的花指令和花指令添加器因为里边的花指令被公布了,所以免杀效果不好。有点汇编基础的人就写自己的花指令,但写花指令的过程比较烦,所以我萌生了写一个花指令生成器的想法,首创哦_一、写花指令生成器必备知识1、花指令原理花指令是程序中的无用代码,程序多它没影响,少了它也能正常运行。加花指令后,杀毒软件对木马静态反汇编时,木马的代码就不会正常显示出来,加大杀毒软件的查杀难度。2、如何写花指令下面我们先看看一段花指令,分析理解它的原理:PUSH EBPMOV EBP,ESPpush edxpop edxinc ecxdec ecxadd esp,21add esp,-21add esp,10sub esp,10JMP 附近空地址随便乱跳JMP 原入口点花指令一般有三部分,开头就是PUSH EBP和MOV EBP,ESP这两句在大部分程序开头可以经常看到。PUSH EBP是把EBP压入堆栈,MOV EBP,ESP是把ESP的值赋给EBP,不懂没关系,只要知道PUSH EBP和MOV EBP,ESP这两句经常出现在文件开头就可以了,随便用OllyDbg打开一个不加壳的文件载入后经常停在PUSH EBP MOV EBP,ESP。接下来就是花指令啦,push edx是把通用寄存器EDX压入堆栈,pop edx是把通用寄存器EDX弹出堆栈,这两句和起来就相当于什么也没做。接下来的inc ecx,ecx用来保存计数值,也是寄存器,INC是加1;下面的dec ecx中的dec是减1,加1减1相抵消,又是什么也没做。add esp,21这是寄存器esp加21,add是加上,下面一句add esp,-21是寄存器esp加21,小学知识,+21+(-21)0,还是什么也没做。再下来add esp,10寄存器esp加21,sub esp,10寄存器esp减10,sub是减去。一个+10,一个-10相互抵消了。最后是跳转语句,我用两句JMP,第一句在花指令附近随便跳到个空地址,第二个JMP是从空地址跳回文件的原入口点。3、如何写入花指令我们来看看加花指令的一般步骤:1、准备好要加的花指令;2、准备未加壳的黑客软件;3、用OllyDbg打开这个黑客软件,记下入口点的内存地址;4、找到零地址,一句一句写入花指令,再用JMP跳回程序入口点;(如果找不到空白地址,我们可以用zeroadd加区段,E文软件,我汉化好的,操作简单就不演示了。)5、保存后用Peditor修改文件入口点为开始写花指令的地址。这样运行程序就先运行花指令再跳回程序的原始开头执行程序了;6、检测程序是否正常运行和免杀效果。一般步骤就是这样了,不演示了,大家看看06年第9期主题乐园,里面有详细的例子。二、开始写花指令生成器1、花指令生成器的编写思路了解了花指令的一些知识后我们来考虑下编写的思路。我们使用perl来编写这个花指令生成器,先看看我画的流程图:(见图1)我们需要定义两个数组,一个是花指令数组,一个跳转语句数组,用for循环和rand函数来实现对数组的循环随机读取,我们还需要一个变量来控制循环次数。程序工作原理是对两个数组的随机读取达到生成花指令的目的。2、代码编写和分析#!/usr/bin/perlif($#ARGV0)print nUsage: nn liyx_HZJ.exe n nmade by liyx nCopyright w Group 2006n;exit(1);#使用帮助。$N=$ARGV0;#获的参数,赋值给$N。if($N1)print n 错误,请输入大于1的数字,以确定花指令的长度。 n nmade liyx nCopyright w Group 2006n;exit(1);#出错提示。程序的第一行注明了这是个perl程序,注释是从符号“#”开始到该行结束。“!”表示perl程序中的第一个注释具有特殊含义。接下来的if($#ARGV0)是判断有无命令行输入的参数,perl的存储命令行参数是ARGV数组,在perl中,程序运行时自动取得程序名后和回车键之前的所有项目并根据结果生成数组ARGV,$ARGV0是第一个参数。当无输入参数(即$#ARGV0),用print输出使用帮助。有则$N=$ARGV0,把输入参数赋值给$N变量。接着再判断$N的大小,$N必须大于1。($N在这个程序中用来控制花指令的长短)$N小于1时,一样打印出错误提示。(如图2)$H1=push edxnpop edxn;$H2=push eaxnpop eaxn;$H3=inc ecxndec ecxn;$H4=add esp,10nsub esp,10n;$H5=add esp,21nadd esp,-21n;$H6=nopnnopn;H=($H1,$H2,$H3,$H4,$H5,$H6,);#花指令的数组。这里定义一个数组H用来存储花指令语句,perl中的数组可以包含变量,表达式,任何数值,引用和字符串,还可以是数组当然也可以为空。语法是:list=(1,2,3,);(分行是为了看得更清楚,如无必有可以改为单行显示)为了更容易看,我先将每对指令赋值给变量,再将变量放入数组中。print nPUSH EBPnMOV EBP,ESPn;这句是打印出花指令的开头两句PUSH EBP和MOV EBP,ESP,和C一样n是换行。for($i=1; $i=$N; $i+)$rand1 = int rand(H); print H$rand1; #循环打印出随机生成的花指令。先讲讲这里需要用到的知识,for循环语句和rand函数,for循环几乎所有编程语言都有,我们看看语法:for(变量初始值;循环条件;条件改变)循环体运行过程是先给变量赋值,再判断是否符合循环条件,符合时执行循环体,再处理初始变量,之后判断是否符合循环条件,符合时执行循环体,直到不符合循环条件跳出循环。这里还用到的是rand函数。函数名 rand 调用语法 retval = rand (num); 解说 随机数函数,返回0和整数num之间的一个浮点数。运行过程是先给$i赋值1,再比较$i是否小于等于$N,是的话执行循环体,就是用rand函数读取H数组,赋值给$rand1,再用print打印出来。执行一遍后$i+,就是$i=$i+1,$i的值增加1,再比较$i是否小于等于$N,是的话再继续执行循环体,直到$i大于$N为止。$J1=JMP 附近空地址随便乱跳nJMP 跳回入口点n;$J2=je 跳回入口点njne 跳回入口点n;$J3=jz 跳回入口点njnz 跳回入口点n;$J4=jb 跳回入口点njge 跳回入口点n;$J5=jl 跳回入口点njge 跳回入口点n;$J6=ja 跳回入口点njle 跳回入口点n;$J7=jg 跳回入口点njle 跳回入口点n;J=($J1,$J2,$J3,$J4,$J5,$J6,$J7,);#跳转指令数组。这里就是跳转语句的数组了,跳转语句在花指令中的作用是程序执行完花指令再跳回文件的原始入口点执行程序,一般用的是JMP 无条件转移指令,我们把je 等于时转移和jne 不等于时转移结合起来就成了JMP了,以此类推jb 若小于则跳和jge 大于或等于转移,ja 若大于则跳和jle 若小于等于则跳等结合都成JMP,这样我们有很多不同组合,可以加大杀毒软件对木马查杀难度。(我找了免杀的汇编知识资料,大家
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服装设计师与时尚公司长期合作协议
- 智能门锁集成安装与定期检修服务协议
- 滩涂贝类养殖权委托经营管理全面合作协议
- 康养中心护理服务委托专业运营协议
- 跨界脑机接口技术研发与市场推广合作协议
- 留学中介服务及海外院校录取通知书获取及签证申请辅导及生活适应辅导协议
- 耕地流转规模化种植项目委托管理合同
- 班组长现场管理
- 全身人物绘画美术课件
- 瘫痪人员护理要点与规范
- 小班语言《水珠宝宝》课件
- 加油站职业危害防治计划和实施方案
- 路面弯沉温度修正系数
- 山东省济南市槐荫区2024届中考联考化学试题含解析
- (完整版)xx中学“双积双评”积分入团实施方案
- 拖拉机和联合收割机安全技术检验合格证明
- 文化产业政策与法规
- 第四讲婴幼儿情绪情感及社会功能的发育
- (完整word版)餐券模板
- 平野苍流:打渔张引黄灌区开灌60周年纪念专辑
- 电梯安全风险管控清单
评论
0/150
提交评论