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

    ②自定义程序入口

    ③合并区段

    ④自定义最小节的大小

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

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

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

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

  • 相关阅读:
    Python学习杂记_2_格式化字符串的一些操作
    Python学习杂记_1_PyCharm使用的一些收获
    autolayout sizeclass 资料集锦
    据说这个是获得当前的控制器方法,没试过
    Mac下搭建php开发环境【转】
    搜索栏会消失 uisearchbar 狂点消失的问题解决
    mac下XAMPP服务器配置多站点配置局域网配置 (转)
    在 Xcode 6 中使用矢量图( iPhone 6 置配 UI)
    收到远程通知,怎么区分是点击通知栏提醒进去的还是在foreground收到的通知?
    开发经验之状态机思想,分别使用了swift,OC,C,PHP语言实现
  • 原文地址:https://www.cnblogs.com/-qing-/p/10815143.html
Copyright © 2011-2022 走看看