Given two non-negative integers represented as strings `num1` and `num2`, return their product as a string. Do not use any built-in big-integer library to convert the whole inputs directly.