1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <windows.h>
    4. void func(DWORD** a1,DWORD** a2)
    5. {
    6. DWORD** v9; // [sp+68h] [-18h]
    7. DWORD** v10; // [sp+6Ch] [-14h]
    8. v9 = a1;
    9. v10 = a2;
    10. DWORD* v7=NULL;
    11. if (!v9 || *v9) // v9=a1为指针数组 参数一为指针数组,参数二为指针的指针
    12. {
    13. if (!v10 || *v10)
    14. {
    15. printf("hello world");
    16. }
    17. else
    18. {
    19. *v10 = v7;
    20. }
    21. }
    22. else
    23. {
    24. *v9 = v7;// 根据这个可知参数一a1传入的是一个指针数组的第一个元素的地址(数组的首地址),不然的话v9就代表
    25. }
    26. }
    27. int main(int argc, char* argv[])
    28. {
    29. DWORD* v7[7];
    30. DWORD* v6;
    31. v6 = 0;
    32. v7[0] = 0;
    33. func(v7, &v6);
    34. }