zoukankan      html  css  js  c++  java
  • vc++源码免杀特殊技巧

    一、Debug 和 Release 编译方式的区别:

    Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。



    Debug 和 Release编译方式在木马制作方面的应用是:调试完成以后,使用Release模式编译,这样生成的木马体积可以减小很多

    二、编译器选项:

    #pragma主要包含一些预处理命令,比如共享内存,修改内存属性等等
    //
    自定义对齐方式 #pragma comment(linker, "/FILEALIGN:16") #pragma comment(linker, "/ALIGN:16")//定义最小节的大小,数值越小程序体积越小 //http://msdn.microsoft.com/zh-cn/wf5kss02.aspx
    通过这个编译器选项能够去掉代码中由于对齐而产生的多余代码
    这两个必须同时使用,否则编译出来的程序不能运行
    使用了这个编译器选项之后一般不能再对文件加壳
    #pragma comment(linker, "/OPT:REF")
    #pragma comment(linker, "/OPT:ICF")
    #pragma comment(linker, "/OPT:NOWIN98") // 使用老VC编绎器的512大小为一节
    //自定义加载的库
    #pragma comment(lib,"kernel32.lib")//表示链接kernel32_32.lib这个库
    #pragma comment(lib,"shell32.lib")
    #pragma comment(lib,"msvcrt.lib") //使用VC6.0动态链接库
    //自定义函数入口
    #pragma comment(linker, "/ENTRY:EntryPoint")
    //更改默认的入口函数,之后就要用ExitProcess(0);才能正常退出;
    
     
    
    //设置子系统类型
    #pragma comment(linker,"/subsystem:windows") //这样双击运行程序的时候就不会出现cmd窗口了
    http://blog.csdn.net/lostangels/archive/2008/01/06/2027642.aspx
    
     
    
    // 优化选项
    #pragma comment(linker, "/opt:nowin98")
    //http://support.microsoft.com/kb/235956/zh-cn
    #pragma comment(linker, "/opt:ref")
    #pragma comment (linker, "/OPT:ICF")
    
    
    // 合并区段
    #pragma comment(linker, "/MERGE:.rdata=.data")//把rdata区段合并到data区段里
    #pragma comment(linker, "/MERGE:.text=.data")//把text区段合并到data区段里
    #pragma comment(linker, "/MERGE:.reloc=.data")//把reloc区段合并到data区段里
    
    
    //设置区段属性
    #pragma comment(linker, "/section:.data,RWE")
    在LodePe里看到的就是E0000040,其中RWE是可读、可写、可执行的意思
    R:readable
    W:Writable
    E:executable
    
     
    
    #pragma optimize("gsy", on)
    http://msdn.microsoft.com/zh-cn/library/chh3fb0k(en-us).aspx
    
     
    
    #pragma code_seg("PAGE")    //其中PAGE是区段的名称
    //这个是免杀中最有用的一个编译器选项,它可以把cpp文件里的代码放到一个单独的区段里,这样在对付杀毒软件的代码查杀的时候,给我们带来了非常大的方便
    
    #pragma comment(linker,"/entry:mainCRTStartup")
    //设置入口函数为main
    
     

    三、过nod32启发的代码:

    这个代码主要用于对付nod32的启发查杀,对普通特征码查杀无效

    总结:

    ●让木马体积变小的方法有以下几点:

    ①用Release模式编译

    ②自定义程序入口

    ③合并区段

    ④自定义最小节的大小

    ●编译器选项在代码免杀中的应用:

    ①区段合并让代码发生非常大的改变

    ②代码单独存放在一个区段里

    ③通过其他改变从而使代码发生变化

  • 相关阅读:
    sql-lib闯关秘籍之1-10关
    简单的SQL注入
    五分钟带你读懂 TCP全连接队列(图文并茂)
    Ambari HDP集群搭建全攻略
    Spring Cloud Security OAuth2.0 认证授权系列(入门篇)
    敲黑板:InnoDB的Double Write,你必须知道
    重要,知识点:InnoDB的插入缓冲
    你不知道的内存知识
    每日一个知识点:关于磁盘的一些事儿
    Spring Boot 系列:日志动态配置详解
  • 原文地址:https://www.cnblogs.com/-qing-/p/10815143.html
Copyright © 2011-2022 走看看