【发布时间】:2021-08-16 08:22:57
【问题描述】:
我在对这个汇编代码进行逆向工程以推断数组维度的值时遇到了困难。
给我
struct vec3 {
long z;
int x;
unsigned short y;
};
struct vec3 array1[2][A];
struct vec3 array2[8][B];
int arrayfunc(int i1, int j1, int i2, int j2){
return array1[i1][j1].x + array1[i1][j1].y - array2[i2][j2].y;
}
这是提供的 C 代码,成员数据 x,y,z 的类型未知,但这是我推断出来的。
arrayfunc:
leaq array1(%rip), %rax
movslq %ecx, %rcx
movslq %edx, %r10
movslq %r9d, %r9
leaq (%rcx,%rcx,2), %rdx
movslq %r8d, %r8
movq %rax, %rcx
addq %r10, %rdx
salq $4, %rdx
movzwl 12(%rax,%rdx), %eax
addl 8(%rcx,%rdx), %eax
leaq (%r9,%r8,2), %rdx
leaq array2(%rip), %rcx
salq $4, %rdx
movzwl 12(%rcx,%rdx), %edx
subl %edx, %eax
ret
这里的问题是我不确定如何从汇编代码中找到 A 和 B 的值。
我们总是感谢任何和所有的帮助:)
谢谢:))
【问题讨论】:
标签: arrays assembly x86 reverse-engineering gnu-assembler