Hex-Rays将数组反编译为int

时间:2016-01-26 23:32:25

标签: c++ arrays dll decompiling

我使用Hex-Ray反编译了一个dll,但它将dll的数组类型输入参数反编译为int。知道如何处理这个??

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

int a1是dll中的数组类型

1 个答案:

答案 0 :(得分: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 * - &gt; int必须以a2和a3用于访问数组。为了正确投射,我使用了(uintptr_t)缓冲区