花指令的花指令生成器

花指令的花指令生成器,第1张

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

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加区段,英文软件,我汉化好的,操作简单就不演示了。)

5、保存后用Peditor修改文件入口点为开始写花指令的地址。这样运行程序就先运行花指令再跳回程序的原始开头执行程序了;

6、检测程序是否正常运行和免杀效果。

你有用是彗星的真彩控件模块吧,用了这个模块后(所有控件真彩的都会),你的控件之中的控件就看不见了(比如窗口真彩了,其中所有的控件都看不见了),但是可以正常操作(比如编辑框照样可以输入内容,按钮照样可以单击,都是可以反馈的,只是给遮盖住了)。

如果你没有使用到这个模块却出现了这个问题,请留下你的部分代码~

今日推荐:JeeCGBoot低代码开发平台

推荐理由:

1、前后端实现分离架构,通过API调用,实现架构解耦

2、项目集成SpringBoot、SpringCloud的Spring全家桶

3、在线实现开发,表单开发设计、报表配置、在线图表设计、在线设计流程、流程自动化、插件能力等

4、系统集成了工作流,实现扩展任务接口。

5、解决java项目的70%的重复工作

6、最重要的是技术售后的完善,有完善的开发文档,常见问题,交流群

适用场景

1、内部办公系统OA

2、企业资源计划系统ERP

3、客户关系管理系统CRM

4、企业信息管理系统

5、电商SAAS系统

功能特色:

1、支持微服务SpringCloudAlibab全家桶

2、前后端高效代码生成器,单表,一对多模型,CRUD等功能一键生成

3、低代码图表功能,在线设计图表无需编码,实现曲线图,柱状图,数据报表等自定义排版布局

4、封装各种工具类,如定时任务,短信接口邮件发送,excel导入,文件上传下载等

5、支持查询过滤器,动态拼装SQL追加查询条件

6、实现数据权限,控制到行级,列表级,表单字段级,实现不同人看不同数据

7、支持SAAS服务模式,提供多租户的架构方案

8、数据库兼容主流Mysql、PostgreSql、Oracle、SQLServer、MariaDB等主流数据库,一套代码兼容主流

9、集成了Activiti工作流

10、支持单点登录CAS集成方案

11、接口统一采用restful接口方式,集成了Swagger-ui在线接口文档

技术架构:

后台环境:

Java8+Maven+Mysql+Redis

后台开发技术

springBoot2+SpringCloudAlibaba+MybatisPlus+Jimurport+ApacheShir

前端:

Vue26+Axios

微服务架构图:

后台操作图:

支持手机端

但是这是一种基于单个文件的解决方案,即我们必须为每一个生成的存储过程建立一个模板。如果我们提供一种基于多文件的代码生成方式,将会为编程人员带来极大的便利。借助于T4 ToolBox这个开源工具箱,多文件的SQL Generator的实现变得异常简单。[文中的例子可以从这里下载]目录二、创建自定义的Generator三、ProcedureGenerator如何被使用?一、多文件代码生成器会带来多大的便利?我们先来直观的感受一下较之《上篇》提供的单一文件的代码生成器,基于多文件的代码生成解决方案会为开发人员带来多大的便利。 同样对于《上篇》创建的数据表T_PRODUCT,之前我们为了生成三个不同的存储过程,我们不得已需要创建3个不同的T4模板文件。实际上我们更需要的方式只需要创建一个T4模板,让我们的SQL Generator自动为我们生成3个包含相应存储过程的sql附属文件,如左图所示(点击看大图)。有的时候,基于单个数据表的存储过程生成方式我们依然觉得不方便。如果我们能够在T4模板文件中指定的数据表的列表,让我们的SQL Generator为列表的每一个数据表都生成CUD三个存储过程,这样的方式更加具有吸引力。如右图所示(点击看大图),一个订单模块包含两个具有主子关系的两张表(T_ORDER和T_ORDER_DETAIL),现在我们在一个T4模板中指定这两个表明,通过SQL Generator可以帮助我们生成6个包含存储过程的sql附属文件。甚至有的时候我们连数据表列表都无需指定,让SQL Generator为所有的表都生成相应的存储过程。我的例子中没有提供这样的功能,但是实现自来不会存在任何问题。二、创建自定义的Generator在《上篇》中我创建了一个抽象的ProcedureTemplate类,以及三个基于生成CUD存储过程的具体ProcedureTemplate:InsertProcedureTemplate、UpdateProcedureTemplate和DeleteProcedureTemplate。它们都将直接服务于我们今天将要提供的基于多文件的SQL Generator。在《上篇》中,这四个Template分别定义在4个不同的TT文件中,3个具体的ProcedureTemplate通过<#@include>指令将抽象ProcedureTemplate模板文件包含过来。由于我们将要创建的T4模板将会使用到这四个类,如果我们用四个<#@include>指令将四个TT文件包含过来,由于T4引擎将会导致对ProcedureTemplate的4次包含,最好将会导致变异问题。个人觉得这应该算是T4引擎解析包含关系的一个局限性,为了解决这个问题我们不得不抽象的ProcedureTemplate和三个具体的ProcedureTemplate都合并成一个TT文件。T4 ToolBox为类库中为了提供了一个抽象的T4ToolboxGenerator类用于实现多文件的代码生成。为此我们创建一个TT模板文件,定义了如下一个继承自该类的ProcedureGenerator。ProcedureGenerator的核心是通过属性Templates定义的类型为IEnumerable<ProcedureTemplate>的ProcedureTemplate列表,这个列表在存储过程中进行初始化。而对于ProcedureGenerator的构造函数,处理定义了一个表示数据库连接字符串的databaseName的参数外,并以数组参数的形式指定了生成的存储过程基于的数据表名的列表。<#@ import namespace="SystemCollectionsGeneric" #><#@ include file="ProcedureTemplatett" #><#@ include file="T4Toolboxtt" #><#+publicclass ProcedureGenerator : Generator{public IEnumerable<ProcedureTemplate> Templates{get; private set;}public ProcedureGenerator(string databaseName, paramsstring[] tableNames) {if(null == tableNames || tableNamesLength == 0) {thrownew ArgumentNullException("tableNames"); } thisTemplates = InitlizeTemplates(databaseName,tableNames); }private IEnumerable<ProcedureTemplate> InitlizeTemplates(string databaseName, string[] tableNames) { foreach(string tableName in tableNames) {yieldreturnnew InsertProcedureTemplate(databaseName, tableName);yieldreturnnew UpdateProcedureTemplate(databaseName, tableName);yieldreturnnew DeleteProcedureTemplate(databaseName, tableName); } }protectedoverridevoid RunCore() {foreach(ProcedureTemplate tempalte inthisTemplates) { tempalteRenderToFile(tempalteGetProcedureName() + "sql"); } }}#>真正的存储过程的T-SQL脚本实现在重写的RunCore中。由于具体的文本转化逻辑都定义在了ProcedureTemplate中了,所以在这里我们需要遍历的ProcedureTemplate集合中每一个Template对象,调用RenderToFile方法将相应的存储过程的脚本写入以存储过程命名同名的sql文件中。三、ProcedureGenerator如何被使用?我们最后来看看我们创建的ProcedureGenerator最终如何被应用于具体的代码生成。其实很简单,我们只需要创建相应的模板文件,通过<#@include>将定义ProcedureGenerator类的TT文件包含近来,最后以代码语句调用块(<#StatementCode#>)的形式实力化该对象,并调用Run方法即可。在构造函数中指定数据库连接字符串的名称和数据表名的列表。下面是基于但表的T4模板。<#@ template language="C#" hostSpecific="true" debug="true" #><#@ include file="Templates\ProcedureGeneratortt" #><#new ProcedureGenerator("TestDb","T_PRODUCT")Run();#>下面是基于多表的T4模板:<#@ template language="C#" hostSpecific="true" debug="true" #><#@ include file="Templates\ProcedureGeneratortt" #><#new ProcedureGenerator("TestDb","T_ORDER","T_ORDER_DETAIL")Run();#>当你代码生成工作执行之后,会多出一个与TT文件同名的附属文件,你需要手工删除掉它。从数据到代码——通过代码生成机制实现强类型编程[上篇]从数据到代码——通过代码生成机制实现强类型编程[下篇]从数据到代码——基于T4的代码生成方式

代码生成器是按照特定编码规范输出代码的软件,可以直接生成项目,也可以单页生成

比如动软,生成项目可以选择vs版本的,其实嘛,动软挺垃圾的,不如你去学学orm框架,很简单的,比动软的三层好得多

    ——此文章摘自《自己动手写开发工具 基于Eclipse的工具开发》定价 ¥特价 ¥ 详细>>//track linktech cn/m_id=dangdang&a_id=A &l= &l_type = width= height= border= nosave>

//develop csai cn/Java_Eclipse/images/ jpg >图   设置JET的属性

    ( )   创建模板文件

    JET的模板文件的命名规定是在要生成的代码生成器类的文件名后加jet 比如想命名我们的代码生成器为MyGen java 那么只要把模板命名为MyGen javajet就可以了 因此可在 templates文件夹下创建一个文件EnumCodeGenerator javajet 创建完毕之后 系统会弹出一个错误对话框 如图 所示

//develop csai cn/Java_Eclipse/images/ jpg >图   构建出错对话框

    不要惊慌 这并不是说明我们的创建过程有错 而是创建完模板文件以后 JET构建器就去尝试构建EnumCodeGenerator javajet 由于这个文件是空的 所以当然就构建失败报错了

    在EnumCodeGenerator javajet中输入如下代码     <%@ jet package= cownew enumgenerator wizards class= EnumCodeGenerator %> Hello <%=argument%>!     保存以后 JET就立即会生成EnumCodeGenerator java文件 内容如下     public class EnumCodeGenerator     {         protected static String nl;         public static synchronized EnumCodeGenerator create(     String lineSeparator)         {             nl = lineSeparator;             EnumCodeGenerator result = new EnumCodeGenerator();             nl = null;             return result;         }         protected final String NL = nl == null     (System getProperties() getProperty( line separator )) : nl;         protected final String TEXT_ = Hello ;         protected final String TEXT_ = ! ;         protected final String TEXT_ = NL;

lishixinzhi/Article/program/Java/ky/201311/29009

  1、关注微信公众号“超级车友”,选择搜索结果的第一个,进入后点击关注;

 2、在超级车友微信公众号页面下点豪车订单;

 3、进入豪车订单详情页面中,点击更多订单;

 4、然后选择表白生成器;

 5、在表白生成器页面中,输入姓名,同时选择别,然后点击确定即可制作表白墙了。

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/3310725.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-02-20
下一篇2024-02-20

发表评论

登录后才能评论

评论列表(0条)

    保存