<b>C++源代码免杀之函数的动态调用</b>[VC/C++编程]
本文“<b>C++源代码免杀之函数的动态调用</b>[VC/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,接着很多看了教程的人都改成那两个,做教程的人还在教程里吓唬人说“别的都不要动,这两个地方改成这样便可以了”,有时刻有些事情并不难,并不可怕,难和可怕大多来自于别人的骇人听闻和对未知事物的惊骇.最后但愿大家都可以放开手脚,干番大事业!搞了个垃圾站赚点外块,但愿大家能支持下.
以上是“<b>C++源代码免杀之函数的动态调用</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |