gpt4 book ai didi

c - 理解数组中的增量(v6++)[4] = v9;

转载 作者:行者123 更新时间:2023-12-04 08:18:03 25 4
gpt4 key购买 nike

我用 IDA 的十六进制射线反编译了一些 .elf 文件,它给了我什么:

signed int __fastcall SEC_calc_(unsigned int a1, unsigned int a2, _DWORD *a3)
{
char v30;
v3 = a1;
v4 = a2;
v6 = &v30;
int v7;
unsigned int v9;
unsigned int v8;
v7 = 0;
do
{
v8 = v4 >> v7;
v9 = v3 >> v7;
v7 += 8;
*v6 = v8;
(v6++)[4] = v9;
}
while ( v7 != 32 );
假使,假设
 a1 = 0xC9A6010C
a2 = 0xF1FFDFEF
我可以理解它正在将位向右移动并在每个循环中将移位值增加 8,直到 v7=32(意味着只有 4 个循环)。但什么是
*v6 = v8;
(v6++)[4] = v9;
*v6 = v8 是指针吗?所以 t 意味着 v30 也等于 v8 值?
我完全不明白
 (v6++)[4] = v9;
为什么它在 [4] 数组中递增?为什么它是用 v9 签名的?

最佳答案

*v6 = v8;
(v6++)[4] = v9;

*v6 = v8 is pointer right? so t means v30 will equal v8 value as well?

v6是指针,所以 *v6指定它指向的对象(在本例中为 v30)。因此,是的, *v6 = v8复制变量 v8 的当前值到变量 v30 .

I completely don't understand

 (v6++)[4] = v9;

why its an increment in the [4] array?

v6++计算为 v6 的当前值, 具有随后递增 v6 的副作用由一个。整个语句大致相当于这两个单独的语句:
 v6[4] = v9;
v6 = v6 + 1;
就其本身而言, v6[4]指定与 *v6 相同类型的对象出现在 *v6 之后的四个位置,就像 v6本身指定了一个至少有五个元素的数组。

And why it is signed with v9?

= v9部分是一个简单的任务。它分配变量 v9 的当前值到 (v6++)[4] 指定的对象.我必须更深入地研究代码才能假设函数执行该赋值的原因。

关于c - 理解数组中的增量(v6++)[4] = v9;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65617707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com