为了修复旧程序而进行反编译会很痛苦.
因为我是C#开发人员,所以我不明白有些奇怪的事情.我需要一个C++技巧专家来帮助我理解"memcpy()"的行为.
这是我玩的:
unsigned char sdata[] = { 0x54,
... many values (=4100) ...,
0x00 };
Run Code Online (Sandbox Code Playgroud)
然后
unsigned char BF_PTransformed[4*18] = { 0xC6,
... many values (=72) ...,
0x7B };
Run Code Online (Sandbox Code Playgroud)
和
struct BLOWFISH_CTX
{
unsigned long P[16 + 2];
unsigned long S[4][256];
};
Run Code Online (Sandbox Code Playgroud)
这是memcpy()电话:
void BFInit()
{
BLOWFISH_CTX* ctx = &this->BlowfishContext;
memcpy((void*)ctx->P, this->BF_PTransformed, 18*4);
memcpy((void*)ctx->S, (void*)this->sdata, 0x100*4*4);
}
Run Code Online (Sandbox Code Playgroud)
我不明白这是如何使用更高的字节数而不是数组目标长度.那是关于数据类型的吗?
有人可以解释它,以便C#开发人员可以理解吗?
(甚至不要提到Blowfish这个词.这个"特殊"实施的2天让我生病了)