I found somebody that imported a paper wallet with 100BTC then used 2BTC BUT the other 98BTC were sent to a change address. Why and how can I prevent this; how can I enter a custom change address?
The standard client doesn't have any built-in options for this. You could manage it yourself if you built the transaction by the RPC API commands or, more easily, by using a client with that feature built in, like Armory:
Or, if you know what inputs will be used and the exact amounts involved, you can add the "change" yourself as an additional output. This will make it so the client won't need to generate any additional change back to itself. Remember to subtract a transaction fee, if necessary.