赋闲在家 发表于 2023-2-16 16:31:17

求大佬看一下这个代码

#define PAYLOAD_COUNTER_OFFSET      4
VOID CPayloadGenerator::GenerateIncrementalData(PUCHAR a_pucBuffer, ULONG a_ulBytesToCopy)
{
    for (ULONG i=0, j=m_ucPayloadIncrementalLastCharUsed; i<a_ulBytesToCopy; )
    {
      // Add the header counter for every 512 bytes
      if (i%m_ulPayloadHeaderCounterInterval == PAYLOAD_COUNTER_OFFSET &&
            a_ulBytesToCopy >= i+m_ulPayloadHeaderCounterSize)
      {
            AddDataHeader(a_pucBuffer+i);
            i+=m_ulPayloadHeaderCounterSize;
      }
      else
      {
            // Set the incremented payload character
            a_pucBuffer = j%256;
            m_ucPayloadIncrementalLastCharUsed = a_pucBuffer;
            i++;
            j++;
      }
    }
}
不懂为什么// Add the header counter for every 512 bytes 为什么每512bytes就增加一个counter

两手空空儿 发表于 2023-2-16 16:44:03

本帖最后由 两手空空儿 于 2023-2-16 16:56 编辑

大概想实现目的说一下,就这么丢过来一段函数代码,生猜不好回答吧

猜一下
if (i%m_ulPayloadHeaderCounterInterval == PAYLOAD_COUNTER_OFFSET &&      //间隔达到一定数量
            a_ulBytesToCopy >= i+m_ulPayloadHeaderCounterSize)            // BytesToCopy数量没有结束,就是没有copy完
      {
            AddDataHeader(a_pucBuffer+i);
            i+=m_ulPayloadHeaderCounterSize;       //进入下一个存储段,可能是512Byte 一段
      }

liuhongrun2022 发表于 2023-2-16 16:47:54

薅个币

quark 发表于 2023-2-16 16:49:50

来看看。

leletatann 发表于 2023-2-16 17:14:24

有其他的代码吗

赋闲在家 发表于 2023-2-16 17:55:07

leletatann 发表于 2023-2-16 17:14
有其他的代码吗

这是个很大的代码 这一部分其实和其他衔接的不多

ExiaGN001 发表于 2023-2-16 18:03:30

给一下上下文吧,不然不好判断

两手空空儿 发表于 2023-2-16 18:13:32

本帖最后由 两手空空儿 于 2023-2-16 18:15 编辑

赋闲在家 发表于 2023-2-16 17:55
这是个很大的代码 这一部分其实和其他衔接的不多

就算是代码独立,逻辑也不是独立的,它可能是以512个byte为单位增加容量,就像是vector一样维护一个动态的内存

sfqxx 发表于 2023-2-16 18:54:55

不会,意思意思领个鱼币{:10_256:}

liuhongrun2022 发表于 2023-2-16 19:31:18

sfqxx 发表于 2023-2-16 18:54
不会,意思意思领个鱼币

中奖绝缘体又来领币了

sfqxx 发表于 2023-2-16 20:16:21

liuhongrun2022 发表于 2023-2-16 19:31
中奖绝缘体又来领币了

你……
。。

一点沙 发表于 2023-2-16 20:49:03

不会,单纯只为领币{:10_256:}{:10_256:}{:10_256:}

xtl2 发表于 2023-2-16 21:08:33

膜拜大佬,小白来薅个币

额外减小 发表于 2023-2-16 23:36:32

我想要币{:10_245:}

myd0313 发表于 2023-2-17 07:19:44

呵呵

zhangjinxuan 发表于 2023-2-17 07:20:40

myd0313 发表于 2023-2-17 07:19
呵呵

哈哈

wangyanren 发表于 2023-2-17 09:52:54

{:5_102:}

月末 发表于 2023-2-17 20:48:02

{:10_256:}

bluesky5210 发表于 2023-2-20 22:05:50

这是一个 C++ 类的成员函数 CPayloadGenerator::GenerateIncrementalData 的实现,用于生成增量数据。下面是对该函数的注释和解释:

c++
Copy code
#define PAYLOAD_COUNTER_OFFSET      4

VOID CPayloadGenerator::GenerateIncrementalData(PUCHAR a_pucBuffer, ULONG a_ulBytesToCopy)
{
    // a_pucBuffer:目标缓冲区指针
    // a_ulBytesToCopy:需要生成的字节数
    for (ULONG i=0, j=m_ucPayloadIncrementalLastCharUsed; i<a_ulBytesToCopy; )
    {
      // 每生成 512 字节的数据,添加 4 字节的数据头(用于记录生成的数据量)
      if (i%m_ulPayloadHeaderCounterInterval == PAYLOAD_COUNTER_OFFSET &&
            a_ulBytesToCopy >= i+m_ulPayloadHeaderCounterSize)
      {
            // 添加数据头
            AddDataHeader(a_pucBuffer+i);
            i+=m_ulPayloadHeaderCounterSize;
      }
      else
      {
            // 设置增量数据字符,取值为上一个字符加 1 取模 256
            a_pucBuffer = j%256;
            // 记录最后一个字符
            m_ucPayloadIncrementalLastCharUsed = a_pucBuffer;
            i++;
            j++;
      }
    }
}
函数的主要作用是生成增量数据,输入参数 a_pucBuffer 是目标缓冲区指针,a_ulBytesToCopy 是需要生成的字节数。在函数内部使用了两个计数器 i 和 j,分别表示当前已经生成的字节数和上一个增量字符的值。

对于每 512 字节的数据,函数会在生成的数据头部添加 4 字节的数据头。这个数据头用于记录已经生成的数据量。PAYLOAD_COUNTER_OFFSET 定义了数据头在每 512 字节数据中的偏移量。

对于非数据头部分,函数会根据上一个增量字符的值生成下一个字符。具体做法是将上一个增量字符的值加 1 后取模 256,得到的结果作为当前字符的值。函数还会记录下最后一个增量字符的值,以便下一次生成增量数据时使用。

需要注意的是,函数使用了一些类成员变量,例如 m_ulPayloadHeaderCounterInterval 和 m_ulPayloadHeaderCounterSize,这些变量可能在类的构造函数中进行初始化。此外,函数调用了 AddDataHeader 函数,但这个函数的实现并未在提供的代码中给出,因此需要从其他地方获得实现。

bluesky5210 发表于 2023-2-20 22:06:33

#define PAYLOAD_COUNTER_OFFSET      4

VOID CPayloadGenerator::GenerateIncrementalData(PUCHAR a_pucBuffer, ULONG a_ulBytesToCopy)
{
    // a_pucBuffer:目标缓冲区指针
    // a_ulBytesToCopy:需要生成的字节数
    for (ULONG i=0, j=m_ucPayloadIncrementalLastCharUsed; i<a_ulBytesToCopy; )
    {
      // 每生成 512 字节的数据,添加 4 字节的数据头(用于记录生成的数据量)
      if (i%m_ulPayloadHeaderCounterInterval == PAYLOAD_COUNTER_OFFSET &&
            a_ulBytesToCopy >= i+m_ulPayloadHeaderCounterSize)
      {
            // 添加数据头
            AddDataHeader(a_pucBuffer+i);
            i+=m_ulPayloadHeaderCounterSize;
      }
      else
      {
            // 设置增量数据字符,取值为上一个字符加 1 取模 256
            a_pucBuffer = j%256;
            // 记录最后一个字符
            m_ucPayloadIncrementalLastCharUsed = a_pucBuffer;
            i++;
            j++;
      }
    }
}
页: [1] 2
查看完整版本: 求大佬看一下这个代码