Hex-Rays декомпилирует массив в int

Я декомпилировал одну dll, используя Hex-Ray, но он декомпилировал входной аргумент типа массива dll в int. Любая идея, как справиться с этим ??

double dzSell(int a1, double a2, int a3, int a4, int a5)

int a1 — тип массива в dll

0

Решение

Вот пример того, как Hex-Rays декомпилирует указатели

/* The computational routine */
extern "C" __declspec(dllexport) void myfun2 (double x, double *y, double *z, int n)
{
int i;
/* multiply each element y by x */
for (i=0; i<n; i++) {
z[i] = x * y[i];
}
}/*
int __cdecl myfun2(double a1, int a2, int a3, int a4)
{
int result; // eax@3
int i; // [sp+0h] [bp-4h]@1

for ( i = 0; i < a4; ++i )
{
*(double *)(a3 + 8 * i) = a1 * *(double *)(a2 + 8 * i);
result = i + 1;
}
return result;
}
*/

так что переменные указателя конвертируются в int, это означает, что приведение double * -> int должно быть выполнено, поскольку a2 и a3 используются для доступа к массиву Для правильного приведения я использовал (uintptr_t) буфер

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]