ECX is just a register any function can alter depending on the calling convention. I assume you're referring to __thiscall? Where the instance pointer is stored in ECX? Regardless, if you want every address that goes into ecx, then you'd need to patch every section you feel ECX has a relevant value and move it into your array. It won't just magically go into your variables. Assuming you've patched every section, now all that's left is the array. Well you can do it by storing an index at some address then using that as the offset.
Code:
push eax
mov eax,[indexpointer]
mov dword ptr[DEADBEEF+eax],ecx
inc eax
mov [indexpointer],eax
pop eax
Something simple like that.