__int64 __fastcall D1(__int64 a1, __int64 a2) { int j; // [xsp+0h] [xbp-30h] int i; // [xsp+4h] [xbp-2Ch] _DWORD v5[4]; // [xsp+18h] [xbp-18h] BYREF __int64 v6; // [xsp+28h] [xbp-8h] v6 = *(_ReadStatusReg(ARM64_SYSREG(3, 3, 13, 0, 2)) + 40); for ( i = 0; i <= 3; ++i ) { for ( j = 0; j <= 3; ++j ) { *(&v5[i] + j) = *(a2 + 4LL * j) >> (8 * (3 - i)); *(a1 + 4LL * i + j) ^= *(&v5[i] + j); } } _ReadStatusReg(ARM64_SYSREG(3, 3, 13, 0, 2)); return 0LL; } 这段代码的功能是什么
时间: 2023-03-14 22:08:45 浏览: 405
v5 + j) = *(a1 + 4 * (3 * i + j)); }
__int64 result = *(v5 + 0) * *(a2 + 4 * 0) + *(v5 + 1) * *(a2 + 4 * 1) + *(v5 + 2) * *(a2 + 4 * 2) + *(v5 + 3) * *(a2 + 4 * 3);
return result;
}我不明白您的问题。
相关问题
__int64 __fastcall phase_2(__int64 a1) { int *v1; // rbx@4 int v3; // [sp+0h] [bp-38h]@1 int v4; // [sp+4h] [bp-34h]@2 __int64 v5; // [sp+10h] [bp-28h]@5 __int64 v6; // [sp+18h] [bp-20h]@1 v6 = *MK_FP(__FS__, 40LL); read_six_numbers(a1, &v3); if ( v3 || v4 != 1 ) explode_bomb(); v1 = &v3; do { if ( v1[2] != *v1 + v1[1] ) explode_bomb(); ++v1; } while ( (__int64 *)v1 != &v5 ); return *MK_FP(__FS__, 40LL) ^ v6; }
这段代码是一个炸弹解除的代码,需要输入6个数字作为密码。具体来说,代码首先读入6个数字,然后判断第一个数字是否为0,第二个数字是否为1,如果不是则引爆炸弹。接着,代码通过循环检查后面四个数字是否满足特定的条件,如果不满足则引爆炸弹。最后,代码返回一个计算结果,用于验证是否成功解除炸弹。具体的密码需要查看代码的其他部分来确定。
_BYTE *__fastcall sub_3AA5F0(_BYTE *result, unsigned __int8 *a2) { int v2; // w8 _BYTE *v3; // x8 unsigned __int8 *v4; // x9 int v5; // t1 v2 = *a2; *result = v2; if ( v2 ) { v3 = result + 1; v4 = a2 + 1; do { v5 = *v4++; *v3++ = v5; } while ( v5 ); } return result; } 转Python写法
def sub_3AA5F0(result, a2):
v2 = a2[0]
result[0] = v2
if v2 != 0:
i = 1
while a2[i] != 0:
result[i] = a2[i]
i += 1
return result
阅读全文