With `join` you could try like this:
join -t\* \
<(sed 's/\(.*\)\(\*\)\(.*\)/\3\2\1/' file1 | sort -t\* -k1,1) \
<(sed 's/\(.*\)\(\*\)\(.*\)/\3\2\1/' file2 | sort -t\* -k1,1)
The two `sed`s move the last field to the beginning of line, e.g.
field1*field2*...field(N-1)*field(N)
becomes
field(N)*field1*field2*...*field(N-1)
the results are then then `sort`ed on `1`st field and then `join`ed (always on `1`st field). This will print lines like:
field(N)*fields(1)to(N-1)*from*file1*fields(1)to(N-1)*from*file2
If you prefer working with temporary files and save `join` result to e.g. `outfile`:
sed 's/\(.*\)\(\*\)\(.*\)/\3\2\1/' file1 | sort -t\* -k1,1 > sorted_1
sed 's/\(.*\)\(\*\)\(.*\)/\3\2\1/' file2 | sort -t\* -k1,1 > sorted_2
join -t\* sorted_{1,2} > outfile
rm -f sorted_{1,2}