C++源代码免杀之函数的动态调用

  最近也在学着修改Gh0st远控的源代码,源代码免杀起来还是方便、简单、有效和简单点。针对于输入输出表盯的比较紧的杀毒软件,最有效的还是进行函数动态调用。也就是说找到函数的原定义,包括值类型和参数等等,再在调用该函数的地方重新定义这个函数,其实也只是改下函数名而已,下面举个例子:

        CreateRemoteThread 作用是创建远线程,假设杀毒软件现在就杀在这个函数上,我们就这样处理,首先在代码中右键点击CreateRemoteThread函数-->转到定义,找到函数的原型:

  函数原型如下:

  WINBASEAPI

  __out

  HANDLE

  WINAPI

  CreateRemoteThread(

  __in HANDLE hProcess,

  __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,

  __in SIZE_T dwStackSize,

  __in LPTHREAD_START_ROUTINE lpStartAddress,

  __in_opt LPVOID lpParameter,

  __in DWORD dwCreationFlags,

  __out_opt LPDWORD lpThreadId

  );

  改后的函数模型如下:

  typedef HANDLE (WINAPI *CreateRemoteThreadxx)

  (

  __in HANDLE hProcess,

  __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,

  __in SIZE_T dwStackSize,

  __in LPTHREAD_START_ROUTINE lpStartAddress,

  __in_opt LPVOID lpParameter,

  __in DWORD dwCreationFlags,

  __out_opt LPDWORD lpThreadId

  );

  CreateRemoteThreadxx yyCreateRemoteThread= (CreateRemoteThreadxx)GetProcAddress(LoadLibrary("kernel32.dll"),"CreateRemoteThread");

  

  补充:有些函数原型最后面分别带得有A和W的,如果你的编译环境是ANSI环境就选择带A的那部分,如果你的环境是Unicode环境,那就选择带W的那部分。例如:GetUserName的原型有两种定义:GetUserNameA和GetUserNameW,视实际情况选择相应的函数原型进行修改就好。

  修改后调用的函数名就由CreateRemoteThread变为了yyCreateRemoteThread,红色部分为自定义部分,随便你改称什么,但是要注意前后一致。蓝色的部分再可以用字符串连接法进行分离后连接,这样处理之后,杀毒软件就找不到CreateRemoteThread这个函数了。到此,文件的这处也就免杀了。一点小手记,分享给大家,见笑了。

  后记:看了很多教程,都是说怎么改,没说为什么要这么改,也没说还可以怎么改,更没说改的限度是什么。一看教程里先在函数后面加个L,再在定义后的新的函数前面加个p,接着很多看了教程的人都改成那两个,做教程的人还在教程里吓唬人说“别的都不要动,这两个地方改成这样就可以了”,有时候有些事情并不难,并不可怕,难和可怕大多来自于别人的耸人听闻和对未知事物的惧怕。最后希望大家都能够放开手脚,干番大事业!搞了个垃圾站赚点外块,希望大家能支持下。

时间: 2024-10-27 21:50:35

C++源代码免杀之函数的动态调用的相关文章

php中动态调用函数的方法

 这篇文章主要介绍了php中动态调用函数的方法,实例分析了php动态函数的实现原理与具体实现步骤,需要的朋友可以参考下     本文实例讲述了php中动态调用函数的方法.分享给大家供大家参考.具体分析如下: php中你可以动态调用函数,分为以下步骤: 1. 定义一个函数 2. 将函数名(字符串)赋值给一个变量 3. 使用变量名代替函数名动态调用函数 详细代码如下所示: ? 1 2 3 4 5 6 7 <?php function addition ($a, $b){ echo ($a + $b)

php中动态调用函数的方法_php技巧

本文实例讲述了php中动态调用函数的方法.分享给大家供大家参考.具体分析如下: php中你可以动态调用函数,分为以下步骤: 1. 定义一个函数 2. 将函数名(字符串)赋值给一个变量 3. 使用变量名代替函数名动态调用函数 详细代码如下所示: <?php function addition ($a, $b){ echo ($a + $b), "\n"; } $result = "addition"; $result (3,6); ?> 希望本文所述对大家

免杀艺术 1: 史上最全的免杀方法汇总

本文讲的是免杀艺术 1: 史上最全的免杀方法汇总, 从本文开始,我们将分三章来系统的讲述一下有关免杀的各种技术. 虽然目前有很多方法可以让恶意软件使用某一技术绕过反病毒检测,但这些显然不是恶意软件免杀的终极目标, 它们的最终目标是实现 "FUD", "FUD" 是地下网络论坛的黑话,代表"恶意软件完全不可被检测到"的意思. 本文主要是通过介绍静态免杀.动态免杀和启发式免杀三种方法来实现"FUD",但不管是哪种实现的技术,其中的

免杀的艺术:史上最全的汇编Shellcode的技巧(三)

本文讲的是免杀的艺术:史上最全的汇编Shellcode的技巧(三), 我们在上一篇提到要要自定义shellcode,不过由于这是个复杂的过程,我们只能专门写一篇了,本文,我们将会给大家介绍shellcode的基本概念,shellcode在编码器及解码器中的汇编以及几种绕过安全检测的解决方案,例如如何绕过微软的 EMET(一款用以减少软件漏洞被利用的安全软件).为了理解本文的内容,大家需要具了解x86汇编知识和基本文件格式(如COFF和PE). 专业术语 进程环境块(PEB):PEB(Proces

免杀的艺术:PE文件后门的植入(二)

本文讲的是免杀的艺术:PE文件后门的植入(二), 在上一篇<免杀的艺术 1>中,我们详细列举了各种实现免杀的技术. 今天,我们将继续为大家进行免杀的话题--PE文件后门的植入, 不过还是和上一篇一样,我们建议读者需要了解x86程序集,调试器和PE文件的基本知识. 现在几乎所有的安全研究人员,安全测试人员和恶意软件分析人员每天都要处理各种各样与后门攻击相关的工作,原因很简单,将后门放置到在系统中插入后门或在程序中保留随意访问的权限是当下最流行的一种攻击方式. 鉴于此,本文会主要为大家介绍往32位

打造个性化免杀版防火墙、杀毒软件

前言: 众所周知,现在越来越多的病毒爱好者为了展示个人能力或一些不可告人的秘密而制作一系列的病毒程式:不过,由于国内大部分用户对网络安全有了更多的了解,都会在自己系统中安装使用防火墙或杀毒软件来保护自己的系统网络安全!因此,这类安全软件的存在成了这些病毒的"拌脚石".如何扫除这些"拌脚石"也就成了他们所追求的另一种境界:"让病毒程式在系统中如入无人之境"! 常见的病毒保护技术: 加壳压缩或加密(主要是采用网络中流行的加壳程序): 修改病毒程式中的

在C#中动态调用native dll的导出函数

动态|函数 在 C++ 中我们能够通过 LoadLibrary,  GetProcAddress 来动态调用 dll 的导出函数.在 C# 中也能够用这样的方式吗?在 DotNet 2.0 里面这样是可以的, 这完全得益于 2.0新增的一个函数Marshal.GetDelegateForFunctionPointer 方法 此方法在 .NET Framework 2.0 版中是新增的. 将非托管函数指针转换为委托. 实例代码如下: public delegate int MsgBox(int h

择优链接资源 为网站撑起免杀保护伞

  网站优化做的是一个内外兼优的过程,顺势搜索引擎方能得意于排名前列.SEO优化,在内优方面做的是包括结构与内容的优化,在外做链接普及的优化.然而若论提升网站排名效果而言,外链的普及则相对更易提升网站权重,因此常常被誉为优化的"皇者".在网站优化过程中,常常会出现一些意想不到的问题,而被搜索引擎杀掉,如何避免或尽量减少这个误杀概率呢?笔者认为高质量的外链普及便是对网站形成的一"免杀保护伞".外链做的越到位,被杀掉的几率也是越小的,当然前提是网站不存在严重作弊问题.不

C++中的虚函数和动态联编

  面向对象程序设计的基本观点是用程式来仿真大千世界,这使得它的各种根本特性非常人性化,如封装.继承.多态等等,而虚函数就是c++中实现多态性的主将.为了实现多态性,c++编译器也革命性地提供了动态联编(或叫晚捆绑)这一特征. 虚拟函数亦是mfc编程的关键所在,mfc编程主要有两种方法:一是响应各种消息,进行对应的消息处理.二就是重载并改写虚拟函数,来实现自己的某些要求或改变系统的某些默认处理. 虚函数的地位是如此的重要,对它进行穷根究底,力求能知其然并知其所以然 对我们编程能力的提高大有好处.