第一个免杀花指令生成器–不简单的免杀工具(图)

第一个免杀花指令生成器–不简单的免杀工具(图)第一个免杀花指令生成器–不简单的免杀工具(图)陆续将以前发表在杂志的文章放上来~,发表于《黑客X档案》,第几期忘了,呵呵前言相信做过免杀的朋友都知道花指令吧。加花指令是一种不错的文件免杀方法,而网上公布的花指令和花指令添加器因为里边的花指令被公布了,所以免杀效果不好。有点汇编基础的人就写自己的花指令,但写花指令的过程比较烦,所以我萌生了写一个花指令生成器的想法,首

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

第一个免杀花指令生成器–不简单的免杀工具(图)

陆续将以前发表在杂志的文章放上来~第一个免杀花指令生成器--不简单的免杀工具(图),发表于《黑客X档案》,第几期忘了,呵呵

前言

相信做过免杀的朋友都知道花指令吧。加花指令是一种不错的文件免杀方法,而网上公布的花指令和花指令添加器因为里边的花指令被公布了,所以免杀效果不好。有点汇编基础的人就写自己的花指令,但写花指令的过程比较烦,所以我萌生了写一个花指令生成器的想法,首创哦^_^

一、写花指令生成器必备知识

1、花指令原理

花指令是程序中的无用代码,程序多它没影响,少了它也能正常运行。加花指令后,杀毒软件对木马静态反汇编时,木马的代码就不会正常显示出来,加大杀毒软件的查杀难度。

2、如何写花指令

下面我们先看看一段花指令,分析理解它的原理:

PUSH EBP




MOV EBP,ESP




push edx




pop edx




inc ecx




dec ecx




add esp,21




add esp,-21




add esp,10




sub esp,10




JMP 附近空地址随便乱跳




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/perl

if($#ARGV<0){





print” \nUsage: \n\n liyx_HZJ.exe <一个大于1的数字以确定花指令的长度>\n \nmade by liyx \nCopyright [w Group] 2006\n”;




exit(1);




}#使用帮助。

$N=$ARGV[0];#获的参数,赋值给$N。

if($N<1){





print” \n 错误,请输入大于1的数字,以确定花指令的长度。 \n \nmade liyx \nCopyright [w Group] 2006\n”;




exit(1);




}#出错提示。

程序的第一行注明了这是个perl程序,注释是从符号“#”开始到该行结束。“!”表示perl程序中的第一个注释具有特殊含义。

接下来的if($#ARGV<0)是判断有无命令行输入的参数,perl的存储命令行参数是@ARGV数组,在perl中,程序运行时自动取得程序名后和回车键之前的所有项目并根据结果生成数组@ARGV,$ARGV[0]是第一个参数。当无输入参数(即$#ARGV<0),用print输出使用帮助。有则$N=$ARGV[0],把输入参数赋值给$N变量。接着再判断$N的大小,$N必须大于1。($N在这个程序中用来控制花指令的长短)$N小于1时,一样打印出错误提示。(如图2)

第一个免杀花指令生成器--不简单的免杀工具(图)
$H1=”push edx\npop edx\n”;




$H2=”push eax\npop eax\n”;




$H3=”inc ecx\ndec ecx\n”;




$H4=”add esp,10\nsub esp,10\n”;




$H5=”add esp,21\nadd esp,-21\n”;




$H6=”nop\nnop\n”;





@H=(




$H1,




$H2,




$H3,




$H4,




$H5,




$H6,




);#花指令的数组。

这里定义一个数组@H用来存储花指令语句,perl中的数组可以包含变量,表达式,任何数值,引用和字符串,还可以是数组当然也可以为空。语法是:

@list=(




1,




2,




3,









);

(分行是为了看得更清楚,如无必有可以改为单行显示)为了更容易看,我先将每对指令赋值给变量,再将变量放入数组中。

print “\nPUSH EBP\nMOV EBP,ESP\n”;

这句是打印出花指令的开头两句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,这样我们有很多不同组合,可以加大杀毒软件对木马查杀难度。(我找了免杀的汇编知识资料,大家可以看看里面的跳转指令部分)

$rand2 = int rand(@J); 




print @J[$rand2]; #随机生成跳转指令并打印出来。

最后还是用rand函数读取跳转数组,这里只需读取一次,并打印出来。

3、测试工具

代码写好了,是不是很简单啊,功能可不一般哦,看看效果吧。(如图3)怎样,不错吧,这样就可以拥有N多免杀花指令了,呵呵~~

第一个免杀花指令生成器--不简单的免杀工具(图)
后记

程序很简单,但效果很好,有兴趣的朋友可以用C,VB写个,应该不难实现。第一次写编程的文章,写得不好,见谅。最后感谢好友wo1fSea在我写这个小程序过程对我的帮助。


http://hi.baidu.com/zuiaiwg/item/697f923ee1863d0dceb9fe94

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171381.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm升级pip版本_怎么升级pip版本

    pycharm升级pip版本_怎么升级pip版本python-mpipinstall–upgradepip

    2022年10月23日
  • idea2021.2.8激活码-激活码分享

    (idea2021.2.8激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html83PVI25FMO-eyJsa…

  • 用java代码实现九九乘法表

    用java代码实现九九乘法表分析乘法表发现,整体有九行,第一行是一列,第二行是两列,第三行三列…..第九行对应有九列,所以它的行数对应就有多少列,这样我们可以通过借助行数来控制它的列数,以此来实现乘法表的打印。具体代码实现:for循环publicclassMultTable{ publicstaticvoidmain(String[]args){ //此处调用九九乘法表方法实现打印 multMethod(); } publicstaticvoidmultMethod(){ /

  • 大数据Hbase 面试题「建议收藏」

    大数据Hbase 面试题「建议收藏」1.2hbase的特点是什么  (1)Hbase一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper进行管理。(2)Hbase适合存储半结构化或非结构化数据,对于数据结构字段不够确定或者杂乱无章很难按一个概念去抽取的数据。(3)Hbase为null的记录不会被存储.(4)基于的表包含rowkey,时间戳,和列族。新写入数

  • JS数组添加数据、数组排序、数组去重

    JS数组添加数据、数组排序、数组去重varData=[]; //后台请求返回的result.result.Table for(vari=0;i<Table.length;i++){ //一维数组 Data.push(Table[i].字段); //二维数组 Data.push(“value”:Table[i].字段); //多维数组 Table.push(Data); } //数组排序(从小到大) functionpup(Dat..

  • 模糊控制器matlab仿真_有关bp神经网络Matlab的书

    模糊控制器matlab仿真_有关bp神经网络Matlab的书以下多套系统源码:1、MATLAB二级倒立摆三级倒立摆(在MATLAB下的二级倒立摆、三级倒立摆的仿真。内有所有需要的m文件)2、倒立摆matlab代码3、神经网络倒立摆控制(利用matlab对倒立摆的仿真,效果十分不错)4、二级倒立摆模型(这是一个演示直线二级倒立摆的matlab运行模型,这个模型能够根据仿真数据动画演示出二级倒立摆的运动情况。)5、倒立摆源码(倒立摆源码程序,注释很详细,是学习倒立摆原理,PID算法很好的参考资料。代码书写规范,注释详细。)6、二级倒立摆神经网络控制7

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号