xiaochen666 发表于 2022-5-4 13:36

c++ 打开文件读取shellcode异或问题

我这么写异或出来的代码多了四倍,怎么样让他一组一组的异或呢
\xfc异或
而不是
\ 异或
x 异或
f 异或
c 异或

#include <Windows.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main(int argc, char* argv[]) {
      
    HANDLE cf = CreateFileA("payload.c", GENERIC_ALL, 0, NULL, OPEN_ALWAYS, 0, NULL);
    if (cf == INVALID_HANDLE_VALUE)
    {
      printf("error");
      return -1;
    }
    DWORD dwSize = 0;
    DWORD dRead;
    dwSize = GetFileSize(cf, 0);
    unsigned char* buf = new unsigned char{};
    ReadFile(cf, buf, dwSize, &dRead ,0);

    for(int i=0; i<dwSize; i++)
    {
      buf = buf ^ 10;
      printf("\\x%x", buf);
    }
   

    return 0;
}

seawaycao 发表于 2022-5-4 19:26

没有明白楼主的意思

xiaochen666 发表于 2022-5-4 19:45

seawaycao 发表于 2022-5-4 19:26
没有明白楼主的意思

有点说不清楚,可以加个好友吗师傅

苏紫方璇 发表于 2022-5-4 23:15

payload.c的文件内容呢

xiaochen666 发表于 2022-5-4 23:43

苏紫方璇 发表于 2022-5-4 23:15
payload.c的文件内容呢

msf生成的纯shellcode   \xfc\x78\x53.....

苏紫方璇 发表于 2022-5-5 00:04

xiaochen666 发表于 2022-5-4 23:43
msf生成的纯shellcode   \xfc\x78\x53.....

中间循环改成这个
char str = { 0 };
        unsigned char c;

        for (int i = 0; i < dwSize; i+=4)
        {
                //跳过\x
                str = buf;
                str = buf;
                sscanf(str, "%x", &c);
                c = c ^ 10;
                printf("\\x%02x", c);
        }

xiaochen666 发表于 2022-5-5 01:03

苏紫方璇 发表于 2022-5-5 00:04
中间循环改成这个
char str = { 0 };
        unsigned char c;


解决了,太谢谢了师傅,弄了一周了终于解决,我帖子有个悬赏,你去填一下师傅 我给你采纳
页: [1]
查看完整版本: c++ 打开文件读取shellcode异或问题