So, Account A has Tokens that I want to transfer out but whenever I transfer ETH to Account A it automatically transfer my ETH out to another address and I know you can't change private key, any idea how I can get my ERC-20 Token out from Account A? Really appreciate if someone can help me out
I think you are actually trying to withdraw a token that doesn't belong to you. I know there are some random guys posting private keys of a wallet containing some erc20 tokens and when you try to access and "steal" the tokens by sending eth for gas, the eth is automatically transfered to another wallet belonging to the scammers.
Your description implies that Account A is a contract. It would not be able to automatically do anything unless this was the case.
You cannot recover the tokens unless the contract has a function to accomplish it. That is, contracts can't do things they weren't designed to do, and they can't be patched.
There is an outside chance that the contract implements functionality to recover tokens stored there. For example, open-zeppelin's
CanReclaimTokens logic. In such a case, you would send a transaction to Account A instructing it to forward your tokens. If Account A was provided by an online service, it's possible they can help you, if they anticipated this scenario.
It might be a good exploration to disassemble the bytecode at Address A to see if there is a promising-looking function. If you can't find one, you're probably hooped. Unless there is a function to deal with this scenario, your tokens could be marooned in the contract.
Hope it helps.