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模式编译

    ②自定义程序入口

    ③合并区段

    ④自定义最小节的大小

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

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

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

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

  • 相关阅读:
    Window 窗口类
    使用 Bolt 实现 GridView 表格控件
    lua的table库
    Windows编程总结之 DLL
    lua 打印 table 拷贝table
    使用 xlue 实现简单 listbox 控件
    使用 xlue 实现 tips
    extern “C”
    COleVariant如何转换为int double string cstring
    原来WIN32 API也有GetOpenFileName函数
  • 原文地址:https://www.cnblogs.com/-qing-/p/10815143.html
Copyright © 2011-2022 走看看