当前位置:萝卜系统下载站 > 网页设计教程 > 详细页面

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

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

更新时间:2019-04-25 文章作者:未知 信息来源:网络 阅读次数:

网站建设是指使用标识语言(markup language),通过一系列设计、建模、和执行的过程将电子格式的信息通过互联网传输,最终以图形用户界面(GUI)的形式被用户所浏览。简单来说,网页设计的目的就是产生网站。简单的信息如文字,图片(GIF,JPEG,PNG)和表格,都可以通过使超文件标示语言、可扩展超文本标记语言等标示语言放置到网站页面上。

最近也在学着修改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,接着很多看了教程的人都改成那两个,做教程的人还在教程里吓唬人说“别的都不要动,这两个地方改成这样就可以了”,有时候有些事情并不难,并不可怕,难和可怕大多来自于别人的耸人听闻和对未知事物的惧怕。最后希望大家都能够放开手脚,干番大事业!搞了个垃圾站赚点外块,希望大家能支持下。

大多数人在上网的时候,都会浏览网页提供给我们的信息。

温馨提示:喜欢本站的话,请收藏一下本站!

本类教程下载

系统下载排行