I'm assuming that you are looking for a quick method to write all the terms that your product multiplies out to.

A nice pattern emerges if we write out the first few products $P(m)=\prod_{n=1}^{m}\left(a_n+b_n\right)$:

$$P(0)=1$$

$$P(1)=P(0)(a_1+b_1)=a_1+b_1$$

$$P(2)=P(1)(a_2+b_2)=a_1a_2+a_1b_2+b_1a_2+b_1b_2$$

$$P(3)=P(2)(a_3+b_3)=a_1a_2a_3+a_1a_2b_3+a_1b_2a_3+a_1b_2b_3+b_1a_2a_3+b_1a_2b_3+b_1b_2a_3+b_1b_2b_3$$

[...]

$$P(m)=P(m-1)(a_m+b_m),\;m>0$$

We can begin to notice that each term of the sum has $m$ factors and that there are $2^m$ terms in each $P(m)$. Even better, $a$ and $b$ look like they count through binary strings of length $m$ (!) This suggests that it will be extremely useful to impose an ordering on the terms and the factors in each term.

Using this ordering we can then write your product as

$$P(m)=\sum_{n=1}^{2^m}\prod_{k=1}^{m}x_{n,\;k}$$

where $x_{n,\;k}=a_k$ if the $k$th digit of the $n$th binary string of length $m$ is $0$ and $x_{n,\;k}=b_k$ if the $k$th digit of the $n$th binary string of length $m$ is $1$. (Here the first binary string of length $m$ is all zeros and we get to the next string of length $m$ by adding $1$ to the previous string.)

E.g. 1

$000$ is the first binary string of length $3$. We'd get to the second binary string of length $3$ by adding $1$ to $000$, so the second string of length $3$ is $001$, the third is $010$, etc. This is why I wrote $P(3)$ starting with $P(3)=a_1a_2a_3+a_1a_2b_3+a_1b_2a_3+\cdots$.

E.g. 2

For $P(7)$ the $6$th term in the sum would be

$$\prod_{k=1}^{7}x_{6,\;k}=a_1a_2a_3a_4b_5a_6b_7$$

because the $6$th binary string of length $7$ is $0000101$.

The internet is a $\sum^{\infty}_{n=0}$tube$_n$ filled with cats!