我试图通过尝试直接将它传递给函数而不先定义它来对BYTE(无符号字符)执行XOR加密。异或字节数组(Shellcode)
XOR函数:
void xor(BYTE input[], BYTE output[]) {
BYTE key[] = { 'T', 'A', 'M' }; //Can be any chars, and any size array
int i;
for (i = 0; i < sizeof(input); i++) {
output[i] = input[i]^key[i % (sizeof(key)/sizeof(BYTE))];
}
BYTE阵列例如:
BYTE Shellcode[] =
{
0x48, 0x83, 0xEC, 0x08,
};
的问题是,我不希望保存BYTE阵列而不加密,因为它将在存储器被暴露即可。
我怎么能直接传递BYTE数组到函数中而不先定义它?
用一个简单的字符数组包含字符串它当然会很容易,但我无法找出如何传递字节数组与整数值,而不是字符串文字。
如果您可以将其作为输入传递给函数,则必须将其显示在内存中。如果使用字符串文字,它也会在内存中(和可执行文件中)公开。 – interjay
'sizeof(input)'是指针的大小,而不是数组的大小。 – mch
你的函数被破坏了:你不能在函数中使用'sizeof'来确定传递给该函数的数组的长度作为参数。这主要是因为你*不能传递一个数组 - 无论你认为你在做什么,你实际上是在传递一个指向第一个数组元素的指针。这样的指针不会携带有关数组中元素数量的信息。 –